注:次の質問 ドライブ名? 「/dev/sda」の「sda」部分の正しい用語は何ですか?
一方:
- 私はシステムを持っています(この場合はRaspberry Piですが、これはすべてのnixシステムに関連付けることができます)。
- Linuxバージョンを実行しており、すべての一般的なLinuxコマンドが機能しているとします。
- ブートデバイスはSDカードまたはUSB接続ストレージデバイスです。
- 接続されたストレージデバイスから起動する場合、デバイス「basename」はsd(x)です。
- SDカードから起動すると、デバイス「basename」は「mm(xxxx)」のように変わります。
私がやりたいこと:プログラムで(可能であればシェルスクリプトで)デバイスタイプでそれを実行し、実行されたデバイスに応じて特定の属性を変更できるようにしたいです。
簡単な例:
Boot device = "mmxxxxx"
Print "Booted from SD card!"
Boot device = "sda"
Print "Booted from Attached Storage!"
私が望むのは、ルートパーティションが起動されたデフォルトのデバイスタイプ(より良い用語で)を抽出することです(つまりルートパーティションとしてマウントされたデバイスに応じて、「sd」、「mm」、またはその他の名前。 )
ルートディレクトリにマウントされたデバイスを何らかの方法で一覧表示できるようです。すべてがリストされているわけではありません。mount
を選択し、最後のスラッシュの後の最初の2文字を抽出します。 。 。
ベストアンサー1
マウントポイントは systemd によって制御されます。
以下では、システムマウントユニットファイルを一覧表示できます。
systemctl list-units --type=mount --all
出力例:
-.mount loaded active mounted Root Mount
boot-efi.mount loaded active mounted /boot/efi
...
ルートパーティションはによって制御されます-.mount
。
systemctl status -- -.mount
● -.mount - Root Mount
Loaded: loaded (/etc/fstab; generated)
Active: active (mounted) since Wed 2024-02-07
Where: /
What: /dev/sdaX
Docs: man:fstab(5)
man:systemd-fstab-generator(8)
デバイス名を抽出するには:
systemctl status -- -.mount |grep -oP '(?<=What: ).*' |xargs basename
systemctl show --value --property=What -- -.mount |xargs basename
男性systemd.mount
:
What:
マウントするデバイスノード、ファイル、またはその他のリソースへの絶対パスを取得します。