カテゴリ
リンク

当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

■USB フラッシュを rootfs にするためには(起動の順序)
 玄箱PROは起動時に、 
1) NOR フラッシュから u-boot を読み込みます。
2) u-boot は、環境変数にあわせて、NAND フラッシュか、HDD から、カーネルを読み込みます。
3)カーネルは、起動時に渡されたパラメータに従って、root ファイル・システムをマウントし、 /sbin/init を実行します。
4) /sbin/init は /etc の下のいろいろなファイルを読み込みながら起動処理をしていきます。
  HDD レスにするには、2)は NAND フラッシュにカーネルを書くしかありません(u-boot を USB 対応にすれば別ですが、大変です)。root ファイル・システム(root fs)は、NAND フラッシュでも、USB フラッシュでもかまいません。 
 今回は、NAND フラッシュは変えずに、カーネル(OABI)は HDD (/dev/sda1) 上のものを利用し、 USB フラッシュを root ファイル・システムに使ってみる実験をします。 


USB flash memory

■USB フラッシュの準備
 消してもよい USB フラッシュを ext3fs でフォーマットします。
mkfs.ext3 /dev/sdb1
 USB フラッシュをマウントして、Debian 化に使った hddrootfs.tar.gz (/home にあるものとしている)を展開します。
mount /dev/sdb1 /mnt cd /mnt tar xzvf /home/hddrootfs.tar.gz
 HDD を利用しないよう etc/fstab を書き換えます。
proc            /proc           proc    defaults        0       0 
sysfs           /sys            sysfs   defaults        0       0 
devpts          /dev/pts        devpts  gid=5,mode=622  0       0 
#none           /dev/shm        tempfs  defaults        0       0 
/dev/sdb1       /               ext3    defaults        1       1 
# /dev/sda3     swap            swap    defaults        0       0 
# /dev/sda4     /home           ext3    defaults        1       1 
# /dev/mtd2     /mtd            jffs2   noauto          0       0 
# /dev/mtd3     /mtd/mnt/mtd    jffs2   noauto          0       0
 マウントを外し、TeraTerm などでシリアル・コンソールが使えるようにしておき、リブートします。
umount /mnt reboot
■u-boot での設定 
 uBoot が、<<system_bootend>> を出した次の Hit any key to stop autoboot: で何か文字を入力して起動を中断します。
hit any key to switch tftp boot. Hit any key to stop autoboot: 0 <<system_bootend>> Hit any key to stop autoboot: 0
 以下を打ち込んで、起動します。
setenv bootargs console=ttyS0,115200 root=/dev/sdb1 rootdelay=15 rw panic=5 BOOTVER=1.09 
boot
■起動の様子 
 起動の様子を以下に示します。u-boot の環境変数を設定して起動すると ``Waiting 15sec before mounting root device'' と表示され、USB flash memory が sdb として認識されています。そして ``VFS: Mounted root (ext3 filesystem).'' と root fs としてマウントされています。
hit any key to switch tftp boot. 
Hit any key to stop autoboot:  0 
<<system_bootend>> 
Hit any key to stop autoboot:  0 
Marvell>> setenv bootargs console=ttyS0,115200 root=/dev/sdb1 rootdelay=15 rw panic=5 BOOTVER=1.09 
Marvell>> boot        

Reset IDE: 
Marvell Serial ATA Adapter 
Integrated Sata device found 
  Device 0: OK 
Model: HDT722525DLA380                          Firm: V44OA9BA Ser#:       VDS41LT8D4UU5H 
            Type: Hard Disk 
                                 <略> 
Intergrated Sata device found 
scsi0 : Marvell SCSI to SATA adapter 
scsi1 : Marvell SCSI to SATA adapter 
  Vendor: Hitachi   Model: HDT722525DLA380   Rev: V44O 
  Type:   Direct-Access                      ANSI SCSI revision: 03 
