私は組み込みLinuxビルドにYoctoを使用しています。私の目標は、システムが起動するたびにファイルを強制的にスキャンすることです。これまで、次の手順を行いました。
- ファイルを変更
/etc/default/rcS
しENABLE_ROOTFS_FSCK=yes
、FSCKFIX=yes
。 - 私は起動するたびに
tune2fs -c 1 <my_fs>
ファイルシステムをチェックするためにこのコマンドを使います。
次のログが表示されます。
`EXT4-fs (mmcblk0p2): warning: maximal mount count reached, running e2fsck is recommended`
ルートパーティションをマウントする前に、fsck はマウント後すぐにパーティションを確認しようとします。したがって、プロセスは中断されます。丸太:
mount: / is busy
*** ERROR! Cannot fsck root fs because it is not mounted read-only!
パーティションをマウントする前にfsckにファイルシステムをチェックするように強制する方法は?助けてくれてありがとう。
答え1
ご質問を誤解している可能性がありますが、
tune2fs
走るために走る必要はありませんfsck
。 fsパラメータを「調整」しないため、プロキシtune2fs
としてこれを使用するとfsck
オーバーヘッドが追加され、起動プロセスが少し遅くなる可能性があります。
たぶんあなたはどういう意味ですかe2fsck
?fsck
~で行動する「パッケージ」または「フロントエンド」供給遺産サポートする。通常fsck
、電話だけでe2fsck
実際の作業が行われます。
とにかく - 答えは次のとおりです。
fsck
オペレーティングシステムによって呼び出しが異なる可能性があると思います。私の「組み込みLinux」オペレーティングシステムの1つはRPiであり、fsck
起動時に呼び出す2つの方法があります。今後ルートファイルシステムがマウントされます。
forcefsck
ファイルシステム/
IE のルートディレクトリに名前が付いたファイルを作成します。$ sudo touch /forcefsck
起動するたびにこれを行う必要があります。私のOSは起動中にこのファイルを削除します。
エディタを使用して以下を追加します
/boot/cmdline.txt
。fsck.mode=強制
$ nano /boot/cmdline.txt
から:
console=serial0,115200 console=tty1 root=PARTUUID=6c586e13-02 rootfstype=ext4 エレベーター=期限 fsck.repair=はい rootwait到着する:
console=serial0,115200 console=tty1 root=PARTUUID=6c586e13-02 rootfstype=ext4 リフト=期限 fsck.mode=force fsck.repair=yes rootwait
繰り返しますが、OSによって異なると思いますので、YMMVです。
答え2
これを行うには、initramファイルシステムが必要です。実際のルートに切り替える前に、実際のルートファイルシステムを確認してください。
ファイルシステムがマウントされている場合は変更できません(できません)、ルートファイルシステムをマウント解除できません。