lsblk 無効な読み取り専用

lsblk 無効な読み取り専用

こんにちは。主にルートパーティションの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がコメントしたように、この出力の列ROlsblkファイルシステムではなく読み取り専用デバイスに関するものです。したがって、ファイルシステムがその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とマウントの両方を確認する必要はありません)。ファイルシステム)。たとえば、次の操作を実行できます。rwmountrofindmnt

$ findmnt -n -o options /dev/sde3
ro,relatime,seclabel


$ findmnt -n -o options /dev/sde3 | grep -q ^ro && echo "read only"
read only

関連情報