FileSystem

試行錯誤の記録です(笑)
FileSystemの各ページに整理された内容が記載されているので、そちらを参照してください。


前にも書いたとおり、4GのHDDは3つのパーティションに分割されている。
fdiskを使って調べて見ると、

Disk /dev/hda: 4095 MB, 4095737856 bytes
16 heads, 63 sectors/track, 7936 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3          1021      7936   3485664    c  Win95 FAT32 (LBA)
/dev/hda4             1         1         0    0  Empty
Partition 4 does not end on cylinder boundary.

hda1 が 100MB、hda2 が 401MB、hda3 が 3.3GB って感じですね。
で、マウント先は、

rootfs on / type rootfs (rw)
/dev/root on / type jffs2 (ro)
/proc on /proc type proc (rw)
/dev/mtdblock3 on /home type jffs2 (rw,noatime)
/dev/ram1 on /dev type minix (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda1 on /hdd1 type ext3 (ro,noatime)
/dev/hda2 on /hdd2 type ext3 (rw,noatime)
/dev/hda3 on /hdd3 type vfat (rw,noatime)
none on /dev/pts type devpts (rw)

使い方としては hdd1 がいままでのFlashの代わり、hdd2 がプログラムエリア、hdd3 がデータって感じですかね。
hdd1の .sys/ ディレクトリには hdd2 のバックアップイメージが圧縮して格納されていました。システム復元時にはこれを使うのかな?
というわけで、こいつを念のためバックアップ。
ちなみにhdd1はReadOnly?でmountされてるけど、ここをRWでマウントしなおして内容を変更すればいろいろとカスタマイズできそう(笑)

さて、問題なのはhdd3。なぜかvfatでフォーマットされている。
あちこちのサイトを調べたら、どうやらUSBマスストレージでPCにマウントする際にext3だと不都合だということが真相のようだ。
かといって、vfatだとlinux的にはいろいろと不都合(大文字と小文字を同一視してしまうとか)なので、どうしようかな...
とりあえず不都合が出たら考えよう。

で、気になったのが /tmp ディレクトリ。

# ls -l tmp
lrwxrwxrwx    1 root     root           12 Oct 28 03:24 tmp -> /dev/shm/tmp
# df tmp
Filesystem           1k-blocks      Used Available Use% Mounted on
none                      8192        56      8136   1% /dev/shm
# cat /etc/fstab
/dev/mtdblock2  /               jffs2   ro,noatime      1  1
/dev/mtdblock3  /home           jffs2   defaults,noatime        1  2
none            /dev/shm        tmpfs   size=1m,noauto  0  0
/dev/mmcda1     /mnt/card       auto    noauto,owner    0  0
none            /dev/pts        devpts  gid=5,mode=620  0  0

1MBしかない模様。
以前、SL-C760でApacheだったかPostgreSQLだったかをコンパイルしたとき、/tmpの容量が足りなくなったことがあった。
やっぱり増やしときたいなと。
ちなみにそのときは /tmp のリンク先を一時的にCFに変更して対応したのだが、C3000は / がReadOnly?なので、直接変更不能。
そもそも/tmpをDiskに取ったらtmpの意味が薄れるので、やっぱりメモリー上に取るべきでしょう。
というわけで、実際にmountするときのtmpfsのサイズを変更するのがいいかなと。
試しに /etc/fstab の tmpfs のオプションを 1m から 4m に変更して再起動してみたが変化なし。
色々調べて見たら、/root/etc/rc.d/rc.rofilesys で固定値でmountしている模様。
というわけで、このファイルを編集。
っと、その前に、/root/etc/rc.d/ を含むファイルシステム(/)はReadOnly?なので、一時的にReadWrite?可能で再マウント

# mount -o remount,rw /

そしてviで編集
っと、その前にバックアップを作成しておきましょう

# cp -p /root/etc/rc.d/rc.rofilesys /root/etc/rc.d/rc.rofilesys.org

61行目,158行目,229行目付近に

mount -t tmpfs -o size=1m none /dev/shm

という行があるから、これを

mount -t tmpfs -o size=4m none /dev/shm

に変更。
diffしてみるとこんな感じ

# diff rc.rofilesys.org rc.rofilesys
61c61
< mount -t tmpfs -o size=1m none /dev/shm
---
> mount -t tmpfs -o size=4m none /dev/shm
158c158
<       mount -t tmpfs -o size=1m none /dev/shm
---
>       mount -t tmpfs -o size=4m none /dev/shm
229c229
<       mount -t tmpfs -o size=1m none /dev/shm
---
>       mount -t tmpfs -o size=4m none /dev/shm

再起動して設定が有効になっているか確認。

# df /tmp
Filesystem           1k-blocks      Used Available Use% Mounted on
none                      4096        44      4052   1% /dev/shm

4M確保完了。
ついでに、これによりメモリーが圧迫される可能性も出てくるので swap も作ってしまおう。
容量は128Mもあればいいかな。
どうせ作るなら swap 専用パーティションの方が安定するだろうから、hddのパーティションを切り直す方向で。
hdd3 を分割して128Mほどのswapパーティションを作りましょう。
というわけで、まずはhdd3の内容をバックアップ。

# ls -l /hdd3
drwxrwxrwx   14 root     root         4096 Nov 16 16:36 Documents
drwxrwxrwx    4 root     root         4096 Dec 31  1979 dict1
drwxrwxrwx    3 root     root         4096 Dec 31  1979 dict2

とりあえず起動しているアプリ(高速起動がONになってるアプリも含む)を全部終了。
dict1とdict2はCD-ROMに同じものがあるので、Documents以下をtarで固める

# cd /hdd3
# tar cvf - Documents | gzip -c > docs.tar.gz

んで、こいつをPCに転送すればOK
いや、hdd2にコピーしといてもいいけどね(笑)

そして、/hdd3をumountする

# umount /hdd3

ここで文句を言われるようならまだ起動しているアプリがあるはず。ps -ef でそれっぽいのを確認

fdiskを起動してパーティションの切り直し

# fdisk /dev/hda

p コマンドで現状の確認。

Command (m for help): p

Disk /dev/hda: 4095 MB, 4095737856 bytes
16 heads, 63 sectors/track, 7936 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3          1021      7936   3485664    c  Win95 FAT32 (LBA)
/dev/hda4             1         1         0    0  Empty
Partition 4 does not end on cylinder boundary.

hda3を削除して

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

Command (m for help): p

Disk /dev/hda: 4095 MB, 4095737856 bytes
16 heads, 63 sectors/track, 7936 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3             1         1         0    0  Empty
Partition 3 does not end on cylinder boundary.

サイズのちょっと小さい新しいパーティション3を作成

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Selected partition 4
First cylinder (1021-7936, default 1021): 1021
Last cylinder or +size or +sizeM or +sizeK (1021-7936, default 7936): 7675

Command (m for help): p

Disk /dev/hda: 4095 MB, 4095737856 bytes
16 heads, 63 sectors/track, 7936 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3             1         1         0    0  Empty
Partition 3 does not end on cylinder boundary.
/dev/hda4          1021      7675   3354120   83  Linux

...パーティション3が作成できない(^^;
いろいろ調べたけど、できたって言う人とできないって言う人がいる...
fdiskのバージョンかなぁ...

Command (m for help): q

# fdisk -v
fdisk v2.11y

C3000に入ってるfdiskは 2.11y とのこと。
で、あちこち調べて見ると、fdisk_2.11g-5z_arm.ipk ってのを発見。
試しにインストールして動かしてみると...

# ./fdisk /dev/hda

The number of cylinders for this disk is set to 7936.
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/hda: 16 heads, 63 sectors, 7936 cylinders
Units = cylinders of 1008 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3          1021      7936   3485664    c  Win95 FAT32 (LBA)

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

Command (m for help): p

Disk /dev/hda: 16 heads, 63 sectors, 7936 cylinders
Units = cylinders of 1008 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1021-7936, default 1021):
Using default value 1021
Last cylinder or +size or +sizeM or +sizeK (1021-7936, default 7936): 7675

Command (m for help): p

Disk /dev/hda: 16 heads, 63 sectors, 7936 cylinders
Units = cylinders of 1008 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3          1021      7675   3354120   83  Linux

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 4
First cylinder (7676-7936, default 7676):
Using default value 7676
Last cylinder or +size or +sizeM or +sizeK (7676-7936, default 7936):
Using default value 7936

Command (m for help): p

Disk /dev/hda: 16 heads, 63 sectors, 7936 cylinders
Units = cylinders of 1008 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3          1021      7675   3354120   83  Linux
/dev/hda4          7676      7936    131544   83  Linux

Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 82
Changed system type of partition 4 to 82 (Linux swap)

Command (m for help): p

Disk /dev/hda: 16 heads, 63 sectors, 7936 cylinders
Units = cylinders of 1008 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3          1021      7675   3354120   83  Linux
/dev/hda4          7676      7936    131544   82  Linux swap

できた(笑)
あ、hda3はvfatに戻しておこう。

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): c
Changed system type of partition 3 to c (Win95 FAT32 (LBA))