SCSI device sda: 488397168 512-byte hdwr sectors (250059 MB) 
SCSI device sda: drive cache: write back 
SCSI device sda: 488397168 512-byte hdwr sectors (250059 MB) 
SCSI device sda: drive cache: write back 
 sda: sda1 sda2 sda3 sda4 
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0 
Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0,  type 0 
<略> 
MICON V2 (C) BUFFALO INC. V.1.00 installed. 
NET: Registered protocol family 2 
IP: routing cache hash table of 1024 buckets, 8Kbytes 
TCP established hash table entries: 8192 (order: 4, 65536 bytes) 
TCP bind hash table entries: 8192 (order: 3, 32768 bytes) 
TCP: Hash tables configured (established 8192 bind 8192) 
NET: Registered protocol family 1 
NET: Registered protocol family 17 
Waiting 15sec before mounting root device... 
  Vendor: BUFFALO   Model: ClipDrive         Rev: 2.00 
  Type:   Direct-Access                      ANSI SCSI revision: 02 
SCSI device sdb: 512000 512-byte hdwr sectors (262 MB) 
sdb: Write Protect is off 
sdb: assuming drive cache: write through 
ioctl_internal_command: <2 0 0 0> return code = 8000002 
   : Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
SCSI device sdb: 512000 512-byte hdwr sectors (262 MB) 
sdb: Write Protect is off 
sdb: assuming drive cache: write through 
 sdb: sdb1 
Attached scsi removable disk sdb at scsi2, channel 0, id 0, lun 0 
Attached scsi generic sg1 at scsi2, channel 0, id 0, lun 0,  type 0 
md: Autodetecting RAID arrays. 
md: autorun ... 
md: ... autorun DONE. 
ioctl_internal_command: <2 0 0 0> return code = 8000002 
   : Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
kjournald starting.  Commit interval 5 seconds 
EXT3 FS on sdb1, internal journal 
EXT3-fs: mounted filesystem with ordered data mode. 
VFS: Mounted root (ext3 filesystem). 
<略> 
Starting OpenBSD Secure Shell server: sshd. 
Starting periodic command scheduler: crond. 
Debian GNU/Linux 4.0 kurobox ttyS0      

kurobox login:
■rootdelay が肝心
 通常の HDD からの起動では rootdelay を指定しません。上の起動中のメッセージをよくみるとわかるのですが、``Waiting 15sec before mounting root device''の手前で、sda が認識されています。ところが、USB flash の場合は、認識されるまでに時間がかかるので rootdelay を指定することで認識されるのを待っているのです。rootdelay なしだと以下のように起動に失敗します。
hit any key to switch tftp boot. 
Hit any key to stop autoboot:  0 
<<system_bootend>> 
Hit any key to stop autoboot:  0 
Marvell>> setenv bootargs console=ttyS0,115200 root=/dev/sdb1 rw panic=5 BOOTVER=1.09 
Marvell>> boot        

Reset IDE: 
Marvell Serial ATA Adapter 
Integrated Sata device found 
  Device 0: OK 
Model: HDT722525DLA380                          Firm: V44OA9BA Ser#:       VDS41LT8D4UU5H 
            Type: Hard Disk 
                                         <略> 
MICON V2 (C) BUFFALO INC. V.1.00 installed. 
NET: Registered protocol family 2 
IP: routing cache hash table of 1024 buckets, 8Kbytes 
TCP established hash table entries: 8192 (order: 4, 65536 bytes) 
TCP bind hash table entries: 8192 (order: 3, 32768 bytes) 
TCP: Hash tables configured (established 8192 bind 8192) 
NET: Registered protocol family 1 
NET: Registered protocol family 17 
md: Autodetecting RAID arrays. 
md: autorun ... 
md: ... autorun DONE. 
Root-NFS: No NFS server available, giving up. 
VFS: Unable to mount root fs via NFS, trying floppy. 
VFS: Cannot open root device "sdb1" or unknown-block(2,0) 
Please append a correct "root=" boot option 
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) 
 <0>Rebooting in 5 seconds..

 カテゴリ 

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: USB フラッシュを rootfs にしてみる

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/978

コメントする

おすすめ書籍
Powered by
Movable Type 4.1