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