Last update: 2007/11/01(Thu)
玄箱PRO Debian 化の覚え書きです。
「玄箱PROのDebian Etch化の手順」にかなり詳しい手順が公開されていましたので、そこを参考に実使用環境を考えた上で、私がインストールしたときのメモです。
標準のHDD boot 環境を残して debian と切り替えて使えるようにしました。
作業は、標準のHDD boot 環境で行っています。
準備
パーティションの切り直し
debian root をinstall するパーティションを準備します。
fdisk を使用して以下のようにパーティションを切り直しました。
Device Boot Start End Blocks Id System /dev/sda1 1 7 56196 83 Linux /dev/sda2 8 373 2939895 83 Linux /dev/sda3 374 739 2939895 83 Linux /dev/sda4 740 38913 306632655 5 Extended /dev/sda5 740 38896 306496071 83 Linux /dev/sda6 38897 38913 136521 82 Linux swap
この時に注意する事は、/dev/sda1と/dev/sda2 を消さないことです。
HDD boot 環境の設定変更
そのままだと、swap を /dev/sda3 、/home を /dev/sda4 に割り当てようとして正常に起動しないので、/etc/init.d/rcS 、/etc/init.d/mount_share.sh 、/usr/local/bin/kuro_lib を変更します。
/etc/init.d/rcS
#!/bin/sh
# --- 省略 --- #
MountSystemFolders(){
##### mount system file systems.#####
##### we can't mount usbfs cause kernel don't have a usb driver statically. ####
echo "===== Starting MountSystemFolders ====="
FAIL=0
mount -t proc proc /proc
if [ $? != 0 ] ; then
FAIL=1
fi
mount -t sysfs sysfs /sys
if [ $? != 0 ] ; then
FAIL=1
fi
mount -o rw,remount /dev/root /
if [ $? != 0 ] ; then
FAIL=1
fi
mount -a
if [ $? != 0 ] ; then
FAIL=1
fi
DispSF ${FAIL}
echo ""
# 新しい swap 用のパーティション名に変更 #
mkswap /dev/sda6
swapon /dev/sda6
}
# --- 省略 --- #
/etc/init.d/mount_share.sh
#!/bin/sh
# --- 省略 --- #
MOUNT(){
#Try to mount as xfs , if that would fail, next try ty mount as ext3.
if [ -e /sys/block/sda/dev ] ; then
MountShare ${DISK1_DEV} /home
[ $? -ne 0 ] && MountShare ${DISK1_DEV} /home ext3
fi
if [ -e /sys/block/sdb/dev ] ; then
MountShare ${DISK2_DEV} /home
[ $? -ne 0 ] && MountShare ${DISK2_DEV} /home ext3
fi
# ほとんど使用しない上、mountに時間がかかるため、コメントアウト #
#MountShare ${MTD_SHARE_DEV} ${MTD_MPT} jffs2
}
# --- 省略 --- #
/usr/local/bin/kuro_lib
#!/bin/sh
# --- 省略 --- #
MountShare(){
# ret 0 : this is no partition disk.
# ret 1 : this is nand share type partition
# ret 2 : this is developkit type partition (maybe)
if [ "$1" = "/dev/sda" -o "$1" = "/dev/sdb" ] ; then
IsHavePartition $1
RET=$?
[ "${RET}" -eq 1 ] && TARGET_DEV=${1}1
# /home に割り当てるパーティション番号に変更
[ "${RET}" -eq 2 ] && TARGET_DEV=${1}5
[ "${RET}" -eq 0 ] && TARGET_DEV=${1}
else
TARGET_DEV=$1
fi
IsMounted ${TARGET_DEV}
if [ $? = 1 ] ; then
echo "${TARGET_DEV} is already mounted."
return 1
fi
if [ "$3" = "" ] ; then
FS=xfs
else
FS=$3
fi
if [ "$4" = "" ] ; then
PERMISSION=777
else
PERMISSION=$4
fi
echo "Mounting ${TARGET_DEV} on $2 as a ${FS} file system."
mount -t ${FS} ${TARGET_DEV} $2
case $? in
0)
chmod ${PERMISSION} $2
echo "Success."
;;
*)
echo "Failed."
return 1
;;
esac
echo ""
return 0
}
# --- 省略 --- #
HDD Format
ext2 やext3 で format する場合は、普通に mke2fs でフォーマットできますが、xfs で format する場合は、NAND boot の環境で行う必要があります。
/dev/mtdblock2 を /mnt/mtd2 などにmount して、/mnt/mtd2 に chroot すれば、mkfs.xfs を使用できます。
~# mkdir /mnt/mtd2 ~# mount /dev/mtdblock2 /mnt/mtd2 ~# chroot /mnt/mtd2 ~# mkfs.xfs /dev/sda3
/dev/mtd2 の内容を HDDにコピー
/dev/mtd2 のアクセス速度が遅いので、HDDにコピーしておきます。
コピー先の作成(/var/kurobox/mtd2) ~# mkdir /var/kurobox ~# mkdir /var/kurobox/mtd2 コピー(tar で一旦まとめて、コピー先で解凍) ~# mount /dev/mtd2 /mnt/mtd2 (/mnt/mtd2 が無いときは作成してください。) ~# cd /mnt/mtd2 ~# tar czf /var/kurobox/mtd2/mtd2.tar.gz * (しばらく待ちましょう) ~# cd /var/kurobox/mtd2 ~# tar xzf mtd2.tar.gz
インストール
上記の下準備により、HDDパーティションの役割を以下のようにして、debianをインストールしました。
Device /dev/sda1 <- kernel image 用 /dev/sda2 <- Normal HDD boot 用 /dev/sda3 <- Debian boot 用 (/dev/sda4 Extended) /dev/sda5 <- /home(共通) /dev/sda6 <- Linux swap
必要なファイルを玄箱Proにコピー
作業用のディレクトリを作成
~# mkdir /home/work
patch(patch-2.5.4.tar.gz ), MAKEDEV(makedev_2.3.1.orig.tar.gz , makedev_2.3.1-83.diff.gz), debootstrap(debootstrap_0.3.3.3.tar.gz), wget(wget-1.10.2.tar.gz)のソースを入手し、玄箱Proの作業用のディレクトリにコピー。(samba 経由でコピーするのが手っ取り早いかな。)
ソースの入手先:
makedev_2.3.1.orig.tar.gz , makedev_2.3.1-83.diff.gz
http://ftp.debian.org/debian/pool/main/m/makedev/
patch-2.5.4.tar.gz
wget-1.10.2.tar.gz
debootstrap_0.3.3.3.tar.gz
MAKEDEVのインストール
まず、patch のビルドとインストール
~# cd /home/work /home/work # tar zxf patch-2.5.4.tar.gz /home/work # cd patch-2.5.4 /home/work/patch-2.5.4 # ./configure ・ ・ ・ /home/work/patch-2.5.4 # make ・ ・ ・ /home/work/patch-2.5.4 # make install
でもって、MAKEDEV
/home/work # tar zxf makedev_2.3.1.orig.tar.gz /home/work # gzip -dc makedev_2.3.1-83.diff.gz | patch -p0 ・ ・ ・ /home/work # cd makedev_2.3.1.orig /home/work/makedev_2.3.1.orig # chmod +x MAKEDEV /home/work/makedev_2.3.1.orig # cp MAKEDEV /sbin /home/work/makedev_2.3.1.orig # ln -s /sbin/MAKEDEV /dev/MAKEDEV
wget のインストール
普通にビルドとインストールしますが、gettext の msgfmt がインストールされていないためエラーがでますが、必要な部分はインストールされますので無視しても問題有りません。
~# cd /home/work /home/work # tar zxf wget-1.10.2.tar.gz /home/work # cd wget-1.10.2 /home/work/wget-1.10.2 # ./configure ・ ・ ・ /home/work/wget-1.10.2 # make ・ ・ ・ /home/work/wget-1.10.2 # make install
/etc/group の作成
HDDブート環境には /etc/group がないためNVRAM boot 環境からコピーしました。
~# cp /var/kurobox/mtd2/etc/group /etc/group
debootstrap のインストール
ファイルを展開し、Makefileを編集します。
~# cd /home/work /home/work # tar zxf debootstrap_0.3.3.3.tar.gz /home/work # cd debootstrap_0.3.3.3 /home/work/debootstrap_0.3.3.3 # vi ./Makefile
Makefileの「generic」を「generic-arm」に変更する。
CC=gcc CC=gcc CFLAGS=-Wall -W -O2 ARCH := $(shell dpkg --print-architecture) setarchdevs = $(if $(findstring $(ARCH),$(1)),$(2)) DEVS := generic-arm hde hdf hdg hdh sde sdf sdg sdh scd-all initrd input usb md lp rtc video \ # --- 以下省略 --- #
make と make install
/home/work/debootstrap_0.3.3.3 # make ・ ・ ・ /home/work/debootstrap_0.3.3.3 # make install-arch ・ ・ ・
debootstrapの実行
インストールするパーティションをマウントし、debootstrapを実行します。
~# mkdir /mnt/debinst ~# mount /dev/sda3 /mnt/debinst ~# debootstrap --arch arm sarge /mnt/debinst http://cdn.debian.or.jp/debian
エラーで止まらなければ、/dev/sda3 に最小限の debian root が完成しています。
debian root の設定
debian root で起動する前に、debian root にchroot して色々と設定しておきます。
~# chroot /mnt/debinst ~# mount -t proc proc /proc
- apt
-
/etc/apt/sources.list を編集
deb http://cdn.debian.or.jp/debian sarge main deb http://cdn.debian.or.jp/debian stable main deb-src http://cdn.debian.or.jp/debian stable main deb http://security.debian.org/ stable/updates main
編集後、apt-get update を実行。
エラーがでた場合、/etc/apt/sources.list を見直し。
- ネットワーク設定
-
コンピューター名の設定(/etc/hostname)
kurobox-pro
localhost の設定(/etc/hosts)
127.0.0.1 localhost kurobox-pro
IP Subnet Gateway の設定(/etc/network/interfaces)
# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or # /usr/share/doc/ifupdown/examples for me information. # # DHCP setting "iface eth0 inet dhcp" iface eth0 inet static address 192.168.*.* network 192.168.*.0 netmask 255.255.255.0 broadcast 192.168.*.255 gateway 192.168.*.* iface lo inet loopback auto lo eth0
DNS の設定(/etc/resolv.conf)
nameserver 192.168.*.*
- ユーザー
-
root のパスワード設定
~# passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
シリアルコンソールからのログインも有効にする
/etc/inittab
T0を有効にし、転送速度を変更
# --- 省略 --- # # Example how to put a getty on a serial line (for a terminal) # T0:12345:respawn:/sbin/getty -L ttyS0 115200 vt100 #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 # --- 省略 --- #
- デバイスファイルの作成
-
色々とデバイスファイルが足りないので作成します。
最低限必要なのは、/dev/sda と /dev/ttyS0 の二つだけですが、ついでにほかのデバイスも追加しておきます。
シリアルとHDD関連
~# cd /dev ~# MAKEDEV ttyS0 ~# MAKEDEV ttyS1 ~# MAKEDEV sda ~# MAKEDEV sdb ~# MAKEDEV sdc ~# MAKEDEV sdd
NVRAM 関連
~# mknod /dev/mtdblock0 b 31 0 ~# mknod /dev/mtdblock1 b 31 1 ~# mknod /dev/mtdblock2 b 31 2 ~# mknod /dev/mtdblock3 b 31 3 ~# mknod /dev/mtd0 b 31 0 ~# mknod /dev/mtd1 b 31 1 ~# mknod /dev/mtd2 b 31 2 ~# mknod /dev/mtd3 b 31 3 ~# mknod /dev/mtdchar0 c 90 0 ~# mknod /dev/mtdchar1 c 90 1 ~# mknod /dev/mtdchar2 c 90 2 ~# mknod /dev/mtdchar3 c 90 3
- ファイル関連
-
xfsprogs のインストール(xfs関連tool)
~# apt-get install xfsprogs
/etc/fstab
proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 devpts /dev/pts devpts gid=4,mode=620 0 0 /dev/sda3 / xfs defaults 1 1 /dev/sda6 swap swap defaults 0 0 /dev/sda5 /home xfs defaults 1 1
- ネットワークログイン環境
-
シリアルコンソールが無い場合、この時点で telnetdか sshdをインストールして下さい。
sshの場合
~# apt-get install ssh
特に、設定を変更しなくてもrootでログインできます。(セキュリティ上の問題はありますが・・・)
- 時刻関連
-
JSTに変更
/etc/default/rcS
# # Defaults for the boot scripts in /etc/rcS.d # # Time files in /tmp are kept in days. TMPTIME=0 # Set to yes if you want sulogin to be spawned on bootup SULOGIN=no # Set to no if you want to be able to login over telnet/rlogin # before system startup is complete (as soon as inetd is started) DELAYLOGIN=yes # Set UTC=yes if your system clock is set to UTC (GMT), and UTC=no if not. # UTC=yes を UTC=no に変更 UTC=no # Set VERBOSE to "no" if you would like a more quiet bootup. VERBOSE=yes # Set EDITMOTD to "no" if you don't want /etc/motd to be editted automatically EDITMOTD=yes # Set FSCKFIX to "yes" if you want to add "-y" to the fsck at startup. FSCKFIX=no
tzconfig を実行してタイムゾーンを tokyo に変更する。
nvram による U-boot 環境変数の変更
!!!危険!!!変更を間違えると起動しなくなります。自己責任で行ってください。
HDD boot 環境には nvram がないので、/dev/mtd2 からコピーしておきます。
~# mount /dev/mtd2 /mnt/mtd2 ~# cp /mnt/mtd2/usr/local/sbin/nvram /usr/local/sbin/nvram
kernel image は同じ物を利用するので、U-boot の環境変数は、bootargs のみの変更でdebian が動きます。
debian をインストールしたディスクが/dev/sda3の場合
~# nvram -c set bootargs 'console=ttyS0,115200 root=/dev/sda3 rw panic=5 BOOTVER=1.09'
後は、再起動するだけでdebian が動き出すはずです。
etch(4.0) 化
apt で簡単に etch(4.0) 化できます。
~# apt-get update . . . ~# apt-get upgrade . . .