玄箱をVine-4.1に導入する話
用意するもの
- u-bootを導入済の玄箱 (u-bootはhttp://www.genbako.com/より)
- USB-IDE変換器
- 空いているIDE-HDD
- rpmの使えるLinuxマシン
- Vine-ppcのCDROMもしくはそのイメージ
- http://www.genbako.com/のカーネルとモジュール (自分の玄箱に合ったもの)
作業
- 接続
動作するLinuxマシンに、USB-IDE変換器を通して、
IDE-HDDを接続する。このとき、自動的にマウントする機能が働くときがあるが、
その場合は手でアンマウントする。
- パーティションの設定
接続したHDDにfdiskコマンドで、パーティションを切る。
このとき、Linuxマシンのシステムのパーティションを
変更しないように、デバイス名に注意すること。
私の場合、プライマリパーティションを3つ作り、
一つ目は/用のext2/3、二つ目はswap用、三つ目は/mnt用のext2/3とした。
- フォーマット
mke2fs等で、ファイルシステムをフォーマットする。
先と同様にデバイス名に注意すること。
- /用パーティションのマウント
適当なディレクトリ(ここでは/mnt/rootとする)に、
先ほどフォーマットした、/用のパーティションをマウントする。
- Vine-ppcのCDROMをマウントするなり、
CDROMイメージをloopを使ってマウントするなりし、
パッケージのrpmファイルを利用可能にする。
ここでは、/mnt/cdromにマウントされているものとする。
- パッケージの導入
- 「mkdir -p /mnt/root/var/lib/rpm/」とし、
rpmデータベース用のディレクトリを作成する。
- 「cd /mnt/cdrom/Vine/RPM」として、rpmのあるディレクトリに移動する。
- 「rpm -i --root /mnt/root glibc-2.3.4-2vl3.ppc.rpm basesystem-6.0-4vl4.noarch.rpm glibc-common-2.3.4-2vl3.ppc.rpm setup-2.5.7-2vl5.noarch.rpm filesystem-2.3-0vl1.noarch.rpm」
- 「rpm -i --root /mnt/root pam-0.99.3.0-0vl4.ppc.rpm cracklib-2.8.6-0vl2.ppc.rpm cracklib-dicts-2.8.6-0vl2.ppc.rpm glib2-2.12.7-0vl1.ppc.rpm initscripts-7.2.8-0vl1.ppc.rpm pwdb-0.62-0vl3.ppc.rpm grep-2.5.1-50vl2.ppc.rpm mktemp-1.5-11vl3.ppc.rpm sed-4.1.2-0vl2.ppc.rpm coreutils-5.96-0vl1.ppc.rpm db4-4.2.52-6vl6.ppc.rpm bash-2.05b-0vl3.ppc.rpm words-3.0-8vl1.noarch.rpm mingetty-1.07-0vl1.ppc.rpm gawk-3.1.3-0vl3.ppc.rpm e2fsprogs-1.38-2vl2.ppc.rpm procps-3.2.6-0vl3.ppc.rpm sysklogd-1.4.1-13vl2.ppc.rpm psmisc-21.6-1vl1.ppc.rpm which-2.16-0vl5.ppc.rpm modutils-3.2.2-0vl3.ppc.rpm util-linux-2.12p-0vl5.ppc.rpm SysVinit-2.85-5vl3.ppc.rpm iproute-2.6.15-0vl2.ppc.rpm console-tools-19990829-29vl4.ppc.rpm shadow-utils-4.0.16-0vl2.ppc.rpm chkconfig-1.2.17-1vl9.ppc.rpm install-info-4.8-0vl1.ppc.rpm findutils-4.2.27-0vl1.ppc.rpm libgcc-3.3.6-0vl7.ppc.rpm libstdc++3-3.3.6-0vl7.ppc.rpm libtermcap-2.0.8-44vl1.ppc.rpm iputils-20020927-41vl1.ppc.rpm logrotate-3.7.4-1vl1.ppc.rpm usermode-1.86-0vl2.ppc.rpm udev-097-0vl3.ppc.rpm popt-1.10.2-0vl16.ppc.rpm slang-1.4.9-0vl1.ppc.rpm zlib-1.2.3-0vl5.ppc.rpm gzip-1.3.5-6vl3.ppc.rpm termcap-11.0.1-1vl5.noarch.rpm gpm-libs-1.20.1-35vl8.ppc.rpm libuser-0.53.8-1vl1.ppc.rpm MAKEDEV-3.22-0vl4.ppc.rpm less-382-0vl4.ppc.rpm bzip2-1.0.3-0vl2.ppc.rpm file-4.09-0vl2.ppc.rpm tcsh-6.12-0vl6.ppc.rpm ncurses-5.4-0vl3.ppc.rpm」
- 「rpm -i --root /mnt/root net-tools-1.60-12vl2.ppc.rpm dhcpcd-1.3.22pl4-0vl2.ppc.rpm openssh-4.5p1-0vl1.ppc.rpm openssh-clients-4.5p1-0vl1.ppc.rpm openssh-server-4.5p1-0vl1.ppc.rpm tcp_wrappers-7.6-34vl3.ppc.rpm openssl-0.9.7l-0vl1.40.ppc.rpm」
- 「rpm -i --root /mnt/root rpm-4.4.2-0vl16.ppc.rpm beecrypt-4.1.2-9vl3.ppc.rpm rpm-libs-4.4.2-0vl16.ppc.rpm libexpat-1.95.8-0vl5.ppc.rpm neon-0.25.5-0vl2.ppc.rpm sqlite3-3.3.6-0vl3.ppc.rpm expat-1.95.8-0vl5.ppc.rpm readline-5.1-0vl1.ppc.rpm」
- 「rpm -i --root /mnt/root apt-0.5.15lorg3.2-0vl9.ppc.rpm gnupg-1.4.6-0vl1.ppc.rpm vine-keyring-2.0-0vl16.noarch.rpm libxml2-2.6.26-0vl1.ppc.rpm curl-7.15.3-0vl1.ppc.rpm libidn-0.5.18-0vl2.ppc.rpm libusb-0.1.12-0vl1.ppc.rpm」
- 「rpm -i --root /mnt/root crontabs-1.9-2vl2.noarch.rpm tmpwatch-2.9.3-1vl1.ppc.rpm vine-release-4.1-0vl1.noarch.rpm vim-6.4.10-0vl1.ppc.rpm vim-common-6.4.10-0vl1.ppc.rpm alternatives-0.1.10.18-0vl2.ppc.rpm perl-5.8.6-0vl3.ppc.rpm gdbm-1.8.0-20vl3.ppc.rpm passwd-0.71-0vl1.ppc.rpm」
これだけでは足りないものもあるが、とりあえず後で。
- カーネルの導入
/mnt/root/bootに移動し、カーネルのtgzファイルを展開する。
- モジュールの導入
/mnt/root/lib/modulesに移動し、モジュールのtgzファイルを展開する。
- hostsファイルの書き込み
/mnt/root/etc/hostsに「127.0.0.1 localhost localhost.localdomain」ぐらいを
書いておく。
- sshd_configファイルの編集
/mnt/root/etc/ssh/sshd_configファイルを編集する。
編集する項目は、「PermitRootLogin」と「PermitEmptyPasswords」で、
どちらも「yes」となるように設定する。
- sshdの鍵の生成
「ssh-keygen -q -t rsa1 -f /mnt/root/etc/ssh/ssh_host_key -C '' -N ''」
「ssh-keygen -q -t rsa -f /mnt/root/etc/ssh/ssh_host_rsa_key -C '' -N ''」
「ssh-keygen -q -t dsa -f /mnt/root/etc/ssh/ssh_host_dsa_key -C '' -N ''」
などとして、sshdの鍵を生成する。
- etc/sysconfig/networkの書き込み
/mnt/root/etc/sysconfig/networkに
NETWORKING=yes
HOSTNAME=localhost.localdomain
とでも書いておく。
- ifcfg-eth0の書き込み
/mnt/root/etc/sysconfig/network-scripts/ifcfg-eth0に、
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
とでも書いておく。固定IPが望ましい場合は、そのように書く。
- ppc_uartdもしくはその代替の設定
5分でシャットダウンされないように、
玄箱の/usr/sbin/ppc_uartdをコピーし、
/mnt/root/etc/rc.d/rc3.d/S95ppc_uartdなどで起動するように設定するか、
/mnt/root/etc/rc.d/rc.sysinitかrc.localあたりで、
「echo -n '何か' > /dev/ttyS1」
などとする。('何か'の部分は自分で調べること)
- fstabの書き込み
/mnt/root/etc/fstabにマウントするファイルシステムの記述を行う。
/dev/hda1 / ext3 defaults,noatime,errors=remount-ro 0 0
proc /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=20 0 0
/dev/hda2 swap swap defaults 0 0
/dev/hda3 /mnt ext3 defaults,noatime 0 0
ぐらいでOKか。
- /用のパーティションをアンマウントする。
- 設定の終わったHDDを取り外し、玄箱に接続しブートする。
このとき接続するネットワークは安全なものであることが必要。
- ブートした玄箱にsshで接続すると、
パスワードなしでログインできるので、最初にrootのパスワードを設定する。
後作業
「apt-get update」「apt-get dist-upgrade」「apt-get upgrade」等を
用いてアップデートする。また、manやgcc等足りないパッケージも、
「apt-get install」を用いて、適宜インストールすれば良い。
また、リブート/シャットダウン用に/etc/rc.d/init.d/haltを
書き換えておくと良いかもしれない。
ppc_uartdを使う場合は、「/mnt」「/etc/melco/timer_sleep」「/www/script/melsub_init.sh」「/www/script/melsub_shutdown.sh」等の、
ファイル名固定の部分があるので、注意されたし。
その他
参考