Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
(hey, sorry for the mess, but I need to release!) # «.simple-test» (to "simple-test") # «.qemu-debian-br-cdd» (to "qemu-debian-br-cdd") # «.create-hd-image» (to "create-hd-image") # «.linux.img-to-sarge.hdimg» (to "linux.img-to-sarge.hdimg") # «.swap-files» (to "swap-files") # «.patch-linux-qemu-fast» (to "patch-linux-qemu-fast") # «.rom-bug» (to "rom-bug") # «.tun-tap» (to "tun-tap") # «.fake-qemu-ifup» (to "fake-qemu-ifup") # «.tomsrtbt» (to "tomsrtbt") # «.qemu-net» (to "qemu-net") # (find-zsh "acse -i qemu") # (find-dpkg-l "qemu") # (find-status "qemu") # (find-vldifile "qemu.list") # (find-udfile "qemu/") # (find-man "1 qemu") # (find-man "1 qemu" "-append") # (find-man "1 qemu-fast") # (find-man "1 qemu-i386") # (find-man "1 qemu-mkcow") # (find-udfile "qemu/README.Debian") # (find-udw3m "qemu/qemu-doc.html") # (find-udw3m "qemu/qemu-tech.html") ##### # # A simple test # 2004dec02 # ##### # «simple-test» (to ".simple-test") # http://fabrice.bellard.free.fr/qemu/linux-test-0.5.1.tar.gz #* # Unpack Fabrice Bellard's linux.img and bzImage-2.4.21 # umount /tmp/linux-test/linux rm -Rv /tmp/linux-test/ tar -C /tmp/ \ -xvzf $S/http/fabrice.bellard.free.fr/qemu/linux-test-0.5.1.tar.gz #* # The simplest test (needs X) # cd /tmp/linux-test/ qemu -m 64 -user-net \ -kernel bzImage-2.4.21 \ -append "root=/dev/hda" linux.img #* ##### # # Booting from an ISO of a Debian installation CD, installing on an HD image # 2004dec02 # ##### # From <http://mov.osiris.com.br/qemu.txt>: # qemu -cdrom /dev/cdrom -hda hd_virtual # qemu -cdrom /dev/cdrom -boot d hd_virtual # (find-man "1 qemu") # (find-man "1 qemu" "-boot") # # The text also suggests this, that I don't understand well: # echo 1024 > /proc/sys/dev/rtc/max-user-freq # (find-fline "/proc/sys/dev/rtc/") # (find-k24file "drivers/char/rtc.c") # (find-k24file "drivers/char/rtc.c" "max-user-freq") # (find-k24confvar "CONFIG_RTC") # «qemu-debian-br-cdd» (to ".qemu-debian-br-cdd") #* CDIMAGEDIR=$S/http/www.postgresql.org.br/~otavio/debian-br-cdd/1.0_pre4 CDIMAGE=$CDIMAGEDIR/sarge-i386-1.raw # Create an empty HD image as a sparse 1G file # python =(<<'%%%' image = open("/tmp/br-cdd.hdimg", "w") image.truncate(1024 * 1048576L) image.close() %%%) qemu -cdrom $CDIMAGE -hda /tmp/br-cdd.hdimg -boot d #* # Note: the emulated installation above took about 2 hours in my # 750MHz i586, and at some point it said that the installation was # finished and that the system would be rebooted (or something like # that); then it gave a progress bar with some last things that were # being done, and qemu (version 0.6.0) aborted with: # # (qemu) BIOS panic at rombios.c, line 1558 # # Saving that hdimg to ~/tmp: cp -v --sparse=always /tmp/br-cdd.hdimg ~/tmp/br-cdd.hdimg #* # (find-man "1 qemu-mkcow") # (find-man "1 qemu") # (find-sh "unhtml < /usr/share/doc/qemu/qemu-doc.html" "9000") cd /tmp/ qemu-mkcow -f br-cdd.hdimg br-cdd.cow CDIMAGEDIR=$S/http/www.postgresql.org.br/~otavio/debian-br-cdd/1.0_pre4 CDIMAGE=$CDIMAGEDIR/sarge-i386-1.raw qemu -cdrom $CDIMAGE -hda /tmp/br-cdd.cow -boot c #* Losing too many ticks! TSC cannot be used as a timesource. Possible reasons for this are: You're running with Speedstep, ##### # # Create and partition an HD image # 2004nov01 # ##### # «create-hd-image» (to ".create-hd-image") #* # Create a sparse 1G file and use it as a HD image # You'll need to be root for the mounts, umounts, and losetups umount /tmp/sarge/proc umount /tmp/sarge/dev/pts umount /tmp/sarge rmdir /tmp/sarge rm -v /tmp/sarge.hdimg # Create a sparse 1G file # python =(<<'%%%' image = open("/tmp/sarge.hdimg", 'w') image.truncate(1024 * 1048576L) image.close() %%%) # Partition it (create a single partition on it, as big as possible) # (find-man "fdisk") # # echo u:n:p:1:63:2097151:p:w:q: | tr : \\n > $EEG echo u:n:p:1:63::p:w:q: | tr : \\n > $EEG eeg fdisk /tmp/sarge.hdimg # (find-man "losetup") losetup -o $[63*512] /dev/loop7 /tmp/sarge.hdimg mke2fs -F /dev/loop7 losetup -d /dev/loop7 umount /tmp/sarge mkdir /tmp/sarge mount -o loop,offset=$[63*512] /tmp/sarge.hdimg /tmp/sarge #* ##### # # copy qemu's linux.img to sarge.hdimg # 2004nov01 # ##### # «linux.img-to-sarge.hdimg» (to ".linux.img-to-sarge.hdimg") #* umount /tmp/linux-test/linuximg rm -Rv /tmp/linux-test/ tar -C /tmp/ \ -xvzf $S/http/fabrice.bellard.free.fr/qemu/linux-test-0.5.1.tar.gz cd /tmp/linux-test/ #* cd /tmp/linux-test/ umount /tmp/linux-test/linuximg rm -Rv /tmp/linux-test/linuximg/ mkdir /tmp/linux-test/linuximg/ mount -o ro,loop /tmp/linux-test/linux.img /tmp/linux-test/linuximg/ cd /tmp/linux-test/linuximg/ #* cd /tmp/linux-test/linuximg/ && \ cp -av * /tmp/sarge/ #* ##### # # swap files for linux # 2004nov01 # ##### # «swap-files» (to ".swap-files") #* swapoff /tmp/swapfile rm -v /tmp/swapfile #* # (find-man "1 dd") # (find-man "8 mkswap") # (find-man "8 mkswap" "dd if=/dev/zero") dd bs=1M count=512 if=/dev/zero of=/tmp/swapfile chmod 600 /tmp/swapfile mkswap /tmp/swapfile swapon /tmp/swapfile cat /proc/swaps #* ##### # # patching the Linux kernel for qemu-fast # 2004dec02 # ##### # «patch-linux-qemu-fast» (to ".patch-linux-qemu-fast") # (find-udw3m "qemu/qemu-doc.html") # (find-sh "unhtml < /usr/share/doc/qemu/qemu-doc.html" "9000") # (find-k24file "include/asm/page.h" "#define __PAGE_OFFSET") # (find-k24file "include/asm/fixmap.h" "#define FIXADDR_TOP") # (find-k24file "arch/i386/vmlinux.lds" ". = 0x") # (find-angg ".zshrc" "mydiff") #* cd ~/bigsrc/kernel-source-2.4.26/ patch -p0 include/asm/page.h <<'%%%' 81c81 < #define __PAGE_OFFSET (0xC0000000) --- > #define __PAGE_OFFSET (0x90000000) %%% patch -p0 arch/i386/vmlinux.lds <<'%%%' 9c9 < . = 0xC0000000 + 0x100000; --- > . = 0x90000000 + 0x100000; %%% patch -p0 include/asm/fixmap.h <<'%%%' 104c104 < #define FIXADDR_TOP (0xffffe000UL) --- > #define FIXADDR_TOP (0xa7ffe000UL) %%% # Not tested #* ##### # # qemu bug # 2004dec23 # ##### # «rom-bug» (to ".rom-bug") # Bug: sarge's qemu doesn't work with the current (sarge's) bochs bioses. # Bug report: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=281202 # Currently installed versions: (find-dpkg-l) # Solution: download sid's versions of bochsbios and vgabios from # http://ftp.debian.org/debian/pool/main/b/bochs/ # and http://ftp.debian.org/debian/pool/main/v/vgabios/ # and install them by hand. #* cd $S/http/ftp.debian.org/debian/pool/main/ dpkg -i b/bochs/bochsbios_2.1.1+20041109-2_all.deb \ v/vgabios/vgabios_0.4c+20041014-1_all.deb #* ##### # # notes about TUN/TAP # 2004dec24 # ##### # «tun-tap» (to ".tun-tap") # (find-udw3m "qemu/qemu-doc.html") # (find-udw3m "qemu/qemu-doc.html" "Using tun/tap network interface") # (find-man "1 qemu") # (find-man "1 qemu" "-n script" "TUN/TAP") # (find-fline "/etc/qemu-ifup") # (find-k26confvar "CONFIG_TUN") # (find-k26docfile "networking/tuntap.txt") # (find-k26file ".files.chS.used") # (find-k26file "drivers/net/tun.c") # (find-k26file "drivers/net/tun.c" "tun_chr_ioctl") # (find-k26file "include/linux/if_tun.h") # (find-k26file "include/linux/if_tun.h" "TUNSETIFF") # Adjust the permissions: # (find-fline "/dev/net/") # Default: crw------- 1 root root 10, 200 Dec 23 13:15 tun # Edrx: crw-rw-rw- 1 root root 10, 200 Dec 23 13:15 tun # Default: (find-sh0 "sudo chmod 600 /dev/net/tun") # Edrx: (find-sh0 "sudo chmod 666 /dev/net/tun") ##### # # Making qemu use a fake qemu-ifup script to setup tun/tap # 2004dec24 # ##### # «fake-qemu-ifup» (to ".fake-qemu-ifup") # Contents of: (find-fline "/etc/qemu-ifup") #!/bin/sh sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1 #* # Unpack Fabrice Bellard's linux.img and bzImage-2.4.21 # umount /tmp/linux-test/linux rm -Rv /tmp/linux-test/ tar -C /tmp/ \ -xvzf $S/http/fabrice.bellard.free.fr/qemu/linux-test-0.5.1.tar.gz #* # Prepare a fake qemu-ifup script just to understand how the # real qemu-ifup is being called # cat > /tmp/my-qemu-ifup <<'%%%' #!/bin/sh # sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1 sudo /sbin/ifconfig $1 172.20.0.1 date >> /tmp/o echo - $0 $* >> /tmp/o %%% chmod 755 /tmp/my-qemu-ifup echo -n > /tmp/o chmod 666 /tmp/o #* # Invoke qemu using the fake qemu-ifup script # cd /tmp/linux-test/ qemu -m 64 -isa -n /tmp/my-qemu-ifup \ -monitor stdio \ -kernel bzImage-2.4.21 \ -append "root=/dev/hda" linux.img #* # Note: if (find-fline "/tmp/my-qemu-ifup") # has no real ifconfig command then while qemu is running we should be # able to do this in a shell: # sudo ifconfig tun0 172.20.0.1 # This is a good sign when gets said by qemu: # "Connected to host network interface: tun0" # This is a bad sign when said by the guest kernel: # "SIOCSIFADDR: No such device" # "eth0: unknown interface: No such device" # Sometimes the solution is to try with "-isa". # (find-man "1 qemu" "\n -isa") ##### # # tomsrtbt # 2004dec23 # ##### # «tomsrtbt» (to ".tomsrtbt") # http://www.tux.org/pub/distributions/tinylinux/tomsrtbt/tomsrtbt-2.0.103.tar.gz #* # Unpack the .tar.gz containg the 1.772 floppy image and other stuff # (code-c-d "tomsrtbt" "~/usrc/tomsrtbt-2.0.103/") # (find-tomsrtbtfile "") # (find-tomsrtbtfile "tomsrtbt.FAQ" "telnet telnetd") # (find-tomsrtbtfile "tomsrtbt.FAQ" "Virtually all 1.44 drives support 1.722") rm -Rv ~/usrc/tomsrtbt-2.0.103/ mkdir tar -C ~/usrc/ -xvzf \ $S/http/www.tux.org/pub/distributions/tinylinux/tomsrtbt/tomsrtbt-2.0.103.tar.gz #* # Mount the floppy image. # Where is the linux fs? It's not in a file, we'll need to dd it out... # (find-fline "/tmp/toms/") # (find-fline "/tmp/toms/rc.custom.gz") # (find-fline "/tmp/toms/settings.s") cd sudo umount /tmp/toms/ rm -Rv /tmp/toms/ mkdir /tmp/toms/ sudo mount -o ro,loop ~/usrc/tomsrtbt-2.0.103/tomsrtbt.raw /tmp/toms/ cd /tmp/toms/ #* # Save the files in /tmp/toms/ so that it will be easier to work with # them later. The sudo is needed because there is a 600 root:root file # (find-fline "/tmp/toms/") # (find-tomsrtbtfile "") cd /tmp/toms/ sudo tar -cvz * > ~/usrc/tomsrtbt-2.0.103/tomsrtbt.fs1.tar.gz #* # Test that the bz2bzImage is really a linux kernel image # The last lines are just to make qemu happy qemu -monitor stdio \ -kernel /tmp/toms/bz2bzImage \ -m 64 -isa -n /tmp/my-qemu-ifup \ -hda /tmp/linux-test/linux.img #* # Emulate booting from the tomsrtbt floopy cd ~/usrc/tomsrtbt-2.0.103/ qemu -m 64 -isa -n /etc/qemu-ifup \ -monitor stdio \ -fda tomsrtbt.raw #* # Extract the ramdisk image # Settings taken from: (find-tomsrtbtfile "settings.s" "#AUTO#") # NM=tomsrtbt PL=103 RZ=2380 RI=618 Z1=1682 OA=841 O1=867 O2=3443 Z2=1709 FR=53 # (find-tomsrtbtfile "") # (find-tomsrtbtfile "unpack.s" "skip=") # (find-tomsrtbtfile "settings.s" "RD=/dev/ram5") cd ~/usrc/tomsrtbt-2.0.103/ NU=/dev/null RAW=tomsrtbt.raw RD=tomsrtbt.fs2.raw # dd bs=1k if=$1 skip=$O1 2>$NU|dd count=$Z2 2>$NU|bzip2 -d 2>$NU >$RD dd bs=1k if=$RAW skip=$O1 2>$NU|dd count=$Z2 2>$NU|bzip2 -d 2>$NU >$RD #* # Mount tomsrtbt's ramdisk image cd ~/usrc/tomsrtbt-2.0.103/ sudo umount /tmp/tomsfs/ rm -Rv /tmp/tomsfs/ mkdir /tmp/tomsfs/ sudo mount -o loop tomsrtbt.fs2.raw /tmp/tomsfs cd /tmp/tomsfs/ #* # Pack the files from the ramdisk image for easier access later # (find-fline "/tmp/tomsfs/") # (find-tomsrtbtfile "") cd /tmp/tomsfs/ tar -cvzf ~/usrc/tomsrtbt-2.0.103/tomsrtbt.fs2.tar.gz * #* # Umount the images cd sudo umount /tmp/toms/ sudo umount /tmp/tomsfs/ #* ##### # # qemu from the upstream sources # 2004dec14 # ##### # http://fabrice.bellard.free.fr/qemu/ # http://fabrice.bellard.free.fr/qemu/qemu-0.6.1.tar.gz # http://packages.debian.org/src:qemu # http://ftp.debian.org/debian/pool/main/q/qemu/qemu_0.6.1-1.dsc #* rm -Rv ~/usrc/qemu-0.6.1/ tar -C ~/usrc/ -xvzf $S/http/fabrice.bellard.free.fr/qemu/qemu-0.6.1.tar.gz cd ~/usrc/qemu-0.6.1/ ./configure |& tee oc make |& tee om #* # (code-c-d "qemu" "~/usrc/qemu-0.6.1/") # (find-qemufile "") sh-2.05b# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.20.0.0 * 255.255.0.0 U 0 0 0 eth0 sh-2.05b# ping 10.0.2.2 connect: Network is unreachable sh-2.05b# sh-2.05b# ifconfig eth0 Link encap:Ethernet HWaddr 52:54:00:12:23:56 inet addr:172.20.0.2 Bcast:172.20.255.255 Mask:255.255.0.0 (...) sendkey w sendkey ctrl-a sendkey ctrl-e # not working in linux.img: sendkey ctrl-c ctrl-alt-1 and ctrl-alt-2 in # (find-fline "/tmp/tomsfs/") # (find-tomsrtbtfile "") # (find-tomsrtbtfile "buildit.s") # (find-fline "/tmp/toms/") # (find-fline "/tmp/toms/rc.custom.gz") # (find-fline "/tmp/toms/settings.s") cd /tmp/linux-test/ qemu -m 64 -isa -n /tmp/my-qemu-ifup \ -monitor stdio \ -kernel /tmp/toms/bz2bzImage \ -append "root=/dev/hda" linux.img cd ~/usrc/tomsrtbt-2.0.103/ qemu -m 64 -isa -n /tmp/my-qemu-ifup \ -monitor stdio \ -fda tomsrtbt.raw kernel /tmp/toms/bz2bzImage \ -append "root=/dev/hda" linux.img # (find-htetfile "Ethernet-HOWTO.gz") # (find-man "1 qemu" "-append") # (find-udfile "qemu/README.Debian") ##### # # Talking to a qemu'ed system through the emulated ethernet # 2004dec23 # ##### # «qemu-net» (to ".qemu-net") # (find-man "1 qemu") # (find-man "1 qemu" "\n -n script") # (find-man "1 qemu" "\n -redir") # (find-man "1 qemu" "\n -dummy-net") # (find-man "1 qemu" "-append") # (find-udfile "qemu/README.Debian") # (find-udw3m "qemu/qemu-doc.html") # (find-udw3m "qemu/qemu-doc.html" "`-monitor dev'") # (find-udw3m "qemu/qemu-tech.html") # (find-fline "/etc/qemu-ifup") # Local Variables: # coding: raw-text-unix # ee-delimiter-hash: "\n#*\n" # ee-anchor-format: "«%s»" # End: