こんにちは。主にルートパーティションのroファイルシステムを検索しようとしています。
USBをOSディスクとして使用するポータブルシステムです。
状態は読み取り専用で、何も書き込めません。
touch /tmp
touch: setting times of '/tmp': Read-only file system
lsblk 出力
lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 1 28.7G 0 disk
├─sdb1 8:17 1 512M 0 part /boot/efi
└─sdb2 8:18 1 15.5G 0 part /
これはjson出力です。
{
"blockdevices": [
{
"name": "sdb",
"kname": "sdb",
"path": "/dev/sdb",
"maj:min": "8:16",
"fsavail": null,
"fssize": null,
"fstype": null,
"fsused": null,
"fsuse%": null,
"fsver": null,
"mountpoint": null,
"label": null,
"uuid": null,
"ptuuid": "cc59543f-1263-436b-b654-441947b5d432",
"pttype": "gpt",
"parttype": null,
"parttypename": null,
"partlabel": null,
"partuuid": null,
"partflags": null,
"ra": 128,
"ro": false,
"rm": true,
"hotplug": true,
"model": "SanDisk_3.2Gen1",
"serial": "0401915ccab85f2287ceb131fd353892d7ae4b148e3eff697bb2af15fdab6e26684500000000000000000000899c7a1b00827b18915581076eab2054",
"size": "28.7G",
"state": "running",
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": 0,
"min-io": 512,
"opt-io": 0,
"phy-sec": 512,
"log-sec": 512,
"rota": true,
"sched": "mq-deadline",
"rq-size": 2,
"type": "disk",
"disc-aln": 0,
"disc-gran": "0B",
"disc-max": "0B",
"disc-zero": false,
"wsame": "0B",
"wwn": null,
"rand": true,
"pkname": null,
"hctl": "52:0:0:0",
"tran": "usb",
"subsystems": "block:scsi:usb:pci",
"rev": "1.00",
"vendor": " USB ",
"zoned": "none",
"dax": false,
"children": [
{
"name": "sdb1",
"kname": "sdb1",
"path": "/dev/sdb1",
"maj:min": "8:17",
"fsavail": "506M",
"fssize": "511M",
"fstype": "vfat",
"fsused": "5M",
"fsuse%": "1%",
"fsver": "FAT32",
"mountpoint": "/boot/efi",
"label": null,
"uuid": "6729-75FE",
"ptuuid": "cc59543f-1263-436b-b654-441947b5d432",
"pttype": "gpt",
"parttype": "c12a7328-f81f-11d2-ba4b-00a0c93ec93b",
"parttypename": "EFI System",
"partlabel": null,
"partuuid": "54ce8d01-e9bc-434b-9971-5d31ded28098",
"partflags": null,
"ra": 128,
"ro": false,
"rm": true,
"hotplug": true,
"model": null,
"serial": null,
"size": "512M",
"state": null,
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": 0,
"min-io": 512,
"opt-io": 0,
"phy-sec": 512,
"log-sec": 512,
"rota": true,
"sched": "mq-deadline",
"rq-size": 2,
"type": "part",
"disc-aln": 0,
"disc-gran": "0B",
"disc-max": "0B",
"disc-zero": false,
"wsame": "0B",
"wwn": null,
"rand": true,
"pkname": "sdb",
"hctl": null,
"tran": null,
"subsystems": "block:scsi:usb:pci",
"rev": null,
"vendor": null,
"zoned": "none",
"dax": false
},
{
"name": "sdb2",
"kname": "sdb2",
"path": "/dev/sdb2",
"maj:min": "8:18",
"fsavail": "8.1G",
"fssize": "15.2G",
"fstype": "ext4",
"fsused": "6.2G",
"fsuse%": "41%",
"fsver": "1.0",
"mountpoint": "/",
"label": null,
"uuid": "f769a7b6-9d09-4bc7-9249-85f50d4a1c2e",
"ptuuid": "cc59543f-1263-436b-b654-441947b5d432",
"pttype": "gpt",
"parttype": "0fc63daf-8483-4772-8e79-3d69d8477de4",
"parttypename": "Linux filesystem",
"partlabel": null,
"partuuid": "0cf31261-d5f9-4182-894c-283bd8fb62ad",
"partflags": null,
"ra": 128,
"ro": false,
"rm": true,
"hotplug": true,
"model": null,
"serial": null,
"size": "15.5G",
"state": null,
"owner": "root",
"group": "disk",
"mode": "brw-rw----",
"alignment": 0,
"min-io": 512,
"opt-io": 0,
"phy-sec": 512,
"log-sec": 512,
"rota": true,
"sched": "mq-deadline",
"rq-size": 2,
"type": "part",
"disc-aln": 0,
"disc-gran": "0B",
"disc-max": "0B",
"disc-zero": false,
"wsame": "0B",
"wwn": null,
"rand": true,
"pkname": "sdb",
"hctl": null,
"tran": null,
"subsystems": "block:scsi:usb:pci",
"rev": null,
"vendor": null,
"zoned": "none",
"dax": false
}
]
}
]
}
lsblk RO 列では、
json 形式の読み取り専用で 0 と表示され、false としても表示されます。
ただし、/proc/mounts を確認すると ro( /dev/sdb2 ) と表示されます。
cat /proc/mounts
/dev/sdb2 / ext4 ro,relatime,errors=remount-ro 0 0
/dev/sdb1 /boot/efi vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0
それで、lsblkは正しい状態を読み取ることができませんか?
util-linux 2.36.1を使用してdebian 11 lsblkで実行
通知出力が必要です。 json形式なので、lsblkを使用することをお勧めします。
また、/proc/mountsにroot以外のユーザーに関する奇妙な履歴があることがわかりました。
# correct fstab but here different disk in same mount
# 2 of them ro , 1 of them rw
/dev/sdk1 /mnt/disk-***0G ext4 ro,noatime 0 0
/dev/sdo1 /mnt/disk-***0G ext4 ro,noatime 0 0
/dev/sdq1 /mnt/disk-***0G ext4 rw,noatime 0 0
findmntでテスト
├─/mnt/disk-***0G /dev/sdk1 ext4 ro,noatime
│ └─/mnt/disk-***0G /dev/sdo1 ext4 ro,noatime
│ └─/mnt/disk-***0G /dev/sdq1 ext4 rw,noatime
│ └─/mnt/disk-***0G /dev/sdl1 ext4 rw,noatime
UUIDを使用する非ルートディスクマウントにこのオプションを使用します。
オペレーティングシステムにエラーがある場合、以前のオペレーティングシステムはそれほど重要ではありませんが、エラーがあるかどうかを知る必要があります。
defaults,nofail,noatime,x-systemd.device-timeout=10s,errors=continue 0 0
答え1
Nasirがコメントしたように、この出力の列RO
はlsblk
ファイルシステムではなく読み取り専用デバイスに関するものです。したがって、ファイルシステムがそのro
オプションでマウントされて読み取り専用の場合、lsblk
デバイス自体はまだ読み取り/書き込みであるため表示されません。lsblk
デバイス「ステータス」のみが表示されることがあります。
$ lsblk -o+RO /dev/sde3
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS RO
sde3 8:67 0 10M 0 part 0
$ sudo blockdev --setro /dev/sde3
$ lsblk /dev/sde3
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sde3 8:67 0 10M 1 part
ファイルシステムが読み取り専用でマウントされていることを確認するには、またはマウントオプションを確認する必要があります(デフォルトでは読み取り専用デバイスを便利にマウントするために使用されるため、デバイスro
とマウントの両方を確認する必要はありません)。ファイルシステム)。たとえば、次の操作を実行できます。rw
mount
ro
findmnt
$ findmnt -n -o options /dev/sde3
ro,relatime,seclabel
$ findmnt -n -o options /dev/sde3 | grep -q ^ro && echo "read only"
read only