Install NetBSD into USL-5P

用意するもの

Install用CompactFlashを用意

まず、 Install用の disk imageをdownloadしてCompactFlashに書き込みます。 Linuxや*BSDを使っている人は、以下の様にしてddを使ってCompactFlashへ書き 込みます。間違えてHDDに書いてしまわない様に気をつけてください。

Windowsを使っている人はrawriteを使えば書き込めるんじゃないかな…

# gzip -d usl5p-128M_5.1.2.gz
# dd if=usl5p-128M_5.1.2 of=/dev/COMPACTFLASH bs=512
#

Install用CompactFlashを用意できたら、USL-5Pに取り付けてください。

なお、このinstall用のdisk imageの作り方は、縮小版NetBSDの作成を参照してください。

Serial consoleの用意

起動

Serial consoleがある場合

Serial consoleを取り付けて電源を入れます。しばらくすると、以下のように "login:"が表示されて止まるはずですので、"root"で loginしてください。

SH IPL+g version 0.9, Copyright (C) 2000 Free Software Foundation, Inc.

This software comes with ABSOLUTELY NO WARRANTY; for details type `w'.
This is free software, and you are welcome to redistribute it under
certain conditions; type `l' for details.

2002/09/09 Making.  2004/09/08 I-O DATA NSU Update.
266:133:33 on base clock 22.22MHz and SDRAM 4 burst. CF boot.

PCIC initialization done.
MASTER:48bit LBA mode non support
Disk drive detected: KTC CF YUAN1026 KTC CF
LBA: 001EFE10
DiskSize: *******Byte
PIO MODE1
Set Transfer Mode result: 51
> b
Set Transfer Mode result: 51
Initialize Device Parameters result: 50
IDLE result: 50

NetBSD/landisk ffsv1 Primary Bootstrap

...

NetBSD/landisk (usl5p.example.com) (console)

login: root

...

usl5p#

Serial console無しの場合(telnet使用)

Serial consoleがない場合、telnetを使ってloginします。Install用の CompactFlashで起動すると、USL-5Pには192.168.1.100というIPが割り当てられ ます。

USL-5PにEthernet cableを取り付けて電源をいれ、しばらく(1分程度)待ちます。 その後、192.168.1.100にtelnetすると以下のようにloginの表示が出るので、 "root"でloginしてください。

NetBSD/landisk (usl5p.example.com) (ttyp0)

login: root

...

usl5p#

本番用CompactFlashの取り付け

Install用CompactFlashでUSL-5Pを起動したら、本番用のCompactFlashをUSB card readerに刺して、USL-5Pへ取り付けてください。
以下のような表示がでるはずです。

umass0 at uhub2 port 1 configuration 1 interface 0
umass0: Genesys Logic USB Storage, rev 2.00/96.01, addr 2
umass0: using SCSI over Bulk-Only
scsibus0 at umass0: 2 targets, 4 luns per target
sd0 at scsibus0 target 0 lun 0: <Generic, STORAGE DEVICE, 9601> disk removable
sd0: fabricating a geometry
sd0: 1943 MB, 1943 cyl, 64 head, 32 sec, 512 bytes/sect x 3980592 sectors
sd1 at scsibus0 target 0 lun 1: <Generic, STORAGE DEVICE, 9601> disk removable
sd1: drive offline
sd2 at scsibus0 target 0 lun 2: <Generic, STORAGE DEVICE, 9601> disk removable
sd2: drive offline
sd3 at scsibus0 target 0 lun 3: <Generic, STORAGE DEVICE, 9601> disk removable
sd3: drive offline

上記は私の手持ちのcard readerの例で、 "sd0: 1943 MB, 1943 cyl, 64 head, 32 sec, 512 bytes/sect x 3980592 sectors" というのがCompactFlashです。sd0として扱われることがわかります。 Card readerによってはsd1だったりsd2だったりしますので、これ以下の説明で sd0やrsd0になっているところをsd1やrsd1と適宜読み替えてください。

なお、sd0というのは、SCSI-disk用のdeviceです。USB接続の記憶装置は NetBSDではSCSI-diskとして扱われます。

MBRの書き込み

まず最初に、本番用CompactFlashのMaster boot recordを書き込みます。

# fdisk -i /dev/rsd0d

We haven't written the MBR back to disk yet.  This is your last chance.
Should we write new partition table? [n] y
#

