私は Angstrom を実行している Atmel SAM9X システムを持っています。起動中にユーザーがボタンを押したときにリカバリ パーティションが起動するようにリカバリ パーティションを作成しようとしています。
ブートストラップを変更したので、起動時にボタンを押し続けると、代替 Linux カーネルがロードされます。私が望んでいるのは、代替カーネルが通常のメイン パーティションではなく、リカバリ ブート パーティションから Linux をロードすることです。
これは本当に可能なのでしょうか? または、2 つのカーネルを使用せずにリカバリ パーティションをロードできますか?
これが必要な理由は、メインの起動可能なパーティションが破損した場合に、回復パーティションがメイン パーティションにコピーされ (回復パーティションを備えた Dell または HP Windows マシンと同様)、メインの起動可能なパーティションが復元されるためです。
編集:
Giles の提案で解決しました。ブートストラップはカーネルのコマンド ライン引数を設定していましたが、root=/dev/mmcblk0p3
それに (3 番目の SD パーティションからブート) を追加したところ、目的のパーティションからブートしました。
答え1
カーネルには、コンパイル時に決定されるデフォルトのルート パーティション設定が含まれています (コマンドを使用してバイナリ イメージで変更できますrdev
)。カーネル コマンド ラインに引数を渡すと、ブート時にこのデフォルトを上書きできます (たとえば、root=/dev/mmcblk9p42
デフォルトではなく MMC デバイス 9 パーティション 42 からブートできます)。コマンド ラインはブートローダによってカーネルに渡されるため、ブートローダの設定を変更する必要があります。
initrd または initramfs がある場合、コンパイルされたルート パーティションまたはブートローダによって渡されたルート パーティションが上書きされる可能性があります。