Jan 21, 2004
onlsbc1, ネットワークブートシステムの検討
--- ネットワークブート #8
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(http://www-online.kek.jp/~inoue/para-CAMAC/
Work/SBC-Linux28.html)
高エネルギー加速器研究機構
素粒子原子核研究所
物理、オンライングループ
井上 栄二
目的
SBC-Linux7.htmlでの作業により、ネットワークブートによるディスクレス
システムの基本的な部分が動作できることを確認した。 ここでは、起動用
の装置としてコンパクトフラッシュを使った場合について検討する。
項目
(1). コンパクトフラッシュ上にGRUBをインストール
(1-1). コンパクトフラッシュのイニシャライズ
(1-2). ファイルシステムの作成
(1-3). GRUBのインストール
(2). GRUBの起動
--------------------------------------------------------------------
(1). コンパクトフラッシュ上にGRUBをインストール
onlsbc1 にセットしてあるコンパクトフラッシュに、ネットワークブート対応の
GRUB をインストールする。
(1-1). コンパクトフラッシュのイニシャライズ
コンパクトフラッシュをパーティショニング、ファイルシステム作成してから
GRUB ファイルをコピーする。 作業は onlsbc1 のディスクレスシステム上で行
うことにする。
root@onlsbc1:/home/inoue# fdisk -l
ディスク /dev/hdc: ヘッド 16, セクタ 63, シリンダ 993
ユニット = シリンダ数 of 1008 * 512 バイト
デバイス ブート 始点 終点 ブロック ID システム
/dev/hdc1 * 1 993 500440+ 83 Linux
ディスク /dev/hda: ヘッド 255, セクタ 63, シリンダ 4864
ユニット = シリンダ数 of 16065 * 512 バイト
デバイス ブート 始点 終点 ブロック ID システム
/dev/hda1 * 1 69 554211 83 Linux
/dev/hda2 70 1000 7478257+ 83 Linux
/dev/hda3 1001 1039 313267+ 82 Linux スワップ
/dev/hda4 1040 4864 30724312+ f Win95 拡張領域 (LBA)
/dev/hda5 1040 2364 10643031 83 Linux
/dev/hda6 2365 3589 9839781 83 Linux
/dev/hda7 3590 4864 10241406 83 Linux
root@onlsbc1:/home/inoue#
root@onlsbc1:/home/inoue# fdisk /dev/hdc
コマンド (m でヘルプ): m
コマンドの動作
a ブート可能フラグをつける
b bsd ディスクラベルを編集する
c dos 互換フラグをつける
d 領域を削除する
l 既知の領域タイプをリスト表示する
m このメニューを表示する
n 新たに領域を作成する
o 新たに空の DOS 領域テーブルを作成する
p 領域テーブルを表示する
q 変更を保存せずに終了する
s 空の Sun ディスクラベルを作成する
t 領域のシステム ID を変更する
u 表示/項目ユニットを変更する
v 領域テーブルを照合する
w テーブルをディスクに書き込み、終了する
x 特別な機能 (エキスパート専用)
コマンド (m でヘルプ): p
ディスク /dev/hdc: ヘッド 16, セクタ 63, シリンダ 993
ユニット = シリンダ数 of 1008 * 512 バイト
デバイス ブート 始点 終点 ブロック ID システム
/dev/hdc1 * 1 993 500440+ 83 Linux
コマンド (m でヘルプ): d
領域番号 (1-4): 1
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-993, 初期値 1):
初期値 1 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-993, 初期値 993)
:
初期値 993 を使います
コマンド (m でヘルプ): w
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
root@onlsbc1:/home/inoue#
root@onlsbc1:/home/inoue# fdisk /dev/hdc
コマンド (m でヘルプ): p
ディスク /dev/hdc: ヘッド 16, セクタ 63, シリンダ 993
ユニット = シリンダ数 of 1008 * 512 バイト
デバイス ブート 始点 終点 ブロック ID システム
/dev/hdc1 1 993 500440+ 83 Linux
コマンド (m でヘルプ):
root@onlsbc1:/home/inoue#
(1-2). ファイルシステムの作成
root@onlsbc1:/home/inoue# mke2fs /dev/hdc1
mke2fs 1.27 (8-Mar-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
125488 inodes, 500440 blocks
25022 blocks (5.00%) reserved for the super user
First data block=1
62 block groups
8192 blocks per group, 8192 fragments per group
2024 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
root@onlsbc1:/home/inoue#
(1-3). GRUBのインストール
root@onlsbc1:/home/inoue# mount -t ext2 /dev/hdc1 /mnt
root@onlsbc1:/home/inoue# df -k
Filesystem 1k-blocks Used Available Use% Mounted on
130.87.153.112:/tftpboot/130.87.153.3
14278840 1879432 11674076 14% /
130.87.153.112:/usr 14278840 1879432 11674080 14% /usr
130.87.153.112:/home 14278840 1879432 11674080 14% /home
/dev/hdc1 484602 13 459567 1% /mnt
root@onlsbc1:/home/inoue#
root@onlsbc1:/home/inoue# mkdir -p /mnt/boot/grub
root@onlsbc1:/home/inoue# ls -lR /mnt
/mnt:
合計 13
drwxr-xr-x 3 root root 1024 1月 21 09:49 boot
drwx------ 2 root root 12288 1月 21 09:37 lost+found
/mnt/boot:
合計 1
drwxr-xr-x 2 root root 1024 1月 21 09:49 grub
/mnt/boot/grub:
合計 0
/mnt/lost+found:
合計 0
root@onlsbc1:/home/inoue#
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage1# pwd
/home/inoue/GRUB/grub-0.93/stage1
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage1# ls -l
合計 56
-rw-r--r-- 1 inoue inoue 9117 1月 14 11:00 Makefile
-rw-r--r-- 1 inoue inoue 377 9月 8 2002 Makefile.am
-rw-r--r-- 1 inoue inoue 8674 11月 30 2002 Makefile.in
-rwxr-xr-x 1 inoue inoue 512 1月 14 11:04 stage1
-rw-r--r-- 1 inoue inoue 9449 9月 8 2002 stage1.S
-rwxr-xr-x 1 inoue inoue 2287 1月 14 11:04 stage1.exec
-rw-r--r-- 1 inoue inoue 2413 9月 8 2002 stage1.h
-rw-r--r-- 1 inoue inoue 2156 1月 14 11:04 stage1.o
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage1#
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage1# cp stage1 /mnt/boot/grub
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage1#
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage2# pwd
/home/inoue/GRUB/grub-0.93/stage2
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage2# ls
Makefile libgrub_a-fsys_minix.o
Makefile.am libgrub_a-fsys_reiserfs.o
Makefile.in libgrub_a-fsys_vstafs.o
apic.h libgrub_a-fsys_xfs.o
apm.S libgrub_a-gunzip.o
asm.S libgrub_a-md5.o
bios.c libgrub_a-serial.o
boot.c libgrub_a-stage2.o
builtins.c libgrub_a-terminfo.o
char_io.c libgrub_a-tparm.o
cmdline.c mb_header.h
common.c mb_info.h
console.c md5.c
defs.h md5.h
dir.h minix_stage1_5
disk_inode.h minix_stage1_5.exec
disk_inode_ffs.h minix_stage1_5_exec-asm.o
disk_io.c minix_stage1_5_exec-bios.o
diskless minix_stage1_5_exec-char_io.o
diskless.exec minix_stage1_5_exec-common.o
diskless_exec-asm.o minix_stage1_5_exec-disk_io.o
diskless_exec-bios.o minix_stage1_5_exec-fsys_minix.o
diskless_exec-boot.o minix_stage1_5_exec-stage1_5.o
diskless_exec-builtins.o minix_stage1_5_exec-start.o
diskless_exec-char_io.o nbgrub
diskless_exec-cmdline.o nbi.h
diskless_exec-common.o nbloader
diskless_exec-console.o nbloader.S
diskless_exec-disk_io.o nbloader.exec
diskless_exec-fsys_ext2fs.o nbloader_exec-nbloader.o
diskless_exec-fsys_fat.o pc_slice.h
diskless_exec-fsys_ffs.o pre_stage2
diskless_exec-fsys_jfs.o pre_stage2.exec
diskless_exec-fsys_minix.o pre_stage2_exec-asm.o
diskless_exec-fsys_reiserfs.o pre_stage2_exec-bios.o
diskless_exec-fsys_vstafs.o pre_stage2_exec-boot.o
diskless_exec-fsys_xfs.o pre_stage2_exec-builtins.o
diskless_exec-gunzip.o pre_stage2_exec-char_io.o
diskless_exec-hercules.o pre_stage2_exec-cmdline.o
diskless_exec-md5.o pre_stage2_exec-common.o
diskless_exec-serial.o pre_stage2_exec-console.o
diskless_exec-smp-imps.o pre_stage2_exec-disk_io.o
diskless_exec-stage2.o pre_stage2_exec-fsys_ext2fs.o
diskless_exec-terminfo.o pre_stage2_exec-fsys_fat.o
diskless_exec-tparm.o pre_stage2_exec-fsys_ffs.o
diskless_size.h pre_stage2_exec-fsys_jfs.o
e2fs_stage1_5 pre_stage2_exec-fsys_minix.o
e2fs_stage1_5.exec pre_stage2_exec-fsys_reiserfs.o
e2fs_stage1_5_exec-asm.o pre_stage2_exec-fsys_vstafs.o
e2fs_stage1_5_exec-bios.o pre_stage2_exec-fsys_xfs.o
e2fs_stage1_5_exec-char_io.o pre_stage2_exec-gunzip.o
e2fs_stage1_5_exec-common.o pre_stage2_exec-hercules.o
e2fs_stage1_5_exec-disk_io.o pre_stage2_exec-md5.o
e2fs_stage1_5_exec-fsys_ext2fs.o pre_stage2_exec-serial.o
e2fs_stage1_5_exec-stage1_5.o pre_stage2_exec-smp-imps.o
e2fs_stage1_5_exec-start.o pre_stage2_exec-stage2.o
fat.h pre_stage2_exec-terminfo.o
fat_stage1_5 pre_stage2_exec-tparm.o
fat_stage1_5.exec pxegrub
fat_stage1_5_exec-asm.o pxeloader
fat_stage1_5_exec-bios.o pxeloader.S
fat_stage1_5_exec-char_io.o pxeloader.exec
fat_stage1_5_exec-common.o pxeloader_exec-pxeloader.o
fat_stage1_5_exec-disk_io.o reiserfs_stage1_5
fat_stage1_5_exec-fsys_fat.o reiserfs_stage1_5.exec
fat_stage1_5_exec-stage1_5.o reiserfs_stage1_5_exec-asm.o
fat_stage1_5_exec-start.o reiserfs_stage1_5_exec-bios.o
ffs_stage1_5 reiserfs_stage1_5_exec-char_io.o
ffs_stage1_5.exec reiserfs_stage1_5_exec-common.o
ffs_stage1_5_exec-asm.o reiserfs_stage1_5_exec-disk_io.o
ffs_stage1_5_exec-bios.o reiserfs_stage1_5_exec-fsys_reiserfs.o
ffs_stage1_5_exec-char_io.o reiserfs_stage1_5_exec-stage1_5.o
ffs_stage1_5_exec-common.o reiserfs_stage1_5_exec-start.o
ffs_stage1_5_exec-disk_io.o serial.c
ffs_stage1_5_exec-fsys_ffs.o serial.h
ffs_stage1_5_exec-stage1_5.o setjmp.S
ffs_stage1_5_exec-start.o shared.h
filesys.h size_test
freebsd.h smp-imps.c
fs.h smp-imps.h
fsys_ext2fs.c stage1_5.c
fsys_fat.c stage2
fsys_ffs.c stage2.c
fsys_jfs.c stage2_size.h
fsys_minix.c start
fsys_reiserfs.c start.S
fsys_vstafs.c start.exec
fsys_xfs.c start_exec-start.o
gunzip.c term.h
hercules.c terminfo.c
hercules.h terminfo.h
i386-elf.h tparm.c
imgact_aout.h tparm.h
jfs.h vstafs.h
jfs_stage1_5 vstafs_stage1_5
jfs_stage1_5.exec vstafs_stage1_5.exec
jfs_stage1_5_exec-asm.o vstafs_stage1_5_exec-asm.o
jfs_stage1_5_exec-bios.o vstafs_stage1_5_exec-bios.o
jfs_stage1_5_exec-char_io.o vstafs_stage1_5_exec-char_io.o
jfs_stage1_5_exec-common.o vstafs_stage1_5_exec-common.o
jfs_stage1_5_exec-disk_io.o vstafs_stage1_5_exec-disk_io.o
jfs_stage1_5_exec-fsys_jfs.o vstafs_stage1_5_exec-fsys_vstafs.o
jfs_stage1_5_exec-stage1_5.o vstafs_stage1_5_exec-stage1_5.o
jfs_stage1_5_exec-start.o vstafs_stage1_5_exec-start.o
libgrub.a xfs.h
libgrub_a-boot.o xfs_stage1_5
libgrub_a-builtins.o xfs_stage1_5.exec
libgrub_a-char_io.o xfs_stage1_5_exec-asm.o
libgrub_a-cmdline.o xfs_stage1_5_exec-bios.o
libgrub_a-common.o xfs_stage1_5_exec-char_io.o
libgrub_a-disk_io.o xfs_stage1_5_exec-common.o
libgrub_a-fsys_ext2fs.o xfs_stage1_5_exec-disk_io.o
libgrub_a-fsys_fat.o xfs_stage1_5_exec-fsys_xfs.o
libgrub_a-fsys_ffs.o xfs_stage1_5_exec-stage1_5.o
libgrub_a-fsys_jfs.o xfs_stage1_5_exec-start.o
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage2#
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage2# cp stage2 /mnt/boot/grub
root@onlsbc1:/home/inoue/GRUB/grub-0.93/stage2#
root@onlsbc1:/home/inoue/GRUB/grub-0.93# pwd
/home/inoue/GRUB/grub-0.93
root@onlsbc1:/home/inoue/GRUB/grub-0.93# cp ./docs/menu.lst /mnt/boot/grub
root@onlsbc1:/home/inoue/GRUB/grub-0.93# ls -l /mnt/boot/grub
合計 124
-rw-r--r-- 1 root root 1256 1月 21 09:55 menu.lst
-rwxr-xr-x 1 root root 512 1月 21 09:52 stage1
-rw-r--r-- 1 root root 122144 1月 21 09:54 stage2
root@onlsbc1:/home/inoue/GRUB/grub-0.93#
root@onlsbc1:/home/inoue/GRUB/grub-0.93# vi /mnt/boot/grub/menu.lst
:
# Boot automatically after 30 secs.
#timeout 30
timeout 7
# By default, boot the first entry.
default 0
# Fallback to the second entry.
fallback 1
# CompactFlash: onlsbc1 Network boot
title Test3: Boot from network with bootp [130.87.153.3/bzImage]
bootp
root (nd)
kernel /tftpboot/130.87.153.3/bzImage nfsroot=130.87.153.112:/tftpboot/130.87.15
3.3 ip=bootp
:
/mnt/boot/grub/menu.lst: 68 lines, 1479 characters
root@onlsbc1:/home/inoue/GRUB/grub-0.93#
root@onlsbc1:/home/inoue/GRUB/grub-0.93/grub# pwd
/home/inoue/GRUB/grub-0.93/grub
root@onlsbc1:/home/inoue/GRUB/grub-0.93/grub# ls -l
合計 548
-rw-r--r-- 1 inoue inoue 9552 1月 14 11:00 Makefile
-rw-r--r-- 1 inoue inoue 493 6月 11 2002 Makefile.am
-rw-r--r-- 1 inoue inoue 9437 11月 30 2002 Makefile.in
-rw-r--r-- 1 inoue inoue 26031 12月 3 2002 asmstub.c
-rw-r--r-- 1 inoue inoue 54308 1月 14 11:04 asmstub.o
-rwxr-xr-x 1 inoue inoue 396381 1月 14 11:04 grub
-rw-r--r-- 1 inoue inoue 6858 6月 11 2002 main.c
-rw-r--r-- 1 inoue inoue 32524 1月 14 11:04 main.o
root@onlsbc1:/home/inoue/GRUB/grub-0.93/grub#
root@onlsbc1:/home/inoue/GRUB/grub-0.93/grub# ./grub
Probing devices to guess BIOS drives. This may take a long time.
GRUB version 0.93 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root (hd1,0)
root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... no
Running "install /boot/grub/stage1 (hd1) /boot/grub/stage2 p /boot/grub/menu.ls
t "... succeeded
Done.
grub> quit
quit
root@onlsbc1:/home/inoue/GRUB/grub-0.93/grub#
(2). GRUBの起動
2.5"IDEハードディスクをはずして、コンパクトフラッシュのみをつないで
onlsbc1をリブートする。
# /sbin/shutdown -h now
onlsun3[43]% ssh onlsbc1
inoue@onlsbc1's password:
Linux onlsbc1 2.4.18 #1 2004年 1月 9日 金曜日 15:25:22 JST i586 unknown
Most of the programs included with the Debian GNU/Linux system are
freely redistributable; the exact distribution terms for each program
are described in the individual files in /usr/share/doc/*/copyright
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.
Last login: Wed Jan 21 10:57:44 2004 from onlsun3.kek.jp
inoue@onlsbc1:~$
root@onlsbc1:/home/inoue# mount -t ext2 /dev/hdc1 /mnt
root@onlsbc1:/home/inoue# df -k
Filesystem 1k-blocks Used Available Use% Mounted on
130.87.153.112:/tftpboot/130.87.153.3
14278840 1881304 11672204 14% /
130.87.153.112:/usr 14278840 1881304 11672208 14% /usr
130.87.153.112:/home 14278840 1881304 11672208 14% /home
/dev/hdc1 484602 139 459441 1% /mnt
root@onlsbc1:/home/inoue# cd /mnt
root@onlsbc1:/mnt# ls -lR
.:
合計 13
drwxr-xr-x 3 root root 1024 1月 21 09:49 boot
drwx------ 2 root root 12288 1月 21 09:37 lost+found
./boot:
合計 1
drwxr-xr-x 2 root root 1024 1月 21 09:55 grub
./boot/grub:
合計 124
-rw-r--r-- 1 root root 1479 1月 21 10:00 menu.lst
-rwxr-xr-x 1 root root 512 1月 21 09:52 stage1
-rw-r--r-- 1 root root 122144 1月 21 09:54 stage2
./lost+found:
合計 0
root@onlsbc1:/mnt# du -k
12 ./lost+found
125 ./boot/grub
126 ./boot
139 .
root@onlsbc1:/mnt#
ok. コンパクトフラッシュ上のGRUBからの起動で、ディスクレスシステムは
正常に立ち上がった。 クライアント側のコンパクトフラッシュには 139KB
サイズの grubのみが配置してある。
---xxxx