Changeset 878


Ignore:
Timestamp:
Dec 19, 2016, 2:57:24 PM (3 years ago)
Author:
amain
Message:

qemu: fix small issue, added some robuustness, added kernel modules

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/debian/rootfs

    • Property svn:ignore
      •  

        old new  
        88bootstrap
        99second-stage-qemu
         10copy-debwrt-packages
         11debootstrap-download
         12download-debwrt-packages-lists
         13post-setup-emulated
         14prepare-debwrt-packages
         15second-stage
         16verify
  • trunk/qemu/qemu.mk

    r877 r878  
    4242        @if [ "$(QROOTFS)" = "" -a "$(QENDIAN)" = "" -a "$(QSESSION)" = "" ]; \
    4343        then \
    44             echo "usage: make qemu/add QSESSION=<name> [QENDIAN=be|le] [QROOTFS=<drelease>|current]"; \
     44            echo "usage: make qemu/add QSESSION=<name> [QENDIAN=be|le] [QROOTFS=<drelease>|current]" [QKERNEL=latest|current]; \
    4545            echo ""; \
    4646            echo "name    : session name"; \
    47             echo "be      : big endian Malta (default)"; \
    48             echo "le      : little endian Malta"; \
    49             echo "current : use rootfs from build/ dir"; \
     47            echo "be      : big endian Malta"; \
     48            echo "le      : little endian Malta (default)"; \
     49            echo "current : use rootfs/kernel from build/ dir [TODO]"; \
    5050            echo "drelease: download/use latest <drelease> snapshot rootfs"; \
    5151            echo "          (sid|stretch|jessie(default)|wheezy)"; \
     52            echo "latest  : download/use latest snapshot Malta kernal (default)"; \
    5253            echo ""; \
    5354            echo "Example: 1. make qemu/set QSESSION=test1 QENDIAN=be QROOTFS=jessie"; \
     
    6364            exit 1; \
    6465        fi
     66        @if [ -d $(TMP_DIR)/qemu/$(QSESSION) ]; \
     67         then \
     68             echo "Session $(QSESSION) already exists"; \
     69             exit 1; \
     70         fi
    6571        @mkdir -p $(TMP_DIR)/qemu/$(QSESSION)
    66         @echo $(QSESSION) >$(TMP_DIR)/qemu/session
    67         @QENDIAN=$${QENDIAN:-be}    ; echo $${QENDIAN} >$(TMP_DIR)/qemu/$(QSESSION)/endian
     72        @if [ ! -e $(TMP_DIR)/qemu/session ]; \
     73         then \
     74             echo $(QSESSION) >$(TMP_DIR)/qemu/session; \
     75         fi
     76        @QENDIAN=$${QENDIAN:-le}    ; echo $${QENDIAN} >$(TMP_DIR)/qemu/$(QSESSION)/endian
    6877        @QROOTFS=$${QROOTFS:-jessie}; echo $${QROOTFS} >$(TMP_DIR)/qemu/$(QSESSION)/rootfs
     78
     79qemu/check:
     80        @if [ "$(_QSESSION)" = "" ]; \
     81        then \
     82            echo "usage: make [tartget] QSESSION=<name>"; \
     83            exit 1; \
     84        elif [ ! -d $(TMP_DIR)/qemu/$(_QSESSION) ]; \
     85        then \
     86            echo "Session does not exist: $(_QSESSION)"; \
     87            exit 1; \
     88        fi
    6989
    7090qemu/set qset:
    7191        @if [ "$(QSESSION)" = "" ]; \
    7292        then \
    73             echo "usage: make qemu/set QSESSION=<name>"; \
     93            echo "usage: make qemu/set|qset QSESSION=<name>"; \
    7494            exit 1; \
    7595        elif [ ! -d $(TMP_DIR)/qemu/$(QSESSION) ]; \
     
    80100        @echo $(QSESSION) >$(TMP_DIR)/qemu/session
    81101
    82 qemu/remove qrm:
    83         @if [ "$(QSESSION)" = "" ]; \
    84         then \
    85             echo "usage: make qemu/remove QSESSION=<name>"; \
    86             exit 1; \
    87         elif [ ! -d $(TMP_DIR)/qemu/$(QSESSION) ]; \
    88         then \
    89             echo "Session does not exist: $(QSESSION)"; \
    90             exit 1; \
    91         fi
    92         sudo rm -rf $(TMP_DIR)/qemu/$(QSESSION)
     102qemu/remove qrm: qemu/check
     103        sudo rm -rf $(TMP_DIR)/qemu/$(_QSESSION)
     104        @if [ -f $(TMP_DIR)/qemu/session -a "$$(cat $(TMP_DIR)/qemu/session)" = "$(_QSESSION)" ]; \
     105         then \
     106             rm -f $(TMP_DIR)/qemu/session; \
     107             find $(TMP_DIR)/qemu \
     108                  -mindepth 1 \
     109                  -maxdepth 1 \
     110                  -type d \
     111                  -printf "%f\n" 2>/dev/null \
     112               | sort \
     113               | head -1 \
     114               | while read dir; \
     115                 do \
     116                     echo "$${dir}" >$(TMP_DIR)/qemu/session; \
     117                 done; \
     118         fi
     119
     120qemu/remove-all qrmall: qemu/check
     121        sudo rm -rf $(TMP_DIR)/qemu/*
    93122
    94123qemu/list qls:
     
    125154        wget -qO $(TMP_DIR)/qemu/$(_QSESSION)/vmlinux.elf "http://downloads.debwrt.net/firmware/snapshots/$(_QARCH)/malta/$(_QENDIAN)/debwrt-firmware-malta-$(_QENDIAN)-vmlinux.elf?direct=1"
    126155
     156$(TMP_DIR)/qemu/$(_QSESSION)/modules.tar.gz:
     157        wget -qO $(TMP_DIR)/qemu/$(_QSESSION)/modules.tar.gz "http://downloads.debwrt.net/firmware/snapshots/mips/malta/be/debwrt-modules-mips-malta-be-4.4.7-trunk.tar.gz?direct=1"
     158
    127159$(TMP_DIR)/qemu/$(_QSESSION)/image.bz2:
    128160        mkdir -p $(TMP_DIR)/qemu/$(_QSESSION)
    129         wget -qO $(TMP_DIR)/qemu/$(_QSESSION)/image.bz2 "http://downloads.debwrt.net/rootfs/snapshots/$(_QARCH)/jessie/debwrt-rootfs-$(_QROOTFS)-$(_QARCH)-trunk.tar.bz2?direct=1"
    130 
    131 $(TMP_DIR)/qemu/$(_QSESSION)/hda.img: | $(TMP_DIR)/qemu/$(_QSESSION)/image.bz2 /usr/bin/pv /sbin/kpartx
     161        wget -qO $(TMP_DIR)/qemu/$(_QSESSION)/image.bz2 "http://downloads.debwrt.net/rootfs/snapshots/$(_QARCH)/$(_QROOTFS)/debwrt-rootfs-$(_QROOTFS)-$(_QARCH)-trunk.tar.bz2?direct=1"
     162
     163$(TMP_DIR)/qemu/$(_QSESSION)/hda.img: | qemu/check $(TMP_DIR)/qemu/$(_QSESSION)/image.bz2 $(TMP_DIR)/qemu/$(_QSESSION)/modules.tar.gz /usr/bin/pv /sbin/kpartx
    132164        mkdir -p $(TMP_DIR)/qemu/$(_QSESSION)/mnt
    133         qemu-img create $(TMP_DIR)/qemu/$(_QSESSION)/_hda.img 10G
    134         /sbin/sfdisk $(TMP_DIR)/qemu/$(_QSESSION)/_hda.img <qemu/hda.sfdisk
     165        qemu-img create $(TMP_DIR)/qemu/$(_QSESSION)/_hda.img 2G
     166        /sbin/sfdisk -q $(TMP_DIR)/qemu/$(_QSESSION)/_hda.img <qemu/hda.sfdisk >/dev/null
    135167        @sudo /sbin/kpartx -asv $(TMP_DIR)/qemu/$(_QSESSION)/_hda.img \
    136168          | while read line; \
     
    140172                if [ "$${n}" = "" ]; \
    141173                then \
    142                     sudo mkfs.ext4 /dev/mapper/$${part}; \
     174                    sudo mkfs.ext3 /dev/mapper/$${part}; \
    143175                    sudo mount /dev/mapper/$${part} $(TMP_DIR)/qemu/$(_QSESSION)/mnt; \
    144176                    echo "Extracting DebWrt $(_QROOTFS)...."; \
    145177                    pv $(TMP_DIR)/qemu/$(_QSESSION)/image.bz2 \
    146178                     | sudo tar xjf - \
     179                                -C $(TMP_DIR)/qemu/$(_QSESSION)/mnt; \
     180                    echo "Extracting DebWrt kernel modules...."; \
     181                    pv $(TMP_DIR)/qemu/$(_QSESSION)/modules.tar.gz \
     182                     | sudo tar xzf - \
    147183                                -C $(TMP_DIR)/qemu/$(_QSESSION)/mnt; \
    148184                    sudo cp qemu/interfaces \
     
    153189                else \
    154190                    sudo mkswap /dev/mapper/$${part}; \
     191                    echo "Wait for swap creation to complete...."; \
     192                    sleep 4; \
    155193                fi; \
    156194            done; \
     
    162200
    163201qemu/run qrun: | qemu/prepare
    164         if [ ! -d $(TMP_DIR)/qemu/$(QSESSION) ]; \
    165             echo "Session does not exist: $(QSESSION)"; \
    166             exit 1; \
    167         fi
    168202        qemu-system-$(_QARCH) \
    169203           -M malta \
  • trunk/rules/help.txt

    r877 r878  
    8686qemu/add QSESSION=<ses> ...      : Add a qemu session (see qemu/add for more help)
    8787qemu/remove QSESSION=<ses> ...   : Remove a qemu session
     88qemu/remove-all                  : Remove all qemu sessions
    8889qemu/list                        : List qemu sessions
    8990qemu/set QSESSION=<ses>          : Set new default session
     
    9192qadd                             : Shortcut for qemu/add
    9293qrm                              : Shortcut for qemu/remove
     94qrmall                           : Shortcut for qemu/remove-all
    9395qprep                            : Shortcut for qemu/prepare
    9496qls                              : Shortcut for qemu/list
Note: See TracChangeset for help on using the changeset viewer.