Pyon's Diary
2007-07-22 舊 平成拾玖年水無月玖日 (日・曇) [長年日記]
KURO-BOX/PRO (其乃廿參) Debian (etch) を入れる。
※以前(2007/07/22)に書いたインストール記録は内容が良く無かつたので、 2007/07/30 に全面的に書き直した。
目標。
他の解説頁では、3.5 吋の SATA を貳臺用意して内臟 HDD に開發環境を構築し、外附 HDD に Debian GNU/Linux を入れてから HDD を付け替へてゐるが、家には餘分な SATA HDD は無いので、外附 HDD に開發環境を構築し、内臟 HDD に Debian GNU/Linux を入れる事にした。
亦、他の解説頁では後の事を考へて、パーティション構成・容量は變更せず、初期化スイッチ一發で Debian GNU/Linux 化が完了する樣にキット化してゐるが、シリアルコンソール接続キット(SCON-KIT/PRO)が在る以上、どうとでも成るので此處では後の事は考へずパーティションの構成は變へ無いが容量は自分の好きな樣にする事にした。
インストールの參考にした頁。
- 玄箱 PRO の Debian Etch 化の手順 -- 全般的に參考にした。
- LinkStation / 玄箱 / debootstrap -- PukiWiki -- 初期設定の箇所を參考にした。
- Ellinikonblue.com PukiWiki -- Debian 玄箱 Pro にする -- 玄箱固有の設定の箇所を參考にした。
インストールに使用した機材。
- KURO-BOX/PRO (玄箱 PRO 本體)
- SCON-KIT/PRO (シリアルコンソール接續キット)
- HDS721680PLA380 (Deskstar 7K160) (3.5吋 SATA HDD、内臟)
- MHT2020AT (2.5吋 IDE HDD、USB 外附)
- MX6924j (母艦、WinXP SP2, Gentoo on VMwareServer 1.0.3)
- WZR-HP-G54/P (無線 LAN ルータ)
夫々の機材は以下の樣に繋いで在る。
- KURO-BOX/PRO と母艦は SCON-KIT/PRO で接續。
- KURO-BOX/PRO と無線 LAN ルータは有線で接續。
- 母艦と無線 LAN ルータは無線で接続。
- 無線 LAN ルータから KURO-BOX/PRO 及び母艦には固定 IP アドレスを拂ひ出す樣に設定して置く。
- HDS721680PLA380 は KURO-BOX/PRO に内臟する(/dev/sda として認識される)。
- MHT2020AT は USB 經由で外付けする(/dev/sdb として認識される)。
インストールに使用したソフトウェア。
玄箱 PRO に附屬のソフトウェア。
- uImage.buffalo (HDD 起動環境用のカーネル・イメージ)
- hddrootfs.tar.gz (開發環境一式)
自分で用意したソフトウェア。
- http://ftp.debian.org/debian/pool/main/m/makedev/makedev_2.3.1.orig.tar.gz
- http://ftp.debian.org/debian/pool/main/m/makedev/makedev_2.3.1-83.diff.gz
- http://ftp.gnu.org/gnu/patch/patch-2.5.4.tar.gz
- http://ftp.gnu.org/gnu/wget/wget-1.10.2.tar.gz
- http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_0.3.3.3.tar.gz
インストールの概略。
インストールは以下の手順で行つた。
- Flash で起動。
- 内臟 HDD、外附 HDD にパーティションを切る。
- 作成したパーティションにファイルシステムを構築する。
- インストールし易い樣にマウントする。
- インストール作業に必要なソフトウェアを SMB 經由で内臟 HDD (/dev/sda4)に移す。
- 内臟 HDD から外附 HDD にソフトウェアを移す。
- 外附 HDD に開發環境を解凍・展開する。
- 開發環境に chroot する。
- インストール作業に必要なソフトウェアをコンパイルする。
- debootstrap をコンパイルする。
- debootstrap を實行する。
- カーネル・イメージを /dev/sda1 に複寫する。
- カーネル・モジュールのディレクトリを複寫する。
- Debian GNU/Linux 環境に chroot する。
- apt の設定、ホスト名、ホストファイル、ネットワークの設定を行ふ。
- apt-get update, apt-get upgrade を實行する。
- fstab の設定を行ふ。
- シリアルコンソールからログイン出來る設定を行う。
- システム時刻を「UTC=no」に設定する。
- タイムゾーンの設定を行ふ。
- halt の設定を行ふ。
- root のパスワードを設定する。
- 一般ユーザを作る。
- OpenSSH を入れる。
- Flash 起動環境に戻り作業コピーを取る。
- /dev/ttyS0, /dev/ttyS1 を作成する。
- HDD 起動にする爲に U-Boot 環境變數を変更する。
- 再起動して Debian GNU/Linux が立ち上がれば完了。
Flash 起動環境で起動する。
2007/06/18 の日記に在る通り、起動途中で U-Boot の環境變數を變更して Flash 起動環境で起動する。
(前略) hit any key to switch tftp boot. Hit any key to stop autoboot: 0 <<system_bootend>> Hit any key to stop autoboot: 0 Marvell>> setenv bootargs_root root=/dev/mtdblock2 rw panic=5 Marvell>> setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver) Marvell>> setenv bootcmd 'nboot $(default_kernel_addr) 0 $(nand_uImage_offset) ; setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver); bootm $(default_kernel_addr)' Marvell>> setenv nand_boot yes Marvell>> saveenv Saving Environment to Flash... . Un-Protected 1 sectors Erasing Flash... . Erased 1 sectors Writing to Flash... done . Protected 1 sectors Marvell>> boot (以降略)
内臟 HDD、外附 HDD のパーティションを切る。
最初に外附 HDD、内臟 HDD の既存のパーティションを全て削除する。/dev/sda のパーティションを削除する前に /dev/sdaX が既にマウントされてゐ無いかを確認して、マウントされてゐたらアンマウントする事。
~ # fdisk /dev/sdb ~ # fdisk /dev/sda
此だけだとパーティション情報が完全には削除されてゐ無いので、先頭から 5GB を「0」で埋める。
~ # dd if=/dev/zero of=/dev/sdb bs=1048576 count=5120 5120+0 records in 5120+0 records out ~ # dd if=/dev/zero of=/dev/sda bs=1048576 count=5120 5120+0 records in 5120+0 records out
先づ外附 HDD のパーティションを切る。此方は初期化釦を押した時と同じ切り方をする。
~ # fdisk /dev/sdb < /usr/local/bin/PatitionDefinition Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous (中略) sdb: assuming drive cache: write through sdb: sdb1 sdb2 sdb3 sdb4 Syncing disks.
外附 HDD (/dev/sdb) の各パーティションの容量は以下の通り。
/dev/sdb1 49MB /dev/sdb2 2862MB /dev/sdb3 123MB /dev/sdb4 16043MB
次に内臟 HDD のパーティションを以下の容量で作成する。
/dev/sda1 128MB /dev/sda2 5120MB /dev/sda3 1024MB /dev/sda4 72245MB
構成を變へ無いのは Flash 起動環境で Samba を動かした時に、/dev/sda4 が共有ディレクトリとして決め打ちされてゐる爲。
~ # fdisk /dev/sda
作成したパーティションにファイルシステムを構築する。
パーティションの作成がをはつたので次にファイルシステムを構築する。最初は外附 HDD から構築する。各パーティション上で構築するファイルシステムは以下の通り。
/dev/sdb1 ext3 /dev/sdb2 xfs /dev/sdb3 swap /dev/sdb4 xfs
順に構築して行く。
~ # mkfs.ext3 /dev/sdb1
mke2fs 1.27 (8-Mar-2002)
Filesystem label=
OS type: Linux
(途中省略)
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
~ # mkfs.xfs /dev/sdb2 -f
meta-data=/dev/sdb2 isize=256 agcount=8, agsize=91584 blks
= sectsz=512
(途中省略)
= sectsz=512 sunit=0 blks
realtime =none extsz=65536 blocks=0, rtextents=0
~ # mkfs.xfs /dev/sdb4 -f
meta-data=/dev/sdb4 isize=256 agcount=16, agsize=262144 blks
= sectsz=512
(途中省略)
= sectsz=512 sunit=0 blks
realtime =none extsz=65536 blocks=0, rtextents=0
~ # mkswap /dev/sdb3
Setting up swapspace version 1, size = 128970752 bytes
外附 HDD にファイルシステムを構築し終はつたら、次は内臟 HDD のパーティションにファイルシステムを構築する。各パーティションに構築するファイルシステムは外附 HDD と同樣。
/dev/sda1 ext3 /dev/sda2 xfs /dev/sda3 swap /dev/sda4 xfs
此方も順に構築して行く。
~ # mkfs.ext3 /dev/sda1
mke2fs 1.27 (8-Mar-2002)
Filesystem label=
OS type: Linux
(途中省略)
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
~ # mkfs.xfs /dev/sda2 -f
meta-data=/dev/sda2 isize=256 agcount=8, agsize=91872 blks
= sectsz=512
(途中省略)
= sectsz=512 sunit=0 blks
realtime =none extsz=65536 blocks=0, rtextents=0
~ # mkfs.xfs /dev/sda4 -f
meta-data=/dev/sda4 isize=256 agcount=19, agsize=1048576 blks
= sectsz=512
(途中省略)
= sectsz=512 sunit=0 blks
realtime =none extsz=65536 blocks=0, rtextents=0
~ # mkswap /dev/sda3
Setting up swapspace version 1, size = 139825152 bytes
此でファイルシステムの構築は終了。次は各パーティションをマウントする。
インストールしやすい樣にマウントする。
各パーティションを以下の方針でマウントする。
- 後でファイルの受け渡しに使用するので /dev/sda4 を /mnt/disk1 にマウントする。
- 開發環境を展開する /dev/sdb2 を /mnt/usbdisk1 にマウントする。
- Debian GNU/Linux を構築する爲に /mnt/usbdisk1/debian を作成する。
- /dev/sda2 を /mnt/usbdisk1/debian にマウントする。
- /mnt/usbdisk1/debian/boot を作成して /dev/sda1 をマウントする。
- /mnt/usbdisk1/debian/home を作成して /dev/sda4 をマウントする。
以上を順に行ふ。
~ # mount /dev/sda4 /mnt/disk1 XFS mounting filesystem sda4 ~ # mount /dev/sdb2 /mnt/usbdisk1 XFS mounting filesystem sdb2 ~ # mkdir -p /mnt/usbdisk1/debian ~ # mount /dev/sda2 /mnt/usbdisk1/debian XFS mounting filesystem sda2 ~ # mkdir -p /mnt/usbdisk1/debian/boot ~ # mount /dev/sda1 /mnt/usbdisk1/debian/boot kjournald starting. Commit interval 5 seconds EXT3 FS on sda1, internal journal EXT3-fs: mounted filesystem with ordered data mode. ~ # mkdir -p /mnt/usbdisk1/debian/home ~ # mount /dev/sda4 /mnt/usbdisk1/debian/home
結果は以下の樣に成る。
~ # mount | sort /dev/mtd3 on /mnt/mtd type jffs2 (rw,noatime) /dev/ram1 on /mnt/ram type tmpfs (rw) /dev/root on / type jffs2 (rw,noatime) /dev/sda1 on /mnt/usbdisk1/debian/boot type ext3 (rw) /dev/sda2 on /mnt/usbdisk1/debian type xfs (rw) /dev/sda4 on /mnt/disk1 type xfs (rw) /dev/sda4 on /mnt/usbdisk1/debian/home type xfs (rw) /dev/sdb2 on /mnt/usbdisk1 type xfs (rw) devpts on /dev/pts type devpts (rw) proc on /proc type proc (rw,nodiratime) sysfs on /sys type sysfs (rw) usbfs on /proc/bus/usb type usbfs (rw)
次はインストールに必要なファイルをダウンロードする。
インストール作業に必要なソフトウェアを SMB 經由で内臟 HDD (/dev/sda4)に移す。
先づはインストール作業に必要な以下のソフトウェアを母艦にダウンロードする。
- http://ftp.debian.org/debian/pool/main/m/makedev/makedev_2.3.1.orig.tar.gz
- http://ftp.debian.org/debian/pool/main/m/makedev/makedev_2.3.1-83.diff.gz
- http://ftp.gnu.org/gnu/patch/patch-2.5.4.tar.gz
- http://ftp.gnu.org/gnu/wget/wget-1.10.2.tar.gz
- http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_0.3.3.3.tar.gz
ダウンロードしたらエクスプローラで「\\[玄箱 PRO の IP アドレス\share」にアクセスして共有フォルダを開き、其處にダウンロードしたファイルを轉送する。
※此處でエラーが出てファイルの轉送が出來無かつたら、一旦 KURO-BOX/PRO を再起動してマウントを遣り直す。
更に玄箱 PRO に附屬の以下の二つのファイルも轉送する。
- hddrootfs.tar.gz
- uImage.buffalo
轉送したファイルを /dev/sda4 から /dev/sdb2 に移動する。
~ # ls /mnt/usbdisk1/debian/home debootstrap_0.3.3.3.tar.gz patch-2.5.4.tar.gz hddrootfs.tar.gz uImage.buffalo makedev_2.3.1-83.diff.gz wget-1.10.2.tar.gz makedev_2.3.1.orig.tar.gz ~ # cp /mnt/usbdisk1/debian/home/*.gz /mnt/usbdisk1/ ~ # ls /mnt/usbdisk1 debian makedev_2.3.1.orig.tar.gz debootstrap_0.3.3.3.tar.gz patch-2.5.4.tar.gz hddrootfs.tar.gz wget-1.10.2.tar.gz makedev_2.3.1-83.diff.gz
次は開發環境の構築を行う。
外附 HDD に開發環境を解凍・展開する。
インストール作業に必要なソフトウェアをコンパイルする爲にはコンパイラが必要。然し Flash 起動環境にはコンパイラは存在しない爲、hddrootfs.tar.gz を解凍・展開してコンパイル可能な環境を作成する必要が在る。
共有フォルダ(/dev/sda4)から /deb/sdb2 に移した hddrootfs.tar.gz を解凍・展開する。
~ # tar zxvf /mnt/usbdisk1/hddrootfs.tar.gz -C /mnt/usbdisk1 (途中省略) ./var/lock/subsys ./var/proftpd ./var/www real 1m 37.15s user 0m 1.20s sys 0m 15.46s
先程轉送したソフトウェアは /usr/local/src に移す。
~ # mkdir -p /mnt/usbdisk1/usr/local/src ~ # mv /mnt/usbdisk1/debootstrap_0.3.3.3.tar.gz /mnt/usbdisk1/hddrootfs.tar.gz /mnt/usbdisk1/makedev_2.3.1-83.diff.gz /mnt/usbdisk1/makedev_2.3.1.orig.tar.gz /mnt/usbdisk1/patch-2.5.4.tar.gz /mnt/usbdisk1/wget-1.10.2.tar.gz /mnt/usbdisk1/usr/local/src/ ~ # ls /mnt/usbdisk1/usr/local/src debootstrap_0.3.3.3.tar.gz makedev_2.3.1.orig.tar.gz hddrootfs.tar.gz patch-2.5.4.tar.gz makedev_2.3.1-83.diff.gz wget-1.10.2.tar.gz ~ # ls /mnt/usbdisk1 bin debian etc lib proc sbin sys usr boot dev home mnt root share tmp var
此處迄終はつたら開發環境に chroot する。
開發環境に chroot する。
インストール作業に必要なソフトウェアをコンパイルする爲に開發環境に chroot する前にマウントの状態を確認して置く。
~ # mount | sort /dev/mtd3 on /mnt/mtd type jffs2 (rw,noatime) /dev/ram1 on /mnt/ram type tmpfs (rw) /dev/root on / type jffs2 (rw,noatime) /dev/sda1 on /mnt/usbdisk1/debian/boot type ext3 (rw) /dev/sda2 on /mnt/usbdisk1/debian type xfs (rw) /dev/sda4 on /mnt/disk1 type xfs (rw) /dev/sda4 on /mnt/usbdisk1/debian/home type xfs (rw) /dev/sdb2 on /mnt/usbdisk1 type xfs (rw) devpts on /dev/pts type devpts (rw) proc on /proc type proc (rw,nodiratime) sysfs on /sys type sysfs (rw) usbfs on /proc/bus/usb type usbfs (rw)
確認したら以下の樣にして開發環境に chroot する。GCC のバージョンが出力出來れば良し。
~ # mount -t proc proc /mnt/usbdisk1/proc ~ # mount -o bind /dev /mnt/usbdisk1/dev ~ # chroot /mnt/usbdisk1 BusyBox v1.1.1 (2006.11.29-02:37+0000) Built-in shell (ash) Enter 'help' for a list of built-in commands. / # gcc --version gcc (GCC) 3.4.4 (release) (CodeSourcery ARM 2005q3-2) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
次はインストール作業に必要なソフトウェアをコンパイルする。
インストール作業に必要なソフトウェアをコンパイルする。
「玄箱 PRO の Debian Etch 化の手順」に據れば、此乃開發環境で以下のソフトウェアをコンパイルする必要が在る。
- patch (patch-2.5.4.tar.gz)
- wget (wget-1.10.2.tar.gz)
- MAKEDEV (makedev_2.3.1.orig.tar.gz, makedev_2.3.1-82.diff.gz)
- debootstrap (debootstrap_0.3.3.3.tar.gz)
先づ patch からコンパイルする。
/ # /usr/local/src /usr/local/src # tar zxvf patch-2.5.4.tar.gz (解凍・展開途中は省略) /usr/local/src # cd patch-2.5.4/ /usr/local/src/patch-2.5.4 # time ./configure (途中省略) creating Makefile creating config.h real 0m 41.80s user 0m 20.93s sys 0m 18.33s /usr/local/src/patch-2.5.4 # time make (途中省略) patch.o: In function `make_temp':/usr/local/src/patch-2.5.4/patch.c:1325: warning: the use of `mktemp' is dangerous, better use `mkstemp' real 0m 46.40s user 0m 43.73s sys 0m 2.08s /usr/local/src/patch-2.5.4 # make install (以降省略)
此で patch コマンドが出來上がつたので次は MAKEDEV を作成する。出來上がつた MAKEDEV は /sbin に複寫して /dev/MAKEDEV から /dev/MAKEDEV へ SynLink を張る。
/usr/local/src # tar zxvf makedev_2.3.1.orig.tar.gz (途中省略) /usr/local/src # gunzip -dc makedev_2.3.1-83.diff.gz | patch -p0 patching file makedev-2.3.1.orig/MAKEDEV.man patching file makedev-2.3.1.orig/MAKEDEV (途中省略) patching file makedev-2.3.1.orig/debian/rules patching file makedev-2.3.1.orig/Makefile /usr/local/src # cd makedev-2.3.1.orig/ /usr/local/src/makedev-2.3.1.orig # ls -lt -rw-rw-r-- 1 root 0 52320 Jul 23 19:46 MAKEDEV -rw-rw-r-- 1 root 0 24497 Jul 23 19:46 MAKEDEV.man -rw-rw-r-- 1 root 0 300 Jul 23 19:46 Makefile drwxr-xr-x 3 root 0 140 Jul 23 19:46 debian -rw-rw-r-- 1 1000 1000 848 Jun 10 1999 MAKEDEV-2.3.1.lsm -rw-rw-r-- 1 1000 1000 1230 Jun 10 1999 MAKEDEV.spec -rw-rw-r-- 1 1000 1000 1162 Jun 10 1999 README /usr/local/src/makedev-2.3.1.orig # chmod +x MAKEDEV /usr/local/src/makedev-2.3.1.orig # cp -i MAKEDEV /sbin/ /usr/local/src/makedev-2.3.1.orig # ln -s /sbin/MAKEDEV /dev/MAKEDEV
此で MAKEDEV の作成は終はり、次は wget をコンパイルする。configure スクリプトを實行してゐる途中 /lib/cpp が無い、と云はれた場合は /usr/bin/cpp を /lib/cpp に コピーする(SymLink では駄目だつた)。
亦、コンパイルがエラーで終了するが、「玄箱 PRO の Debian Etch 化の手順」に據れば此は gettext の msgfmt が無い爲に起こるが、実用上は無視して構は無いとの事。
/usr/local/src # tar zxvf wget-1.10.2.tar.gz (途中省略) /usr/local/src # cd wget-1.10.2/ /usr/local/src/wget-1.10.2 # time ./configure (途中省略) configure: error: C preprocessor "/lib/cpp" fails sanity check See `config.log' for more details. Command exited with non-zero status 1 real 0m 12.71s user 0m 6.55s sys 0m 6.02s /usr/local/src/wget-1.10.2 # cp -i /usr/bin/cpp /lib/cpp /usr/local/src/wget-1.10.2 # time ./configure (途中省略) generating po/POTFILES from ./po/POTFILES.in creating po/Makefile real 1m 51.16s user 1m 2.18s sys 0m 47.56s /usr/local/src/wget-1.10.2 # time make (途中省略) make[1]: *** [bg.gmo] Error 127 make[1]: Leaving directory `/usr/local/src/wget-1.10.2/po' make: *** [po] Error 2 Command exited with non-zero status 2 real 2m 50.35s user 2m 43.03s sys 0m 5.27s /usr/local/src/wget-1.10.2 # make install /bin/sh: msgfmt: not found make[1]: *** [bg.gmo] Error 127 make[1]: Leaving directory `/usr/local/src/wget-1.10.2/po' make: *** [install.mo] Error 2 /usr/local/src/wget-1.10.2 # ls -l /usr/local/bin/wget -rwxr-xr-x 1 root 0 233287 Jul 23 20:09 /usr/local/bin/wget
此で後は debootstrap の構築を行へば準備は完了だが、「玄箱 PRO の Debian Etch 化の手順」に據れば開發環境に /etc/group を用意して置く必要が在るとの事。
「玄箱 PRO の Debian Etch 化の手順」のものを其之儘パクった。
~ # cat /etc/group root::0:root bin::1:root,bin,daemon daemon::2:root,bin,daemon sys::3:root,bin,adm adm::4:root,adm,daemon tty::5: disk::6:root,adm lp::7:lp mem::8: kmem::9: wheel::10:root floppy::11:root mail::12:mail news::13:news uucp::14:uucp man::15:man users::100:games
此で debootstrap をコンパイルする準備が整つた。
debootstrap をコンパイルする。
先づはアーカイブを解凍・展開する。
/usr/local/src # time tar zxvf debootstrap_0.3.3.3.tar.gz (途中省略) debootstrap-0.3.3.3/sarge debootstrap-0.3.3.3/warty real 0m 1.16s user 0m 0.01s sys 0m 0.24s
其れから Makefile を編集して「generic」を「generic-arm」に變更する。
/usr/local/src # cd debootstrap-0.3.3.3
/usr/local/src/debootstrap-0.3.3.3 # cp -ip Makefile Makefile.20070722
/usr/local/src/debootstrap-0.3.3.3 # vi Makefile
/usr/local/src/debootstrap-0.3.3.3 # diff -u Makefile.20070722 Makefile
--- Makefile.20070722 2007-04-10 19:24:49.000000000 +0000
+++ Makefile 2007-07-23 20:22:15.707993000 +0000
@@ -4,7 +4,7 @@
ARCH := $(shell dpkg --print-architecture)
setarchdevs = $(if $(findstring $(ARCH),$(1)),$(2))
-DEVS := generic hde hdf hdg hdh sde sdf sdg sdh scd-all initrd input usb md lp rtc video \
+DEVS := generic-arm hde hdf hdg hdh sde sdf sdg sdh scd-all initrd input usb md lp rtc video \
$(call setarchdevs,i386,isdn-io eda edb sonycd mcd mcdx cdu535 \
optcd sjcd cm206cd gscd lmscd sbpcd \
aztcd bpcd dac960 ida fd0 fd1 ataraid cciss) \
斯樣にして置いてコンパイルする。
/usr/local/src/debootstrap-0.3.3.3 # time make (途中省略) chown: unknown group name: video makedev vttuner c 83 16 root video 0660: failed tar cf - dev | gzip -9 >devices.tar.gz rm -rf dev echo >debootstrap-arch real 6m 2.09s user 1m 37.57s sys 4m 21.75s
終はつたらインストールする。
/usr/local/src/debootstrap-0.3.3.3 # make install-arch (途中省略) install -o root -g root -m 0755 pkgdetails /usr/lib/debootstrap/ install -o root -g root -m 0644 devices.tar.gz /usr/lib/debootstrap/ install -o root -g root -m 0644 debootstrap-arch /usr/lib/debootstrap/arch
此で Debian GNU/Linux の基本システムを入れる準備が整つた。
debootstrap を實行する。
debootstrap を實行する前にマウント状態を確認する。
~ # mount | sort /dev/mtd3 on /mnt/mtd type jffs2 (rw,noatime) /dev/ram1 on /mnt/ram type tmpfs (rw) /dev/root on / type jffs2 (rw,noatime) /dev/root on /dev type jffs2 (rw,noatime) /dev/sda1 on /debian/boot type ext3 (rw) /dev/sda2 on /debian type xfs (rw) /dev/sda4 on /debian/home type xfs (rw) /dev/sda4 on /mnt/disk1 type xfs (rw) /dev/sdb2 on / type xfs (rw) devpts on /dev/pts type devpts (rw) proc on /proc type proc (rw,nodiratime) proc on /proc type proc (rw,nodiratime) rootfs on / type rootfs (rw) sysfs on /sys type sysfs (rw) usbfs on /proc/bus/usb type usbfs (rw)
後、ネットワークの名前解決が出來る樣、/etc/resolv.conf が正しく設定されてゐるかを確認する。
大丈夫で在れば debootstrap を實行する。途中エラーが出て止まつて了つたが、再度實行すると通つた。一體何だつたのか。
~ # time debootstrap --arch arm etch /debian http://cdn.debian.or.jp/debian/ (途中省略) I: Extracting zlib1g... I: Installing core packages... W: Failure trying to run: chroot /debian dpkg --force-depends --install var/cache/apt/archives/base-files_4_arm.deb Command exited with non-zero status 1 real 11m 12.77s user 2m 52.02s sys 2m 51.19s ~ # time debootstrap --arch arm etch /debian http://cdn.debian.or.jp/debian/ (途中省略) I: Configuring sysklogd... I: Configuring tasksel... I: Base system installed successfully. real 18m 4.31s user 7m 8.06s sys 10m 39.12s
此で Debian GNU/Linux の基本システムはインストール完了。後は細かい設定を行ふ。
カーネル・イメージを /dev/sda1 にコピーする。
/dev/sda4 (現在の情況では /debian/home) に在る uImage.buffalo を /dev/sda1 (現在の情況では /debian/boot) に コピーする。
~ # cp -i /debian/home/uImage.buffalo /debian/boot/ ~ # ls -l /debian/home/uImage.buffalo /debian/boot/uImage.buffalo -rwxr--r-- 1 root root 1736436 Jul 23 21:22 /debian/boot/uImage.buffalo -rwxrw-rw- 1 nobody 99 1736436 Feb 8 09:10 /debian/home/uImage.buffalo ~ # diff /debian/home/uImage.buffalo /debian/boot/uImage.buffalo
カーネル・モジュールのディレクトリを複寫する。
「玄箱 PRO の Debian Etch 化の手順」に據れば、カーネル・モジュールは全てカーネルに組み込まれてゐて、カーネル・モジュールのディレクトリは空だが一應コピーして置いた方が良いとの事。
~ # cd /lib /lib # ls -l /lib/modules /debian/lib/modules/ /debian/lib/modules/: /lib/modules: drwxr-xr-x 3 root root 4096 Jul 23 19:18 2.6.12.6-arm1 /lib # cd modules /lib/modules # cp -air 2.6.12.6-arm1 /debian/lib/modules/ /lib/modules # ls -l /lib/modules/ /debian/lib/modules/ /debian/lib/modules/: drwxr-xr-x 3 root root 4096 Jul 23 19:18 2.6.12.6-arm1 /lib/modules/: drwxr-xr-x 3 root root 4096 Jul 23 19:18 2.6.12.6-arm1
此處迄濟んだら開發環境から抜けて、Debian GNU/Linux 環境に chroot して設定(調整)を行ふ。
Debian GNU/Linux 環境に chroot する。
exit で開發環境から抜けて、Debian GNU/Linux 環境に chroot する。
其之前に一旦マウント情況を確認する。
~ # mount | sort /dev/mtd3 on /mnt/mtd type jffs2 (rw,noatime) /dev/ram1 on /mnt/ram type tmpfs (rw) /dev/root on / type jffs2 (rw,noatime) /dev/root on /mnt/usbdisk1/dev type jffs2 (rw,noatime) /dev/sda1 on /mnt/usbdisk1/debian/boot type ext3 (rw) /dev/sda2 on /mnt/usbdisk1/debian type xfs (rw) /dev/sda4 on /mnt/disk1 type xfs (rw) /dev/sda4 on /mnt/usbdisk1/debian/home type xfs (rw) /dev/sdb2 on /mnt/usbdisk1 type xfs (rw) devpts on /dev/pts type devpts (rw) proc on /mnt/usbdisk1/proc type proc (rw,nodiratime) proc on /proc type proc (rw,nodiratime) sysfs on /sys type sysfs (rw) usbfs on /proc/bus/usb type usbfs (rw)
問題が無ければ以下の手順で Debian GNU/Linux 環境に chroot する。
~ # mount -t proc proc /mnt/usbdisk1/debian/proc ~ # mount -o bind /dev /mnt/usbdisk1/debian/dev ~ # chroot /mnt/usbdisk1/debian sh-3.1#
Bash のコマンドライン・プロンプトが顯れた。各種の設定を行ふ。
apt の設定、ホスト名、ホストファイル、ネットワークの設定を行ふ。
最初に sources.list を設定する。職場で使用してゐる Debian GNU/Linux の設定を持つて來た。
sh-3.1# cat /etc/apt/sources.list deb http://ftp2.jp.debian.org/debian/ etch main deb-src http://ftp2.jp.debian.org/debian/ etch main # deb http://security.debian.org/ etch/updates main deb-src http://security.debian.org/ etch/updates main
次にホスト名(/etc/hostname)を設定し、名前解決ファイル(/etc/hosts)を設定した。
亦 IP アドレスは DHCP から取得する樣に設定した。
sh-3.1# cat /etc/network/interfaces # Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or # /usr/share/doc/ifupdown/examples for more information. iface lo inet loopback iface eth0 inet dhcp auto lo auto eth0
此乃後はパッケージ情報を更新する。
apt-get update, apt-get upgrade を實行する。
只コマンドを叩くだけなので、其之儘結果を張る。
sh-3.1# apt-get update Get:1 http://security.debian.org etch/updates Release.gpg [189B] (途中省略) Get:8 http://ftp2.jp.debian.org etch/main Sources [1653kB] Fetched 7327kB in 1m28s (82.7kB/s) Reading package lists... Done sh-3.1# apt-get upgrade Reading package lists... Done Building dependency tree... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
アップグレードするべきパッケージは無かつた。
fstab の設定を行ふ。
今の情況では fstab に何も書いてゐないので、再起動すると大變な事に成る。
其處で fstab を以下の樣に設定した。
sh-3.1# cat /etc/fstab # UNCONFIGURED FSTAB FOR BASE SYSTEM proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 devpts /dev/pts devpts gid=4,mode=620 0 0 /dev/sda2 / xfs defaults 1 1 /dev/sda3 swap none sw 0 0 /dev/sda4 /home xfs defaults 1 1
シリアルコンソールからログイン出來る設定を行う。
/etc/inittab を書換へてシリアルコンソールからログイン出來る樣にして置く。
sh-3.1# vi /etc/inittab sh-3.1# diff -u /etc/inittab.20070724 /etc/inittab --- /etc/inittab.20070724 2007-01-30 22:56:59.000000000 +0000 +++ /etc/inittab 2007-07-23 21:51:50.827993000 +0000 @@ -60,7 +60,7 @@ # Example how to put a getty on a serial line (for a terminal) # -#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 +T0:12345:respawn:/sbin/getty -L ttyS0 115200 vt100 #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 # Example how to put a getty on a modem line.
システム時刻を「UTC=no」に設定する。
ハードウェア・クロックは UTC では無いので設定ファイル rcS を書換へる。
sh-3.1# diff -u /etc/default/rcS.20070724 /etc/default/rcS --- /etc/default/rcS.20070724 2007-01-30 22:53:46.000000000 +0000 +++ /etc/default/rcS 2007-07-23 21:56:18.027993000 +0000 @@ -10,7 +10,7 @@ TMPTIME=0 SULOGIN=no DELAYLOGIN=no -UTC=yes +UTC=no VERBOSE=no FSCKFIX=no RAMRUN=no
タイムゾーンの設定を行ふ。
tzconfig を實行してタイムゾーンを Asia/Tokyo に設定する。
sh-3.1# tzconfig (途中省略) Your default time zone is set to 'Asia/Tokyo'. Local time is now: Tue Jul 24 06:58:40 JST 2007. Universal Time is now: Mon Jul 23 21:58:40 UTC 2007.
halt の設定を行ふ。
デフォルトの儘だと halt コマンドで電源が落ち無いので電源が落ちる樣に設定ファイル /etc/default/halt を書換へる。
sh-3.1# diff -u /etc/default/halt.20070724 /etc/default/halt --- /etc/default/halt.20070724 2007-01-31 07:53:46.000000000 +0900 +++ /etc/default/halt 2007-07-24 07:01:47.427993000 +0900 @@ -1,2 +1,2 @@ # Default behaviour of shutdown -h / halt. Set to "halt" or "poweroff". -HALT=poweroff +HALT=halt
次は root 及び一般ユーザのアカウントを作成する。
root のパスワードを設定する。
そのまんま。
sh-3.1# passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
一般ユーザを作成する。
此もそのまんま。
sh-3.1# useradd -u 10000 -g users -d /home/foo -m -s /bin/bash foo sh-3.1# cd ~foo sh-3.1# ls -al total 16 drwxr-xr-x 2 foo users 59 Jul 24 07:04 . drwxr-xr-x 3 root root 4096 Jul 24 07:04 .. -rw-r--r-- 1 foo users 220 Jul 24 07:04 .bash_logout -rw-r--r-- 1 foo users 414 Jul 24 07:04 .bash_profile -rw-r--r-- 1 foo users 2227 Jul 24 07:04 .bashrc
作業開始から此處迄で約五時間*1掛かつた。
OpenSSH を入れる。
ログインに telnet は使は無いので代はりに OpenSSH を入れる。
sh-3.1# apt-get install openssh-server Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: (途中省略) Creating SSH2 RSA key; this may take some time ... Creating SSH2 DSA key; this may take some time ... Restarting OpenBSD Secure Shell server: sshd.
入れ終はつたら公開鍵を置いて SSH 經由でログイン出來るか確認する。
Flash 起動環境に戻り作業コピーを取る。
此處迄をはつたら一旦今迄の作業コピーを取る。Debian GNU/Linux 環境を一旦抜けて Flash 起動環境に戻つて /dev/sda2 を tar で固める。
sh-3.1# exit ~ # umount /mnt/usbdisk1/debian/dev/ ~ # umount /mnt/usbdisk1/debian/proc/ ~ # umount /mnt/usbdisk1/debian/home/ ~ # umount /mnt/usbdisk1/debian/boot/ ~ # time tar zcvf /mnt/disk1/debian_etch_kpro_20070724.tar.gz -C /mnt/usbdisk1/debian ./ (途中省略) ./media/ ./initrd/ real 16m 20.89s user 15m 45.74s sys 0m 25.40s
固めたアーカイブ・ファイルを母艦に移して置く。
/dev/ttyS0, /dev/ttyS1 を作成する。
此處迄行へば後は U-Boot 環境變數を HDD 起動用に變更すれば、電源を入れると Debian GNU/Linux が起動する筈。だが行き成り U-Boot 環境變數を書換・保存して二進も三進も行か無く成るのは厭なので、玄箱起動時に揮發的に書換へて Debian GNU/Linux が起動するかを確認した。
KURO-BOX/PRO の電源を入れて、二度目のプロンプトで適當なキーを叩いて、U-Boot 環境變數設定モードに遷移する。
Orion1 CPU = Low === KURO U-Boot. == (中略) Found boot image hit any key to switch tftp boot. Hit any key to stop autoboot: 0 <<system_bootend>> Hit any key to stop autoboot: 0 Marvell>>
此處で以下のコマンドを實行する。
Marvell>> setenv default_kernel_addr 0x00100000 Marvell>> setenv bootargs_base 'console=ttyS0,115200' Marvell>> setenv bootargs_root 'root=/dev/sda2 rw panic=5' Marvell>> setenv bootargs 'console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09' Marvell>> setenv bootcmd 'ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)' Marvell>> setenv nand_boot no Marvell>> boot
すると、
Reset IDE: Marvell Serial ATA Adapter Integrated Sata device found Device 0: OK (中略) Starting OpenBSD Secure Shell server: sshd. Starting periodic command scheduler: crond. INIT: Id "T0" respawning too fast: disabled for 5 minutes
此處で起動メッセージが止まつて了つた。別の端末から SSH 經由でログインするとログイン出來たので、/dev 下を調べて見ると ttyS* が無かつた。
$ ls -l /dev/ttyS* ls: /dev/ttyS*: No such file or directory
で早速 ttyS0, ttyS1 を作成して再起動した。
# cd /dev/ # ./MAKEDEV ttyS0 # ./MAKEDEV ttyS1 # ls -l ttyS* crw-rw---- 1 root dialout 4, 64 Jul 30 23:40 ttyS0 crw-rw---- 1 root dialout 4, 65 Jul 30 23:41 ttyS1 # reboot
再び揮發的に U-Boot 環境變數を書換へると今度はキチンと起動した。
HDD 起動にする爲に U-Boot 環境變數を変更する。
此で Debian GNU/Linux が起動する事が判つたので恆常的に U-Boot 環境變數を書換へた。
KURO-BOX/PRO を再起動して、
# reboot
再び立ち上がるのを待つ。
Orion1 CPU = Low === KURO U-Boot. === ** LOADER ** ** KUROBOX BOARD: KURO_BOX LE (CFG_ENV_ADDR=fffff000) (中略) hit any key to switch tftp boot. Hit any key to stop autoboot: 0 <<system_bootend>> Hit any key to stop autoboot: 0 Marvell>>
二個目のプロンプトが出力された處で適當なキーを叩き、U-Boot 設定環境のプロンプトが出力された處で、設定コマンドを入力した。
Marvell>> setenv default_kernel_addr 0x00100000 Marvell>> setenv bootargs_base 'console=ttyS0,115200' Marvell>> setenv bootargs_root 'root=/dev/sda2 rw panic=5' Marvell>> setenv bootargs 'console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09' Marvell>> setenv bootcmd 'ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)' Marvell>> setenv nand_boot no Marvell>> saveenv Saving Environment to Flash... . Un-Protected 1 sectors Erasing Flash... . Erased 1 sectors Writing to Flash... done . Protected 1 sectors Marvell>> boot
此で Debian GNU/Linux が立ち上がるので、root でログインして再度 reboot すると再度 Debian GNU/Linux が立ち上がつて來るのを確認して完了。
Debian GNU/Linux on KURO-BOX/PRO の出來上がり。
(追記)
HDD が一臺しか無い時に Debian を入れる方法に附いては「開發人生 -- 玄箱プロに Debian」で解説されてゐる。
*1 7/24 の午前二時位から開始して午前七時過ぎ迄。