Command (m for help): p

Disk /dev/hda: 16 heads, 63 sectors, 7936 cylinders
Units = cylinders of 1008 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3          1021      7675   3354120    c  Win95 FAT32 (LBA)
/dev/hda4          7676      7936    131544   82  Linux swap

というわけで、これを書き込んで終了。

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

Calling ioctl() to re-read partition table.
Re-read table failed with error 16: Device or resource busy.
Reboot your system to ensure the partition table is updated.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
# 

...なんかエラーが出てる気がするので念のため確認。

# fdisk /dev/hda

The number of cylinders for this disk is set to 7936.
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/hda: 4095 MB, 4095737856 bytes
16 heads, 63 sectors/track, 7936 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       204    102784+  83  Linux
/dev/hda2           205      1020    411264   83  Linux
/dev/hda3          1021      7675   3354120    c  Win95 FAT32 (LBA)
/dev/hda4          7676      7936    131544   82  Linux swap

Command (m for help): q

# 

ちゃんと書き込まれているようだ。
では、パーティションを初期化して、再マウント

# mkfs.vfat -F 32 /dev/hda3
# mount /dev/hda3 /hdd3
# df /hdd3
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda3              3478852         4   3478848   0% /hdd3
# 

あとはバックアップしておいたデータをPCから戻して復元して完了。

