約束の七夜祭り(やくそくのななやまつり)【XFLAG ANIME】
アニメ『約束の七夜祭り』
主題歌も好きだし、バトルが適度に盛り込まれていて退屈せず、それでいて厳かな雰囲気が一貫してていいアニメでした。youtubeで見れるのは良いけれど、画面いっぱいに広がる星空や、煌びやかな祭りのシーン、すごくよかったので、できれば映画館で見たかったです。
引き続きfsckです。今回はファイルシステムの修復です。といっても、出力メッセージが変わる、ぐらいのことしかやりません。
ファイルを破壊する前に、バックアップしておきます。
takk@deb9:~/tmp$ cp a.bin backup.bin
1bitぐらいの破壊にしておこうと思います。
バイナリの指定位置のデータを、ddコマンドを使って/dev/zeroの出力で置き換えるので変更しやすい0x01のデータを探します。
takk@deb9:~/tmp$ od -tx1 -Ax a.bin | head 000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 * 000400 58 64 00 00 00 90 01 00 00 14 00 00 2f 6d 01 00 000410 4d 64 00 00 01 00 00 00 00 00 00 00 00 00 00 00 000420 00 20 00 00 00 20 00 00 b8 07 00 00 54 9f 65 5b 000430 60 a0 65 5b 01 00 ff ff 53 ef 01 00 01 00 00 00 000440 2f 9e 65 5b 00 00 00 00 00 00 00 00 01 00 00 00 000450 00 00 00 00 0b 00 00 00 80 00 00 00 3c 00 00 00 000460 02 00 00 00 03 00 00 00 42 13 e1 53 bc 5b 4f a5 000470 84 07 17 c0 62 79 f0 b4 00 00 00 00 00 00 00 00 takk@deb9:~/tmp$
0x406番地のデータが、0x01なので、ここを0x00に置き換えることにします。
16進だと分かりにくいのでアドレスは10進で表示して、再確認。
takk@deb9:~/tmp$ od -tx1 -w1 -Ad a.bin | head 0000000 00 * 0001024 58 0001025 64 0001026 00 * 0001029 90 0001030 01 0001031 00 * takk@deb9:~/tmp$
該当の0x01データは、1030の位置ですね。
ddコマンドで0x01を0x00に置換。
takk@deb9:~/tmp$ dd if=/dev/zero of=a.bin seek=1030 bs=1 count=1 conv=notrunc 1+0 レコード入力 1+0 レコード出力 1 byte copied, 0.000176493 s, 5.7 kB/s takk@deb9:~/tmp$
再度ダンプして確認。
takk@deb9:~/tmp$ !od od -tx1 -w1 -Ad a.bin | head 0000000 00 * 0001024 58 0001025 64 0001026 00 * 0001029 90 0001030 00 * 0001033 14 takk@deb9:~/tmp$
1030の0x01は、0x00に置き換わりました。
バックアップデータをcmp。
takk@deb9:~/tmp$ cmp a.bin backup.bin a.bin backup.bin 異なります: バイト 1031、行 1 takk@deb9:~/tmp$
では、fsck使います。
takk@deb9:~/tmp$ sudo fsck -a /dev/loop0 fsck from util-linux 2.29.2 fsck.ext3: The ext2 superblock is corrupt while trying to open /dev/loop0 /dev/loop0: The superblock could not be read or does not describe a valid ext2/ext3/ext4 filesystem. If the device is valid and it really contains an ext2/ext3/ext4 filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock: e2fsck -b 8193 <device> or e2fsck -b 32768 <device> takk@deb9:~/tmp$ echo $? 8 takk@deb9:~/tmp$
ん~。コマンド実行結果(echo $?)が、 8=「操作エラー」となっています。
次は、オプションなしで実行します。
takk@deb9:~/tmp$ sudo fsck /dev/loop0 fsck from util-linux 2.29.2 e2fsck 1.43.4 (31-Jan-2017) ext2fs_open2: The ext2 superblock is corrupt fsck.ext3: Superblock invalid, trying backup blocks... /dev/loop0 was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/loop0: ***** FILE SYSTEM WAS MODIFIED ***** /dev/loop0: 11/25688 files (0.0% non-contiguous), 8913/102400 blocks takk@deb9:~/tmp$ echo $? 1 takk@deb9:~/tmp$
コマンド実行結果(echo $?)は、1=「ファイルシステムのエラーが修正された」
となっていますので、修復成功したようです。
コメント