トップ «前の日記(2007-06-19) 最新 次の日記(2007-06-21)» 編集

Pyon's Diary

[はてなブックマーク登録数] [Google に登録] [RSS フィード] Gourmet Hardware Programming Society Software
Amazon
成る可くJIS X 0213:2004對應MSフォント(5.0)、IPAフォント(003.02)で御覽下さい

2007-06-20 舊 平成拾玖年皐月陸日 (水・晴) [長年日記]

[節] (No.15) 再度HDD起動環境にした。

2007-11-03 [注意] 此處の記事は(No.16) 初期化スクリプトの修正を行へば(No.12) HDD起動環境にするで行けるので不必要。
本記事はHDDのフォーマット(XFSファイルシステムの作成)で何故嵌るのか、と其乃囘避方法に附いて書いて在る。
XFSは呪はれてゐるので、自分は全てext3で行く事にした。

一昨日にHDD起動環境からFlash起動環境に戻したが、矢張りHDD起動環境にしようと初期化スイッチを押しと、また/dev/sda2のフォーマットの處で止まつて了つた。

コンソールに

SCSI device sda: 160836480 512-byte hdwr sectors (82348 MB)
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda3 sda4
SCSI device sda: 160836480 512-byte hdwr sectors (82348 MB)
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda3 sda4

迄は出力されるのだが其乃後が續か無い。HDDのアクセス燈も點燈し無い。psの出力を見ると

# ps
  PID  Uid     VmSize Stat Command
    1 root        612 S   init
  (略)
  934 root        652 S   /bin/sh /usr/local/bin/KeventHandller.sh micon_interr
  960 root        652 S   /bin/sh /usr/local/bin/InitDisk1.sh
 1022 root        620 R   mkfs.xfs /dev/sda2 -f
  (略)

矢張り/dev/sda2のフォーマットの處で止まつてゐた。でもHDDのアクセス燈は點燈してゐ無い。

其處でmkfs.xfsを一旦killしてコマンドラインから實行して見たが矢張り駄目。

# mkfs.xfs -f /dev/sda2
meta-data=/dev/sda2              isize=256    agcount=8, agsize=91872 blks
         =                       sectsz=512
data     =                       bsize=4096   blocks=734973, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal log           bsize=4096   blocks=2560, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

と成つた儘先に進ま無い。矢張りHDDの接續燈も點か無い。一寸其れは措いて置いてpsを實行すると今度は/dev/sda4のフォーマットで止まつてゐた。

# ps
  PID  Uid     VmSize Stat Command
 (略)
  934 root        652 S   /bin/sh /usr/local/bin/KeventHandller.sh micon_interr
  960 root        664 S   /bin/sh /usr/local/bin/InitDisk1.sh
 1345 root        424 S   sleep 60
 1352 root        620 R   mkfs.xfs /dev/sda4 -f
 (略)

此もkillすると環境變數の設定とhddrootfs.tar.gzの解凍・展開が始まつてゐた。

