Pyon's Diary
2007-06-18 舊 平成拾玖年丁亥皐月肆日癸未 (月・曇) [長年日記]
KURO-BOX/PRO (No.13) EMモードに戻した。(U-Bootの環境變數を變更してEMモードにしたりHDD起動モードにしたり)
KUROBOX/PRO 製品仕樣書の
- Appendix A: u-boot 環境變數設定例。
を見ると環境變數を變更する事で起動をEMモード / HDD起動モードの孰れかに切換へる事が出來るみたいだが、起動後に立上がるシェルはBourne Shellなのでsetenvコマンドは存在し無い。
何處で設定するのだろうと思つてゐた。
可成り惱んで以下の頁を讀んで起動途中に切換へる事を知つた。
U-Bootの環境變數を確認する。
早速確認してみた。
POWERスイッチを入れるとシリアル・コンソールに次々とメッセージが出力されて行く。
Orion1 CPU = Low === KURO U-Boot. === ** LOADER ** ** KUROBOX BOARD: KURO_BOX LE (CFG_ENV_ADDR=fffff000) U-Boot 1.1.1 (Apr 10 2007 - 18:10:08) Marvell version: 1.12.1 - TINY DRAM CS[0] base 0x00000000 size 128MB DRAM Total size 128MB [256kB@fffc0000] Flash: 256 kB Addresses 20M - 0M are saved for the U-Boot usage. Mem malloc Initialization (20M - 16M): Done NAND: 256 MB Soc: 88F5182 A2 CPU: ARM926 (Rev 0) running @ 500Mhz Orion 1 streaming disabled SysClock = 250Mhz , TClock = 166Mhz USB 0: host mode USB 1: host mode PCI 0: PCI Express Root Complex Interface PCI 1: Conventional PCI, speed = 33000000 Net: egiga0 [PRIME] Using 88E1118 phy hit any key to switch tftp boot. Hit any key to stop autoboot: 0 <<system_bootend>> Hit any key to stop autoboot: 0 ← 此處で何かキーを叩く。 Marvell>> ← プロンプトが出力される。
取敢へずhelpと打つてみた。
色々コマンドが在る模樣。
Marvell>> help ? - alias for 'help' base - print or set address offset boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' boot end . bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol bubt - Burn an image on the Boot Flash. cmp - memory compare cp - memory copy cpumap - Display CPU memory mapping settings. crc32 - checksum calculation date - get/set/reset date & time diskboot- boot from IDE device echo - echo args to console erase - erase FLASH memory ext2load- load binary file from a Ext2 filesystem ext2ls- list files in a directory (default /) flinfo - print FLASH memory information go - start application at address 'addr' help - print online help ide - IDE sub-system loop - infinite loop on address range md - memory display micon -command(2byte hex) -data(witin 32byte hex) mm - memory modify (auto-incrementing) mtest - simple RAM test mw - memory write (fill) nand - NAND sub-system nboot - boot from NAND device nm - memory modify (constant address) pci - list and access PCI Configuraton Space printenv- print environment variables protect - enable or disable FLASH write protection rarpboot- boot image via network using RARP/TFTP protocol reset - Perform RESET of the CPU saveenv - save environment variables to persistent storage setenv - set environment variables shutdown - Poff . tftpboot- boot image via network using TFTP protocol version - print monitor version
setenvは此處で使用する模樣。
printenvも在るので打つてみた。
Marvell>> printenv baudrate=115200 loads_echo=0 ipaddr=192.168.11.150 serverip=192.168.11.1 rootpath=/nfs/arm cpuName=926 CASset=min MALLOC_len=4 bootargs_end=:::DB88FXX81:eth0:none ethact=egiga0 ethaddr=00:16:01:A4:C4:0C buffalo_ver=BOOTVER=1.091 build_time=18:10:02 initrd=initrd.buffalo kernel=uImage.buffalo nand_uImage_offset=20000 default_initrd_addr=0x02000000 def_tftp=tftp $(default_kernel_addr) $(kernel); tftp $(default_initrd_addr) $(initrd); setenv bootargs $(bootargs_base) $(bootargs_root) rw initrd=0x02000040,20M panic=5 $(buffalo_ver); bootm $(default_kernel_addr) $(default_initrd_addr) default_kernel_addr=0x00100000 bootargs_base=console=ttyS0,115200 bootargs_root=root=/dev/sda2 rw panic=5 bootargs=console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09 bootcmd=ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr) nand_boot=no stdin=serial stdout=serial stderr=serial enaMonExt=no enaFlashBuf=yes enaCpuStream=no ethprime=egiga0 bootdelay=3 disaMvPnp=no overEthAddr=no usb0Mode=host usb1Mode=host Environment size: 1046/4092 bytes
EMモード / HDD起動モードの切換へに關はると思はれる處を抜き出してみた。
default_kernel_addr=0x00100000 bootargs_base=console=ttyS0,115200 bootargs_root=root=/dev/sda2 rw panic=5 bootargs=console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09 bootcmd=ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr) nand_boot=no
LinkStation / 玄箱をハックしよう -- HDD BootモードのU-Boot環境に書かれてゐる通り、KUROBOX/PRO 製品仕樣書のP.17 Appendix A.3: uImage(/dev/sda1)、rootfs(/dev/sda2) の場合のブート設定と微妙に異なつた。
斯樣な事に成つて了ふとFlash起動環境に戻す際にKUROBOX/PRO 製品仕樣書とLinkStation / 玄箱をハックしよう -- Flash Bootモードに戻すと何れを信じれば良いのか、自分の知識ではどちらが正しいのか判斷が附か無い。
EMモードに切換へる。
取敢へずKUROBOX/PRO 製品仕樣書の方の設定でEMモードに變更してみた。
Marvell>> setenv bootargs_root root=/dev/mtdblock2 rw Marvell>> setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_var) Marvell>> setenv uImage_block 0 Marvell>> setenv uImage_offset 0x00020000 Marvell>> setenv bootcmd 'nboot $(default_kernel_addr) $(uImage_block) $(uImage_offset); bootm $(default_kernel_addr)' Marvell>> boot
起動メッセージが出力されて途中で、
(前略) Freeing init memory: 112K --- rcStart (NANDroot) --- ===== Starting MountSystemFolders ===== mounting procfs ... [Success] (以降略)
と成つてゐたのでEMモードに成つてゐる事が確認出來た。
但し再起動するとHDD起動モードに戻つてゐた。
今度は LinkStation / 玄箱をハックしよう -- Flash Boot モードに戻すの設定でやつてみた。
Marvell>> setenv bootargs_root root=/dev/mtdblock2 rw panic=5 Marvell>> setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver) Marvell>> setenv bootcmd 'nboot $(default_kernel_addr) 0 $(nand_uImage_offset) ;setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver); bootm $(default_kernel_addr)' Marvell>> setenv nand_boot yes Marvell>> boot
此もEMモードで起動した。
但し此方も再起動するとHDDからの起動に戻つて了つた。
どちらの設定が正しい(どちらも起動するだから、どちらも正しい、と云ふ事か)のか判ら無い。
どうしたものかと思ひ「KURO Flash ブート」で見附けた
を讀んで以下の頁が在る事を知つた。
早速此乃頁に買いて在る設定と比べて見た結果、LinkStation / 玄箱をハックしよう -- Flash Bootモードに戻すの方が現實に即している模樣。
其れは其れとしてEMモードに戻す爲に毎度U-Boot環境變數を書換へるのも辛い。恆久的に戻すにはsaveenvを實行して保存すれば良いみたいなのでやつてみた。
Marvell>> setenv bootargs_root root=/dev/mtdblock2 rw panic=5 Marvell>> setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver) Marvell>> setenv bootcmd 'nboot $(default_kernel_addr) 0 $(nand_uImage_offset) ;setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver); bootm $(default_kernel_addr)' Marvell>> setenv nand_boot yes Marvell>> saveenv Saving Environment to Flash... . Un-Protected 1 sectors Erasing Flash... . Erased 1 sectors Writing to Flash... done . Protected 1 sectors Marvell>> boot
此で起動して更に再起動して見るとEMモードで起動してゐる事が確認出來た。
追記: U-Boot環境變數を變更してHDD起動環境に變更する。(2007-11-04)
既にHDD起動環境を構築濟みである場合、EMモードからHDD起動モードに戻る爲には以下の樣にU-Boot環境變數を變更すれば良い。
Marvell>> setenv bootargs_root root=/dev/sda2 rw panic=5 Marvell>> setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver) Marvell>> setenv bootcmd 'ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); bootm $(default_kernel_addr)' Marvell>> setenv set nand_boot no Marvell>> saveenv Saving Environment to Flash... . Un-Protected 1 sectors Erasing Flash... . Erased 1 sectors Writing to Flash... done . Protected 1 sectors Marvell>> boot
此乃設定はSetupDevEnv.shから採つた。
KURO-BOX/PRO (No.14) 内藏HDDのパーティション・サイズを變更する。(簡單には無理だつたが PartitionDefinition を弄つて對處した。)
EMモードに無事戻つたので内藏HDDのパーティション・サイズの變更に挑戰してみた。初期化スイッチを使用してHDD起動環境に變更すると内藏HDDに自動的にパーティションが切られるが其乃大きさは以下の通り。
Disk /dev/sda: 82.3 GB, 82348277760 bytes 255 heads, 63 sectors/track, 10011 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 7 56196 83 Linux ← 約 55 MB /dev/sda2 8 373 2939895 83 Linux ← 約 2.8 GB /dev/sda3 374 390 136552+ 82 Linux swap ← 約 133 MB /dev/sda4 391 10011 77280682+ 83 Linux ← 殘り全て。
と成つてゐる。此を以下の樣に切り直した。
Disk /dev/sda: 82.3 GB, 82348277760 bytes 255 heads, 63 sectors/track, 10011 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 32 257008+ 83 Linux ← 約 256 MB /dev/sda2 33 2523 20008957+ 83 Linux ← 約 20 GB /dev/sda3 2524 2773 2008125 82 Linux swap ← 約 2 GB /dev/sda4 2774 10011 58139235 83 Linux ← 殘り全て。
此で一旦再起動してDiskDelete.shを實行し、以下の事を確認して初期化スイッチを五秒押しゝた。
- パーティション・サイズの再確認。
- /mnt/mtd (mtd device) に以下のファイルが在る事。
- ChangeMeDevHDD (HDD パーティションを開發用に設定する爲の意思表示ファイル)
- ChangeMyUbootEnv (U-Boot の環境變數を書換へる爲の意思表示ファイル)
- hddrootfs.tar.gz (開發環境用ルートファイル)
- uImage.buffalo (カーネル)
途中で亦止まつたので、再起動してfdiskで確認すると先程切つたパーティションが綺麗さつぱり消えてゐた。
どうやら豫めパーティションが切つて在つても/usr/local/bin/PartitionDefinitionに随つて切り直される模樣。
追記: 結局。(2007-11-08)
結局PartitionDefinitionを弄る事にした。
追記: PatirionDefinitionを變更した。(2007-11-14)
Debianを入れるにしろGentooを入れるにしろHDD一臺で行ふ爲にはデフォルトのファーティション構成では無理。
其處でPartitionDefinitionを以下の樣に變更した。
n p 1 17 n p 2 1323 n e 3 8705 n p 4 n 1356 t 5 82 n 3968 n 6580 n w
上記の樣に變更してfdiskを實行した。
(kuro) # fidsk /dev/sda < /usr/local/bin/PartitionDefinition The number of cylinders for this disk is set to 10011. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: (中略) SCSI device sda: drive cache: write back sda: sda1 sda2 sda3 < sda5 sda6 sda7 sda8 > sda4 Syncing disks.
結果は以下の通り。
(以前略) Device Boot Start End Blocks Id System /dev/sda1 1 17 136521 83 Linux <- カーネル置き場 /dev/sda2 18 1323 10490445 83 Linux <- HDD 起動環境の / /dev/sda3 1324 8705 59295915 5 Extended /dev/sda4 8706 10011 10490445 83 Linux <- Samba 用 /dev/sda5 1324 1356 265041 82 Linux swap <- スワップ領域 /dev/sda6 1357 3968 20980858+ 83 Linux <- Debian 亦は Gentoo を入れた時の / 用 /dev/sda7 3969 6580 20980858+ 83 Linux <- Debian 亦は Gentoo を入れた時の /var 用 /dev/sda8 6581 8705 17069031 83 Linux <- Deabin 亦は Gentoo を入れた時の /home 用
更にInitDisk1.shを以下の樣に變更した。
@@ -42,13 +42,16 @@
if [ -e ${CHANGE_TO_DEVHDD_FILE} ] ; then
fdisk ${DISK1_DEV} < /usr/local/bin/PartitionDefinition
Format_EXT3 ${DISK1_DEV}1
- Format_XFS ${DISK1_DEV}2
- Format_XFS ${DISK1_DEV}4
- mkswap ${DISK_DEV}3
+ Format_EXT3 ${DISK1_DEV}2
+ Format_EXT3 ${DISK1_DEV}4
+ Format_EXT3 ${DISK1_DEV}6
+ Format_EXT3 ${DISK1_DEV}7
+ Format_EXT3 ${DISK1_DEV}8
+ mkswap ${DISK1_DEV}5
/usr/local/sbin/SetupDevEnv.sh
else
fdisk ${DISK1_DEV} < /usr/local/bin/PartitionDefinition1
- Format_XFS ${DISK1_DEV}1
+ Format_EXT3 ${DISK1_DEV}1
MountShare ${DISK1_DEV} ${DISK1_MPT}
fi
此乃樣に變更して置いて初期化スイッチを押した。
SCSI device sda: 160836480 512-byte hdwr sectors (82348 MB) SCSI device sda: drive cache: write back sda: sda1 sda2 sda3 < sda5 sda6 sda7 sda8 > sda4 (中略) EXT3 FS on sda1, internal journal EXT3-fs: mounted filesystem with ordered data mode. kjournald starting. Commit interval 5 seconds EXT3 FS on sda2, internal journal EXT3-fs: mounted filesystem with ordered data mode.
終はつた處で再起動した。
處がHDD起動環境の/etc/init.d/rcSの中で/dev/sda3をスワップ領域と決め打ちして處理してゐる箇所が有り以下の樣なエラーが起動中に出力された。
(以前略)
===== Starting MountSystemFolders =====
[Success]
mkswap: error: swap area needs to be at least 40kB
BusyBox v1.1.1 (2006.11.29-02:37+0000) multi-call binary
Usage: mkswap [-c] [-v0|-v1] device [block-count]
PreUnable to find swap-space signature
pare a disk partition to be used as a swap partition.
Options:
-c Check for read-ability
-v0 Make version 0 swap [max 128 Megs]
-v1 Make version 1 swap [big!] (default for kernels >
2.1.117)
block-count Number of block to use (default is entire partition)
swapon: /dev/sda3: Invalid argument
(以降略)
其處で/etc/init.d/rcSを以下の樣に變更した。
@@ -44,8 +44,8 @@
DispSF ${FAIL}
echo ""
- mkswap /dev/sda3
- swapon /dev/sda3
+ mkswap /dev/sda5
+ swapon /dev/sda5
}
RestoreTime(){
再度再起動すると今度はエラー無しで起動した。