NetBSD disklabelを作成

CompactFlashにNetBSD用のdisklabelを用意します。disklabelはBSDで partitionを作るための物で、MS-DOS/Windowsなどのfdiskに相当するものだと 思ってください。
deviceの意味は以下の通りです。

device捕足
/dev/sd0d CompactFlash全体。/dev/sd0というdeviceは存在せず、sd0dがCompactFlash全体を表す。
/dev/sd0c NetBSDが扱うdisklabel全体がsd0cになる。sd0cの中にsd0a、sd0b、sd0e…のpartitionができる。
/dev/sd0a /dev/sd0c内の1つめのpartition。今回はroot file-systemとして使う。
/dev/sd0b /dev/sd0c内の2つめpartition。今回はswapとして使う。
/dev/sd0e /dev/sd0c内の3つめ以降はsd0e、sd0fと続いていく。今回は使わない。

あらかじめ以下のようにsector数をまとめておくと楽です。今回は、2GiBの CompactFlashに、約1.9GiBの root partition と、64MiBの swap partitionを 用意します。

devstart(sectors) size (sectors)size (MiB) 備考
sd0a03849520 1890root
sd0b3849520131072 64swap
sd0c03980592 1945BSD disklabel全体
sd0d03980592 1945CompactFlash全体

disklabelを実行して、/dev/sd0aから/dev/sd0dを用意します。実行例は以下の ようになります。

# disklabel -I -i /dev/rsd0d
partition> d
Filesystem type [?] [unused]:
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [1943.65c, 3980592s, 1943.65M]:$
partition> c
Filesystem type [?] [unused]:
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [0c, 0s, 0M]: $
partition> a 
Filesystem type [?] [4.2BSD]:
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [1879.65c, 3849520s, 1879.65M]: 3849520s
partition> b
Filesystem type [?] [unused]: swap
Start offset ('x' to start after partition 'x') [1879.65c, 3849520s, 1879.65M]: a
Partition size ('$' for all remaining) [64c, 131072s, 64M]: $
partition> P
5 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:   3849520         0     4.2BSD      0     0     0  # (Cyl.      0 -   1879*)
 b:    131072   3849520       swap                     # (Cyl.   1879*-   1943*)
 c:   3980592         0     unused      0     0        # (Cyl.      0 -   1943*)
 d:   3980592         0     unused      0     0        # (Cyl.      0 -   1943*)
partition> W
Label disk [n]? y
Label written
partition> Q
#

newfs

newfsを使って、file systemを作ります。いわゆる、format作業です。

# newfs -m 5 -b 32768 -f 4096 /dev/rsd0a
/dev/rsd0a: 1879.6MB (3849520 sectors) block size 16384, fragment size 2048
        using 11 cylinder groups of 170.89MB, 10937 blks, 21632 inodes.