# ps
  PID  Uid     VmSize Stat Command
 (略)
  934 root        652 S   /bin/sh /usr/local/bin/KeventHandller.sh micon_interr
  960 root        664 S   /bin/sh /usr/local/bin/InitDisk1.sh
 1345 root        424 S   sleep 60
 1356 root        632 S   /bin/sh /usr/local/sbin/SetupDevEnv.sh
 1378 root        396 R   [ -e /mnt/mtd/hddrootfs.tar.gz -a -e /mnt/mtd/uImage.
 (略)

でコンソールに以下の樣に出力された。

killkjournald starting.  Commit interval 5 seconds
EXT3 FS on sda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
XFS: bad magic number
XFS: SB validate failed

環境變數の變更がされて了つた樣なので、此乃儘再起動すると酷い事に成りさう。何か良い知恵は無いかとLinkStation / 玄箱をハックしようを讀んだ處、

に氣に成る事が書いて在つた。

前囘のインストールでは、一度インストールしたHDDのパーティションを消したゞけで再利用したらえらい目にあつた。今囘はxfsをつぶすためにext3でフォーマットしてからパーティションを消し、その後で再インストールする。

[LinkStation / 玄箱をハックしよう -- debian簡單インストール(3)再インストールより引用]

どうも一度KURO-BOX/PROで使用したHDDで貳度目の初期化を行ふと色々とおかしな事に成るらしい。「えらい目」と云ふのは何だつたのか探すと次の記事に行き當たつた。

此處の中段「RESET SWを押す」の状況が自分の處で起きた事象とそつくり。其乃次の段落の記述に據ると初期化スイッチ(RESET SW)を押すと/usr/local/bin/InitDisk1.shが走るらしい。上の頁を參考にInitDisk1.shを讀んでみた。

01. /usr/local/bin/kuro_lib (各種變數 / 凾數が設定されてゐる)を讀込む。
02. /dev/sda, /dev/sda1, /dev/sda4の孰れかゞ既に搭載されてゐ無いかを調べる。
03. /dev/sda, /dev/sda1, /dev/sda4の孰れかゞ既に XFS で初期化されてゐ無いかを調べる。
04. INFO燈を28で點燈する。
05. Flash起動環境の/mnt/mtd/ChengeMeDevHDDが存在するかを調べる。
 05-A. (存在する場合)
  05-A-01. /dev/sdaにPartitionDefinitionに随つてパーティションを切る。
  05-A-02. /dev/sda1をEXT3で、/dev/sda2, /dev/sda4をXFSで初期化する。
  05-A-03. /dev/sda3にスワップ領域を作成する。
  05-A-04. SetupDevEnv.shを實行してU-Boot環境變數を變更する。
 05-B. (存在しない場合)
  05-B-01. /dev/sdaにPartitionDefinition1に随つてパーティションを切る。
  05-B-02. /dev/sda1をXFSで初期化する。
  05-B-03. /dev/sda1を/mnt/disk1に搭載する。
06. INFO燈を消す。

或るパーティションがXFSで初期化されてゐるか否かの檢査は以下の樣に行つてゐて、

XFS_FORMATTED=`dd if=${DISK1_DEV} bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] && ExitWithError formatted

其乃パーティションの先頭三バイトを讀出して其れがXFSに成つてゐればXFSでフォーマットされてゐると判斷してゐる模樣。試しに/dev/sda2で以下の樣に實行するとXFSと云ふ文字列が得られた。

# echo `dd if=/dev/sda2 bs=1 count=3`
3+0 records in
3+0 records out
XFS

各パーティションの先頭三バイトをゼロで潰し、

# dd if=/dev/zero of=/dev/sda1 bs=1 count=3
3+0 records in
3+0 records out
# dd if=/dev/zero of=/dev/sda2 bs=1 count=3
3+0 records in
3+0 records out
# dd if=/dev/zero of=/dev/sda3 bs=1 count=3
3+0 records in
3+0 records out
# dd if=/dev/zero of=/dev/sda4 bs=1 count=3
3+0 records in
3+0 records out

此乃状態でパーティションを削除した。

# fdisk /dev/sda

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:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

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
/dev/sda2               8         373     2939895   83  Linux
/dev/sda3             374         390      136552+  82  Linux swap
/dev/sda4             391       10011    77280682+  83  Linux

Command (m for help): d
Partition number (1-4): 4

Command (m for help): d
Partition number (1-4): 3

Command (m for help): d
Partition number (1-4): 2

Command (m for help): d
Selected partition 1

Command (m for help): p

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

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
SCSI device sda: 160836480 512-byte hdwr sectors (82348 MB)
SCSI device sda: drive cache: write back
 sda:
SCSI device sda: 160836480 512-byte hdwr sectors (82348 MB)
SCSI device sda: drive cache: write back
 sda:
Syncing disks.

此で初期化スイッチ(RESET SW)を五秒押しゝてみた。

が、今度は/dev/sda4の初期化で止まつて了つた。InitDisk1.sh, mkfs.xfsをkillしてコマンドラインから初期化してみたが、矢張りアクセス燈が點か無かつた。

此乃HDDと相性が惡いのか?。

(此乃間約三時間惱む。)

1GBを0で埋めた。

内臟HDD上に變なデータが殘つてゐて惡さをするのなら、其れを消して見れば良いのでは無いかと思ひ其乃通りして見た。各パーティションの先頭三バイトを潰してからfdiskでパーティションを全て削除。さうしてから/dev/sdaの先頭から1GB分0を埋めた。(1GBと云ふのは適當に決めた。)

# dd if=/dev/zero of=/dev/sda1 bs=1 count=3
3+0 records in
3+0 records out
# dd if=/dev/zero of=/dev/sda2 bs=1 count=3
3+0 records in
3+0 records out
# dd if=/dev/zero of=/dev/sda3 bs=1 count=3
3+0 records in
3+0 records out
# dd if=/dev/zero of=/dev/sda4 bs=1 count=3
3+0 records in
3+0 records out
# fdisk /dev/sda

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:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

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
/dev/sda2               8         373     2939895   83  Linux
/dev/sda3             374         390      136552+  82  Linux swap
/dev/sda4             391       10011    77280682+  83  Linux

Command (m for help): d
Partition number (1-4): 4

Command (m for help): d
Partition number (1-4): 3

Command (m for help): d
Partition number (1-4): 2

Command (m for help): d
Selected partition 1

Command (m for help): p

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

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
SCSI device sda: 160836480 512-byte hdwr sectors (82348 MB)
SCSI device sda: drive cache: write back
 sda:
SCSI device sda: 160836480 512-byte hdwr sectors (82348 MB)
SCSI device sda: drive cache: write back
 sda:
Syncing disks.
# dd if=/dev/zero of=/dev/sda bs=1024 count=1048576
1048576+0 records in
1048576+0 records out
# /bin/sh -x /usr/local/bin/InitDisk1.sh
(略)
>nvram_set:default_kernel_addr = 0x00100000
>nvram_set:bootargs_base = console=ttyS0,115200
>nvram_set:bootargs_root = root=/dev/sda2 rw panic=5
>nvram_set:bootargs = console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.0
9
>nvram_set:bootcmd = ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kerne
l); bootm $(default_kernel_addr)
>nvram_set:nand_boot = no
+ miconapl -a led_set_code_information clear

旨く行つた。此を三囘程試したが問題は無かつた。

何で此で上手く行く樣に成つたのか良く判ら無い。

追記: XFSのパーティションを潰す際の削除する大きさ。

何氣無くKURO-BOX/PROの頁を眺めてゐたら以下の樣な記述が有つた。

【「hdd ブート環境」作成時の問題について】(途中略) 1度でもLinuxパーティションを作成したことがあるHDDを取り付けた場合はパーティションテーブルを完全に初期化してください。

[KURO-BOX/PROより引用]

更に以下のコマンドを實行する樣にと書いて有つた。

dd if=/dev/zero of=/dev/sda bs=1M count=1

先頭から1MB 消せば良いのか。

試して見たが1MB 潰したゞけでは今迄通り/dev/sda2の初期化で止まつて了つた。

矢張り1GB 位潰さ無いと駄目みたい。

Tags: Hardware KURO-BOX/PRO | del.icio.usに追加 | はてなブックマークに追加 | livedoor クリップに追加 | Yahoo! ブックマークに追加 | Google ブックマークに追加 | Permalink

[節] (No.16) InitDisk1.shで氣に成る所が在つた。(初期化スクリプトを修正した)

初期化スイッチを押した際に起動されるスクリプトInitDisk1.shの48行目でスワップ領域の作成を行つてゐるが、

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
        /usr/local/sbin/SetupDevEnv.sh
else

/dev/sda3を指定する積もりで${DISK_DEV}3と書いて在るが正しくは${DISK1_DEV}3では無いだろうか。

實際InitDisk1.shを實行した時にスワップ領域の作成に失敗してゐるし。

# /bin/sh -x /usr/local/bin/InitDisk1.sh
(略)
+ mkswap 3
mkswap: 3: No such file or directory
(略)

追記: 初期化スクリプト(InitDisk1.sh, SetupDevEnv.sh)を修正した。(2007-11-03)

スワップ領域の作成が行へ無かつたり、XFSでのフォーマットに苦しめられたりするので、InitDisk1.shを以下の樣に修正した。

@@ -42,13 +42,13 @@
 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
+       mkswap ${DISK1_DEV}3
        /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

此で/dev/sda2, /dev/sda4がext3でフォーマットされる事に成りXFSの魔法の文字列に惱まされる事が無く成る。

亦パーティションのフォーマット後にマウントを行ふSetupDevEnv.shも以下の樣に修正した。

@@ -21,7 +21,7 @@

        mount -t ext3 ${DISK1_DEV}1 ${TMP_BOOT_MPT}
        [ $? -ne 0 ] && exit 1
-       mount -t xfs ${DISK1_DEV}2 ${TMP_ROOT_MPT}
+       mount -t ext3 ${DISK1_DEV}2 ${TMP_ROOT_MPT}
        [ $? -ne 0 ] && exit 1

        cp -afp ${UIMAGE} ${TMP_BOOT_MPT}/

此で/dev/sda2がext3としてマウントされる樣に成る。

斯うした状態で先日の方法(初期化 SW を押す方法)でHDD起動環境を構築する事が出來た。

追記: PartitionDefinisionも變更した。(2007-11-04)

内臟HDDがHDS721680PLA380 (Deskstart 7K160)で容量が80GBも在る。

HDD起動環境時の / (ルート)が3GBしか無いのでもう少し大きくする爲、PartitionDefinition を以下の樣に變更した。(當然フラッシュ起動環境で)

@@ -2,17 +2,17 @@
 p
 1

-+50MB
++128MB
 n
 p
 2

-+3GB
++10GB
 n
 p
 3

-+128MB
++1GB
 t
 3
 82

序でに/boot (/dev/sda1), swap (/dev/sda3)も(特に意味は無いが)大きくした。

修正した後でHDDの既存パーティションを全て削除してから、初期化スイッチを長押しゝてHDD起動環境に變更(再度パーティション切りから)した。

既存パーティションを全て削除してゐない場合、PatitionDefinitionには既存パーティションを削除するコマンドが書いてゐないので、以前と同じパーティション構成に成つて了ふので注意する事。

Tags: Hardware KURO-BOX/PRO | del.icio.usに追加 | はてなブックマークに追加 | livedoor クリップに追加 | Yahoo! ブックマークに追加 | Google ブックマークに追加 | Permalink
[]

正當なXHTML1.1です! 正當なCSSです! BlogScouter Pyon's Land (MyMiniCity)
© pyon