# cd /hdd3
# gunzip -c docs.tar.gz | tar xvf -

dict1とdict2のデータはPCから書き込めばいいでしょう。

...おっと、swapの設定を忘れてた(笑)

# mkswap /dev/hda4
Setting up swapspace version 1, size = 134696960 bytes
# swapon /dev/hda4
# free
              total         used         free       shared      buffers
  Mem:        62108        36772        25336            0         1796
 Swap:       131536            0       131536
Total:       193644        36772       156872
# 

これでswapも有効になりました。
/etc/fstab に swap のエントリーを追加しておくと、swapのon/offが swapon -a , swapoff -a で簡単にできるので、追加しておきましょう。

# cat /etc/fstab
/dev/mtdblock2  /               jffs2   ro,noatime      1  1
/dev/mtdblock3  /home           jffs2   defaults,noatime        1  2
none            /dev/shm        tmpfs   size=1m,noauto  0  0
/dev/mmcda1     /mnt/card       auto    noauto,owner    0  0
none            /dev/pts        devpts  gid=5,mode=620  0  0
/dev/hda4       swap            swap    defaults        0  0

最後の行が追加した行です。


  • /etc/fstabのswapのエントリーに関する記述を追加しました -- Makichan? 2004-11-18 (木) 16:41:26


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-11-18 Thu 18:37:06 JST (5443d)