2010/01/25

Alix用にDebian LennyなCFカードを作成する

今回の作業はUbuntu 9.10用のCFカードを作る手順と、ほぼ同じです。 以前に簡単なメモを残しましたが、いろいろ手順が抜けていて使いづらかったので新たに作成する機会にメモを取り直しました。

今回は重複する具体的な作業手順は省略したいところですが、複数の文書を参照するのは面倒なので、網羅する方向でまとめています。

今回も作業はDesktopなUbuntu 8.04 LTSにUSB経由でCFカードを接続して行なっています。

CFカードへの基本システムの導入

ここはいつも通りの作業で、fdisk, mke2fs, tune2fsを使い、debootstrap+grubでブータブルなCFカードを作成します。

$ sudo /sbin/fdisk /dev/sdg
$ sudo /sbin/mke2fs -j /dev/sdg1
$ sudo /sbin/tune2fs -c 0 -i 0 /dev/sdg1
$ sudo mount /dev/sdg1 /mnt/cf
$ sudo debootstrap --arch i386 lenny /mnt/cf
$ sudo grub-install --no-floppy --root-directory=/mnt/cf /dev/sdg

2010/02/25追記:
grub-installコマンドに"--no-floppy"オプションを追加。これで体感的には処理が早く終るようになりました。

実際のブートに必要な最低限の残作業

grubの導入が終ってから/mnt/cfにCFカードをmountしたまま、chrootしてから作業を行ないます。

$ sudo chroot /mnt/cf /bin/bash
apt-get周りの設定

sources.listファイルを編集します。

# vi /etc/apt/sources.list

/etc/apt/sources.listファイル

deb http://ftp.jp.debian.org/debian/ lenny main
deb-src http://ftp.jp.debian.org/debian/ lenny main

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
# apt-get update
カーネルの導入

Ubuntuとは名前が違うので、最新にするためlinux-image-2.6-686を導入します。 もしWRAPにするのなら-486にしてください。

# apt-get install linux-image-2.6-686

2010/02/24追記:
ここでは質問が画面上に出力されるので、次のように選択します。
「Create a symbolic link to the current kernel image? 」にはYes
「Abort initrd kernel image installation?」にはNo

kernel-img.confファイルを事前に準備しておきます。

# vi /etc/kernel-img.conf

/etc/kernel-img.conf

# Kernel Image management overrides
# See kernel-img.conf(5) for details
do_symlinks = Yes
do_bootloader = no
do_initrd = yes
postinst_hook = update-grub
postrm_hook   = update-grub
grub周りの設定
# apt-get install grub
# vi /boot/grub/menu.lst

/boot/grub/menu.lstファイルの内容

serial --speed=38400
terminal serial
##
default         0
timeout         10
##
title           Debian lenny
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 console=ttyS0,38400n8
initrd          /boot/initrd.img-2.6.26-2-686
savedefault

2010/02/24追記:
menu.lstファイルに書かれている"vmlinuz-*"、"initrd.img-*"が実際に存在している事を確認します。
例えば、次のようなコマンドで/bootで始まるファイルを抜き出して存在するかどうか、lsコマンドでチェックできます。

# tr ' ' '\n' <  /boot/grub/menu.lst | grep boot | xargs ls

成功した場合の出力例

/boot/initrd.img-2.6.26-2-686  /boot/vmlinuz-2.6.26-2-686

失敗した場合の出力例(-486なカーネルをインストールした場合)

ls: cannot access /boot/vmlinuz-2.6.26-2-686: No such file or directory
ls: cannot access /boot/initrd.img-2.6.26-2-686: No such file or directory
シリアル端末周りの設定

inittabファイルを編集します。tty[1-6]を起動する行をコメントアウトし、ttyS0の行のコメントを外します。 ttyS0の通信速度は38400に変更します。

# vi /etc/inittab

/etc/inittabファイル抜粋

...
#1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
...
T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100
...
fstabファイルの編集

起動時に'/'がみつけられないと起動できないので、fstabファイルを作成しておきます。

# vi /etc/fstab

/etc/fstabファイル全体

/dev/hda1 / ext3 defaults,relatime 0 0
proc /proc proc defaults 0 0
USB経由での作業終了

