ファイルシステムの検査・修復 fsck

一般的な検査と修復に利用する fsck コマンドがありますが、その利用で badblocks の機能を伴って、不良セクタをリカバリする機能があることを知りました。

その機能の学習を兼ねて、不良ディスクとして保留していたハードディスクを使って実行してみました。

$ sudo fsck -vcck /dev/sdb2
fsck from util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2018)
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern: done                                                 
system: Updating bad block inode.
Pass 1: Checking iノードs, blocks, and sizes
Pass 2: Checking ディレクトリ structure
Pass 3: Checking ディレクトリ connectivity
Pass 4: Checking reference counts
Pass 5: Checking グループ summary information

system: ***** ファイルシステムは変更されました *****

          11 inodes used (0.00%, out of 2621440)
           0 non-contiguous files (0.0%)
           0 non-contiguous directories (0.0%)
             # of inodes with ind/dind/tind blocks: 0/0/0
             Extent depth histogram: 3
      242382 blocks used (2.31%, out of 10485760)
           0 bad blocks
           1 large file

           0 regular files
           2 directories
           0 character device files
           0 block device files
           0 fifos
           0 links
           0 symbolic links (0 fast symbolic links)
           0 sockets
------------
           2 files

前述が実行結果です。

時間は長く掛かりましたが、以前頻繁にエラーを吐き出していたパーティション位置に対して非破壊型の読み書きテストだとのことです。

このパーティションは、mkfs.ext4 で1度ファイルを生成したのですが、気になるメッセージが最終行にあって、再び mkfs.ext4 で書き直した直後に、前述の fsck を実行しています。

途中に『system: ファイルシステムは変更されました 』の文脈がありますが、不良箇所があって一部が変更されたということでしょうか。初めての実行なので詳細が分かりません。

次にパーティションをファイルに生成した時の1度目と、気になって再実行した2度目のメッセージについて次に示します。

$ sudo mkfs.ext4 -L system /dev/sdb2
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 10485760 4k blocks and 2621440 inodes
Filesystem UUID: 3cf7fb03-0d7d-491b-8d6b-8265e2798161
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information:        
Warning, had trouble writing out superblocks.
$ sudo mkfs.ext4 -L system /dev/sdb2
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 10485760 4k blocks and 2621440 inodes
Filesystem UUID: 789bf9e8-5e1d-4dbc-ae81-a8d25a02529b
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done   

元々不良ディスクとして、使わずに置かれていたディスクなので、多少なりとも利用できれば学習も兼ねて儲けものかもしれません。

gpio ラズパイ特有のコマンド

ラズパイ特有のコマンドに、GPIOを操作するコマンドがありますが、これの利用でラズパイ自身のバージョンが確認できるようです。

sunao@radio:~$ gpio
gpio: At your service!
Type: gpio -h for full details and
gpio readall for a quick printout of your connector details

sunao@radio:~$ gpio -h
gpio: Usage: gpio -v
gpio -h
gpio [-g|-1] …
gpio [-d] …
[-x extension:params] [[ -x …]] …
gpio [-p] …
gpio …
gpio
gpio readall
gpio unexportall/exports
gpio export/edge/unexport …
gpio wfi
gpio drive
gpio pwm-bal/pwm-ms
gpio pwmr
gpio pwmc
gpio load spi/i2c
gpio unload spi/i2c
gpio i2cd/i2cdetect
gpio rbx/rbd
gpio wb
gpio usbp high/low
gpio gbr
gpio gbw


sunao@radio:~$ gpio readall
+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | |
| 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | |
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |
| | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 |
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |
| 27 | 2 | GPIO. 2 | IN | 1 | 13 || 14 | | | 0v | | |
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |
| 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 |
| 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | |
| 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 |
| 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | |
| 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 |
| 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 |
| | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+


sunao@radio:~$ gpio -v
gpio version: 2.46
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Pi 2, Revision: 01, Memory: 1024MB, Maker: Embest
Device tree is enabled.
*--> Raspberry Pi 2 Model B Rev 1.1
This Raspberry Pi supports user-level GPIO access.

ls*** 色々な情報を確認

Linux OS の色々な情報を確認できそうなコマンドをメモしておきます。

一番単純な ls だけのコマンドは、一番お世話になる使用頻度の高いディレクトリの参照ですが、その後に続く文字列により色々な情報が得られるようです。ただし、環境によって使えるコマンドには制限があるようです。

常用している非力なノートPCで利用できるコマンドは次のとおりです。

sunao@MITA-NY40S:~$ uname -a
Linux MITA-NY40S 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

sunao@MITA-NY40S:~$ ls ls lsdiff lsmod ls2ti3 lshw lsns ls_ubuntu-sv_ftpuser-bkup lsinitramfs lsof lsattr lsipc lspci lsb_release lslocks lspcmcia lsblk lslogins lspgpot lscpu lsmem lsusb

現在公開に利用しているPogoPlug では次のとおりです。

pogo:~$ uname -a
Linux DebianPogo 3.18.5-kirkwood-tld-1 #1 PREEMPT Thu Feb 5 17:58:07 PST 2015 armv5tel GNU/Linux

pogo:~$ ls ls lsblk lsinitramfs lsmod lspgpot lsattr lscpu lslocks lsof

手持ちの非力な Raspberry pi では次のとおりです。

sunao@rpi1-disk:~$ uname -a
Linux rpi1-disk 4.14.79+ #1159 Sun Nov 4 17:28:08 GMT 2018 armv6l GNU/Linux


sunao@rpi1-disk:~$ ls ls lsb_release lscpu lsipc lslogins lsns lsusb lsattr lsblk lsinitramfs lslocks lsmod lspgpot


sunao@rpi1-disk:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 1G 0 part
├─sda2 8:2 0 32G 0 part /
├─sda3 8:3 0 1G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 300G 0 part /home
├─sda6 8:6 0 300G 0 part /share1
├─sda7 8:7 0 300G 0 part /share2
├─sda8 8:8 0 300G 0 part /pic-bkup
├─sda9 8:9 0 300G 0 part /home/bkup
└─sda10 8:10 0 329G 0 part /working
mmcblk0 179:0 0 7.5G 0 disk
├─mmcblk0p1 179:1 0 43.9M 0 part /boot
└─mmcblk0p2 179:2 0 7.5G 0 part /media/pi/rootfs

sunao@rpi1-disk:~$ lscpu
Architecture: armv6l
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Model: 7
Model name: ARMv6-compatible processor rev 7 (v6l)
CPU max MHz: 700.0000
CPU min MHz: 700.0000
BogoMIPS: 697.95
Flags: half thumb fastmult vfp edsp java tls

利用している環境によって、利用できるコマンドはそれぞれのようです。