super-block backups (for fsck_ffs -b #) at:
32, 350016, 700000, 1049984, 1399968, 1749952, 2099936, 2449920, 2799904,
..............................................................................
#

bootloaderを書き込み

installbootで、bootloaderを書き込みます。

# installboot -v /dev/rsd0a /usr/mdec/bootxx_ffsv1
File system:         /dev/rsd0a
Primary bootstrap:   mdec/bootxx_ffsv1
# mount -o log /dev/sd0a /mnt
# cp /usr/mdec/boot /mnt
#

root filesystemを用意

最低限、kern-GENERIC.tar.bz2、etc.tar.bz2、base.tar.bz2を展開すれば動く物ができます。 Install用CompactFlashの/sets/に前記の3つのfileが入っているので、以下の ようにして展開します。Compact Flashの容量に余裕があれば、man.tar.bz2、 misc.tar.bz2、text.tar.bz2なども展開しておくと便利です。

# cd /mnt
# tar xfvjp /sets/kern-GENERIC.tar.bz2
./netbsd
tar: ustar vol 1, 1 files, 2097152 bytes read, 0 bytes written in 3 secs (699050 bytes/sec)
# tar xfvjp /sets/etc.tar.bz2 
...
tar: ustar vol 1, 299 files, 1687552 bytes read, 0 bytes written in 6 secs (281258 bytes/sec)
# tar xfvjp /sets/base.tar.bz2 
...
tar: ustar vol 1, 4820 files, 69664768 bytes read, 0 bytes written in 222 secs (313805 bytes/sec)
#

最後に、以下のようにして/devを用意します。"./MAKEDEV all"で 必要なもののほとんどはできてしまいます。この作業は少し(3分ぐらい)かか りますので、気長に待ちましょう。
追加でUSL-5P電源ボタン検知用の/dev/powerも作ります。

# cd /mnt/dev
# ./MAKEDEV all
# mknod -m 640 power c 55 2
#

起動するために最低限必要な設定

NetBSDを起動させるために必要な設定を書き換えます。必要な設定は、 /etc/fstabと/etc/rc.confです。編集は、

# vi /mnt/etc/fstab

のようにして行います。編集するのは"/mnt/etc/"以下で、間違って install用CompactFlashの設定(/etc/以下)を書き換えないように気をつけてく ださい。

とりあえずinstall用CompactFlashと同じ設定で起動できればよいなら、以下の ようにして/etc/fstab、/etc/rc.confを複製するだけでも起動できます。

# cp /etc/fstab /mnt/etc
# cp /etc/rc.conf /mnt/etc

/etc/fstab

file systemの一覧です。USB card readerに刺しているときは/dev/sd0aとして 扱われましたが、USL-5Pの基盤につけた場合は/dev/wd0aとして扱われます。

/dev/wd0a  /         ffs    rw,log,noatime  1 1
/dev/wd0b  none      swap   sw              0 0
ptyfs      /dev/pts  ptyfs  rw              0 0

/etc/rc.conf

とりあえず、以下の内容を張り付けておけば動きます。telnetを受け付ける必 要がなければ、"inetd=YES"は"inetd=NO"の方が良いでしょ う。

# Load the defaults in from /etc/defaults/rc.conf (if it's readable).
# These can be overridden below.
#
if [ -r /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
fi

# If this is not set to YES, the system will drop into single-user mode.
#
rc_configured=YES


hostname=usl5p.example.com
defaultroute=192.168.1.254
ifconfig_re0="inet 192.168.1.1 netmask 255.255.255.0"
# dhclient=YES
# dhclient_flags="re0"

inetd=YES
nfs_client=NO
postfix=NO
sshd=NO
powerd=YES
ntpd=NO
# cron=NO
# named=YES
# no_swap=YES
# ntpdate=YES
# ntpdate_hosts="ntp.example.com"

update_motd=NO
ccd=NO
raidframe=NO
cgd=NO
quota=NO

# for pkgsrc
lighttpd=YES
openntpd=YES
snmptrapd=YES

telnetを受け付けるための追加設定

Serial consoleを繋がずにtelnetでloginしたい場合は /etc/inetd.confを修正してください。 Install用CompactFlashには telentを受け付けるように修正済のものが入っているので、単に複製するだけ でも可です。

# cp /etc/inetd.conf /mnt/etc

/etc/inetd.conf

/etc/inetd.confにはあらかじめ雛形ができています。telnetの行を探して、先 頭の"#"と"-a valid"以降を削除してください。

telnet          stream  tcp     nowait  root    /usr/libexec/telnetd    telnetd

一般userの作成

NetBSDの標準設定では、networkから直接root loginすることはできません。こ れは安全上の配慮で、Linuxなどでも同様です。
/etc/ttysの設定を書き換えることでrootでもloginできるようになりますが、 それよりも一般userをこの段階で作ってしまって、一般userでlogin->suで rootになる方が良いでしょう。
次のようにchrootして作業します。(もちろん、somegrpやsomeoneの部分は好き な名前にしてください)

# chroot /mnt

# groupadd -g 10000 somegrp
# useradd -g somegrp -u 10000 -m -s /bin/sh someone
# passwd someone
New Password: hogehoge 
Retype New Password: hogehoge 
# usermod -G wheel someone
# exit

最後の"usermod -G wheel someone"は、wheel groupにsomeoneとい うuserを追加する作業です。これを忘れると、someoneでloginはできても、su でrootになれないという悲しい思いをします。

電源off

ここまで作業したら、電源を切ってCompactFlashをUSL-5Pの基盤に差し替えま す。次のようにshutdown commandで電源が自動で切れます。もしくは、電源 button長押しでも電源offできます。

# shutdown -p now

ご意見、ご感想は、花房 真広 <webmaster@hanabusa.net>まで。メールする前にtop pageの注意書を読んでください。