ここまではデスクトップにUSBカードリーダを接続して作業しました。 ここから先はalixで起動し、シリアル経由で接続して作業を進めます。

# exit
$ sudo umount /mnt/cf

umountコマンドが成功してからCFカードを引き抜き、alixに入れて電源を接続します。

シリアル経由でのAlixでのセットアップ作業

まずはシリアル端末を使って、ネットワークへの接続と必要なパッケージの導入などを行なっていきます。

2010/02/24追記:
この中でinterfacesファイルを作成する作業はCFカードをマウントしてファイルを編集することができます。
その他の作業もあらかじめ行なっておく事は可能ですが、面倒な状況になりそうなのでAlix側で作業を行なっています。

ネットワークへの接続

interfacesファイルを編集します。

# vi /etc/network/interfaces

/etc/network/interfacesファイル

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 192.168.10.10
  netmask 255.255.255.0
  gateway 192.168.10.1

システムを再起動するか、ifupでインタフェースを起動します。

# ifup lo
# ifup eth0
遠隔操作に必要なパッケージの導入

openssh-serverとsudoの準備をします。

# apt-get install openssh-server sudo

sudoは設定ファイルを編集しますが、必ずvisudoコマンドを使います。 手動でsudoersファイルを編集してはいけません。 また、これは状況によりますが、ここではroot権限のみを与えますが、パスワード無しでの操作は許可しないようにします。

# visudo

visudoで追加する設定

%sudo ALL=ALL
作業用IDの作成
# useradd -G sudo -m user01
# passwd user01
シリアル経由での作業完了

ここまでネットワーク経由でのsshログインができるようになったので、 これ以降の作業はSSH経由で行ないます。

SSH経由でのalix設定作業

パッケージの更新

更新が終り次第、システムを再起動します。

$ sudo apt-get dist-upgrade
$ sudo /sbin/shutdown -r now

再度ログインし、作業を続けます。

時刻関連の修正

locale, timezone, ntpと日付、時刻に関連する変更作業を行ないます。 まずは時刻をUTCからJSTへ変更します。

$ sudo rm /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Japan /etc/localtime

続いてlocale周りの修正を行ないます。

$ sudo apt-get install locales
$ sudo /usr/sbin/dpkg-reconfigure locales

画面にメニューが表われるので、ja_JP.UTF-8を選択します。 デフォルトのlocaleはNoneを選択します。

最後にntpの設定です。 LANの中に自前のntpサーバー(192.168.1.2)があるので、これを指定します。

$ sudo apt-get install ntpdate openntpd

/etc/default/ntpdateファイル

...
NTPDATE_USE_NTP_CONF=no
...
NTPSERVERS="192.168.1.2 ntp.ring.gr.jp"
...

ntp.confファイルは設定を全てコメントアウトし、下記の1行だけを加えます。

/etc/openntpd/ntpd.conf

...
server 192.168.1.2
...

/etc/default/openntpd

DAEMON_OPTS="-s"
ホスト名の変更

適当な名前をつけて/etc/hostnameに1行で書きますが、sudoが逆引きできるように、(例えば"lenny"といった)名前を/etc/hostsに登録しておきます。

$ sudo vi /etc/hostanme

/etc/hostnameファイル

lenny
$ sudo vi /etc/hosts

/etc/hostsファイル

127.0.0.1 localhost lenny
::1 localhost lenny

grubで使っている/boot/grub/menu.lstを編集します。

$ sudo /usr/sbin/update-grub
$ sudo vi /boot/grub/menu.lst

/boot/grub/menu.lstファイルの変更個所の抜粋

...
default         1
...
# kopt=root=/dev/hda1 console=ttyS0,38400n8
...

変更した内容が反映されるように再度update-grubコマンドを実行します。

$ sudo /usr/sbin/udpate-grub

kernel行の最後に追加したconsole=ttyS0,38400n8が書かれている事を確認します。

さいごに

おおよそここに挙げたような設定で、lennyを使うための土台はできるはずです。

繰り返しの作業が嫌な場合には、ここでddコマンドを使ってセットアップしたイメージを保存しておきましょう。 同じくddで同容量の別のCFカードにコピーすれば、すぐに使えるようになります。

$ sudo dd if=/dev/sdg of=lenny_cf.img bs=512

0 件のコメント: