トップ «前の日記(2007-07-21) 最新 次の日記(2007-07-23)» 編集

Pyon's Diary

[はてなブックマーク登録数] [Google に登録] [RSS フィード] Gourmet Hardware Programming Society Software
Amazon
成る可くJIS X 0213:2004對應MSフォント(5.0)、IPAフォント(003.02)で御覽下さい

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)が在る以上、どうとでも成るので此處では後の事は考へずパーティションの構成は變へ無いが容量は自分の好きな樣にする事にした。

インストールの參考にした頁。

インストールに使用した機材。

  • 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」で解説されてゐる。

Tags: Hardware | del.icio.usに追加 | はてなブックマークに追加 | livedoor クリップに追加 | Yahoo! ブックマークに追加 | Google ブックマークに追加 | Permalink

*1  7/24 の午前二時位から開始して午前七時過ぎ迄。

[]

正當なXHTML1.1です! 正當なCSSです! BlogScouter Pyon's Land (MyMiniCity)
© pyon