Linuxを実行している外部USBドライブを起動して、メインコンピュータのハードドライブがLinuxを実行していることを確認し、いくつかのファイルを変更するために/mnt
ディレクトリにマウントしようとしています。
コンピュータに接続されているデバイス(ハードドライブ)を検出できますが、そのディスクにオペレーティングシステムがあるのか、オペレーティングシステムがLinuxのバリエーションであるのかを検出する方法がわかりません。
Pythonで実装しようとしています。
答え1
ディスクが「Linuxを実行」するかどうかを決定するプロセスには、3つの要素が含まれます。
- 確認するパーティションのリスト
- 各パーティションのマウント
- 各パーティションに「魔法の」ファイルがあることを確認してください。
- 各パーティションのマウント解除
ステップ1では、次のように呼び出して "parted"を使用できます。子プロセス.check_output()戻り値を解析します。
ステップ2と4にはそれぞれ「mount」を使用します。 「削除」を通じて子プロセス.check_call()、出力を解析する必要がほとんどないからです。
残りの部分は、os.path.exists()
変更したいファイルで作業する3つのステップです。更新したくない場合は、open()
ファイルを更新し、ファイルが存在しない場合は例外をキャッチすることができます(この場合、Linuxを実行するパーティションがない可能性があります)。
ただし、Linuxディレクトリツリーのすべてのサブディレクトリは独自のパーティションに存在する可能性があります。したがって、/mnt/boot/grub/grub.cfg
パーティション2はパーティション1の下にインストールされているため、パーティション1またはパーティション2の確認が機能しない可能性があります/boot
。
答え2
パーティションをマウントすると、そのパーティションにLinuxがインストールされていることを確認できます。どのディストリビューションかを調べるには、マニュアル/etc/os-release
と/etc/lsb-release
を参照してください/etc/issue
。/etc/issue.net
そのうちの1つ以上で配布名を見つけることができます。