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