分类: LINUX
2010-01-27 14:21:29
1.
Install debian (testing/lenny) with qemu-system-mipsel/malta.
qemu-img create -f qcow2 debian-mipsel.img 1G
lftp -c mirror ftp://ftp.fi.debian.org/debian/dists/testing/main/installer-mipsel/current/images/malta/netboot/
cd netboot
sudo qemu-system-mipsel -kernel
vmlinux-2.6.26-1-4kc-malta -initrd initrd.gz -append 'console=ttyS0'
-nographic -serial stdio -net nic -net tap -hda
/path/to/debian-mipsel.img
Fellow the standard debian
installation process and finish install debian (standard system) to
debian-mipsel.img.
Note: Qemu emulation for architecture different
from the host side is very slow, be patient during the installation.
this maybe take more than 1 hrs depending on the host's hardware
configuration.
2. Reboot to the debian-mipsel system we installed right now, rsyncing the entire file system if neccessary (in case of nfsroot). Before that, we'd better to build our own kernel. the qemu simulates MIPS MALTA board with the following hardware:
The Malta emulation supports the following devices:
* - Core board
with MIPS 24Kf CPU and Galileo system controller
* - PIIX4
PCI/USB/SMbus controller
* - The Multi-I/O chip's serial device
* - PCnet32 PCI network card
* - Malta FPGA serial device
* - Cirrus VGA graphics card
compile kernel for mips malta board:
cd linux-2.6
make ARCH=mips malta_defconfig
Tune the defconfig if needed:
make ARCH=mips menuconfig
make ARCH=mips CROSS_COMPILE=mipsel-unknown-linux-gnu- -j3
After we have own own kernel, we could use this kernel to boot with our filesystem we installed right now:
sudo qemu-system-mipsel -kernel vmlinux -append 'root=/dev/hda1 ro console=ttyS0' -nographic -serial stdio -net nic -net tap -hda /path/to/debian-mipsel.img -boot c
Login into the new system, prepare to exports our filesystem using rsync:
aptitude update
aptitude install rsync
Since the `/' filesystem contains some virtual filesystem like /dev, /proc, /sys, we must avoid syncing these directory, and the simplest way I know is:
Mount the root filesystem to other directory:
mount /dev/hda1 /mnt
Mount other directory like /boot to the new mounted root (/mnt) if neccessary.
On a other machine, assume it's IP address is :
sudo mkdir -p /exports/nfs/diskless/debian-mipsel # on 192.168.2.104, choose a directory you prefer.
On our Qemu target:
cd /mnt
rsync -av *
root@192.168.2.104:/exports/nfs/diskless/debian-mipsel/ # sync the
entire filesystem to the remote machine.
Note 1: We use qemu to
`cheat' for a filesystem installed with debian, in a simular way we
could also have a rootfs for other architecture.
Note 2: Other than
Debian, gentoo stage3 is also a good choice, and you don't have to
install (with qemu-system-xxx), but surely you don't want to `emerge' in
a qemu simluated target system ;-)
Note 3: If you have a debian
host environment, the simplest way to install a rootfs might be use
debootstrap, you can also debootstrap a filesystem for other
architecture, please refer to `man debootstrap' for details.
3.
Using Qemu/MALTA with nfsroot. Before that we have to modify the
something in the nfsroot filesystem, ie:
cd /exports/nfs/diskless/debian-mipsel
vim etc/fstab
# comment stuff like /dev/hda1 etc..
vim etc/inittab
# comment tty* since we don't use any tty and uncomment
ttyS0 and use a proper bitrate because our terminal is on ttyS0
cd /path/to/linux-2.6
sudo qemu-system-mipsel -kernel vmlinux
-append 'root=/dev/nfs rw
nfsroot=192.168.2.104:/exports/nfs/diskless/debian-mipsel ip=dhcp
console=ttyS0' -nographic -serial stdio -net nic -net tap