Lenny armelをUSBにインストールする。

ARMネイティブマシンとして持っているのはPalm Tungsten|T, Armadillo-J, Armadillo-9, Chumbyしか持っていないので、もちろん作業用の環境ではない。なので、QEMUを使ってUSBメモリにLennyをインストールしてみた。

QEMUをインストールしておく。

$ sudo aptitude install qemu

netboot用のイメージをダウンロードする。

lennyのRC2のイメージをダウンロードした。

空のUSBを挿す。

今回の環境では/dev/sdb

qemuでインストーラを起動させる。

$ qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.26-1-versatile -initrd initrd.gz -hda /dev/sdb -append "root=/dev/ram"
  • ‘-M’で指定するマシンタイプは、chumbyに搭載されているCPUに合わせた。
# cat /proc/cpuinfo
Processor       : ARM926EJ-Sid(wb) rev 4 (v5l)
(snip)
  • 指定できるマシンタイプは-Mオプションに引数を与えなければ表示される。
$ qemu-system-arm -M
Supported machines are:
integratorcp ARM Integrator/CP (ARM926EJ-S) (default)
versatilepb ARM Versatile/PB (ARM926EJ-S)
versatileab ARM Versatile/AB (ARM926EJ-S)
realview   ARM RealView Emulation Baseboard (ARM926EJ-S)
akita      Akita PDA (PXA270)
spitz      Spitz PDA (PXA270)
borzoi     Borzoi PDA (PXA270)
terrier    Terrier PDA (PXA270)
cheetah    Palm Tungsten|E aka. Cheetah PDA (OMAP310)
lm3s811evb Stellaris LM3S811EVB
lm3s6965evb Stellaris LM3S6965EVB
connex     Gumstix Connex (PXA255)
verdex     Gumstix Verdex (PXA270)
mainstone  Mainstone II (PXA27x)

後は普通にDebianのインストール。

  • QEMUプロセスの中では、-hda /dev/sdbで指定したUSBメモリは、/dev/sdaとして認識されるので勘違いしないように。
  • 今回swap領域は用意しない。
  • ファイルシステムはext2とした。

やってみて不思議だったのは、qemuは一般ユーザで起動したのにも関わらず、USBメモリ(/dev/sdb)に書き込みができたこと。fstabのマウントオプションにはuserを付けているものの、別にマウントされているわけでもないのにな。この辺はqemu-ioを使っているKVMと同じと仮定すれば納得できるか。

ブート。

が、このままブートさせても、Netbootのインストール用のinitrdしかないので、インストールにしかならない。とりあえずそのまま一度起動させ、shellモードで、usbのファイルシステムをマウント、chrootし、/boot以下のinitrd.imgをssh経由で別サーバにscpして、ホストOSのローカルにまで持ってきた。

qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.26-1-versatile -initrd initrd.img-2.6.26-1-versatile -hda /dev/sdb -append "root=/dev/sda1"

起動したらこんな感じ。 [1]

../../../_images/20090214013422.png
[1]ホスト名がchumbyとなっているけど、chumbyじゃないので要注意。