Junk Shop ぺんぎんの小部屋 Linux's memo (玄箱PRO Debian install)

Linux's memo (玄箱PRO)

(玄箱PRO Debian setting) ->

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

http://ftp.gnu.org/gnu/patch/

wget-1.10.2.tar.gz

http://ftp.gnu.org/gnu/wget/

debootstrap_0.3.3.3.tar.gz

http://ftp.debian.org/debian/pool/main/d/debootstrap/

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
.
.
.

LINK

参考:

Unix/Linux システムからの Debian GNU/Linux のインストール

玄箱PROのDebian Etch化の手順

nvram, miconapl を使えるようにする

過去の失敗:

NAND boot 環境での作業(失敗その1)

HDD boot 環境での作業(失敗その2)

クロス 環境での作業(失敗その3)

Linux's memo (玄箱PRO)

(玄箱PRO Debian setting) ->


copyright 諸冨 秀男(Hideo Morotomi) 2004-2005
当Web Site に関する補足事項 (mail to webeditor@junk-shop.iobb.net)

Get Firefox Valid HTML 4.01! Valid CSS!