別のOSで再起動する

別のOSで再起動する

複数の OS を搭載したラップトップを持っています。

現在の OS をシャットダウンして別の OS を起動できるコマンドはありますか?

windows->Ubuntu およびその逆

ありがとう

答え1

はい、ブート選択に Grub を使用すれば可能です:-

  • Linuxを起動します。
  • 有効にするログインするか、suまたは を使用して権限を取得しますsudo -s
  • デフォルトに応じて、または/boot/grub.cfgにコピーします。/boot/grub.win/boot/grub.lin
  • 編集して、ブート リスト内の代替 OS の番号 (0 からカウント) に/etc/default/grub変更します。GRUB_DEFAULT=
  • を実行しupdate-grub、必要に応じてまたは/boot/grub.cfgにコピーします。/boot/grub.lin/boot/grub.win
  • GRUB_DEFAULT=以前の値に戻します/etc/default/grub
  • 作成しbootlinbootwin含む:
    cp /boot/grub.lin /boot.cfgまたはcp /boot/grub.win /boot.cfg
    shutdown -r now

bootlinこれで、Ubuntu から電話をかけたり、したりできるようになりましたbootwin

Windows でも同様のことを行う必要があります:-

  • 最初のインストールext2fsd
  • U:Ubuntu パーティションにドライブ文字 (例 ) を割り当て、書き込み可能にします。
  • これで、を上書きする適切なコマンドを含むbootlin.cmdと を作成し、その後に以下を実行できます。bootwin.cmdcopyU:\boot\grub.cfg
    shutdown -r

でブートする場合は、ntldrのコピーを 2 つ使用して同様のテクニックを使用できますboot.ini(最初に読み取り専用、システム、および隠し属性をクリアする必要がある場合があります)。他のブート ローダーでも同様のテクニックを使用できる可能性がありますが、これらで何が機能するかについては他の人に提案を任せます。

注意: 私はext2fsd読み取り専用モードではうまく動作しますが、書き込みモードでは使用したことはありません。Ubuntuシステムが破損する可能性があるため、数回試して正常に動作することを確認するまで、バックアップを確実に取ってください。Windowsから編集する方が安全かもしれません。grub.cfg 現地ででは、ディレクトリの変更は必要ありませんが、同じファイル システム内の作業ファイルを使用しない何らかの Windows インライン エディターが必要になるか、Cこれを行うために を数行作成する必要があります。

答え2

これらの詳細は、UEFI が GPT システムを処理する方法と完全に一致しない可能性がありますが、MBR ベースのシステムについては説明しています。

公式の(古い)標準では、マスター ブート レコードにあるものを使用します。「fdisk」コマンドを使用して、MBR の詳細を変更できます。

従来の MBR には、パーティションにフラグが付けられるかどうかを指定するビットがいくつか含まれています。標準では、フラグが付けられるパーティションは 1 つだけと指定されていますが、これは必ずしもブート コードによって強制されるわけではありません。ユーザーが特定のパーティションにフラグを付けるように指定すると、従来の fdisk プログラムは通常、フラグが付けられた別のパーティションをチェックし、見つかった場合はフラグを解除します。「フラグが付けられた」パーティションを表すために、「選択された」パーティションなどの別の言葉が使用される場合があります。

次に、従来の MBR にはいくつかの「コード」(命令) が含まれます。システムが起動すると、このコードが実行されます。コードは MBR をチェックして各パーティションのサイズを確認し、どのパーティションにフラグが付けられているかを確認します。次に、フラグが付けられたパーティションにあるいくつかの追加コードを実行して、起動プロセスを続行します。

これが、広くサポートされている標準です。残念ながら、この標準的な方法では、fdisk にアクセスして手動で操作する必要があります。したがって、実行できるプログラムは 1 つだけではありません。ただし、これは最も広くサポートされている標準です。

引用するOpenBSD FAQ: マルチブート:

事実上すべての OS がこれを行うプログラムを提供しています。OpenBSD のものは fdisk(8) で、同様の名前のプログラムは Windows 9x や DOS、その他多くのオペレーティング システムにあります。これは、シャットダウンと再起動に長い時間がかかる OS やシステムにとって非常に望ましいものです。これを設定して再起動プロセスを開始し、立ち去ってコーヒーを飲み、希望どおりに起動されたシステムに戻ることができます。次の OS を選択するための魔法の瞬間を待つ必要はありません。

人々が作った派手な代替手段のせいで、最も広く支持されている公式プロセスの利点がこれほど頻繁に見落とされてしまうのはおかしなことだ。

質問では非対話性が指定されていなかったにもかかわらず、これが望まれるほど自動化されていない可能性があることは承知しています。したがって、簡単な答えは、はい、そのようなコマンドが存在します。それは「fdisk」です。

さて、他にもいくつかバリエーションがあるので、そのようなソリューションを探しているのであれば、自動化はおそらく可能です。オペレーティング システムで「boot」などのコマンドがあるかどうか確認するといいでしょう。古い OS/2 オペレーティング システムには、起動するオペレーティング システムを変更できる「BOOT」コマンドが含まれていたことは知っています。実行する必要がある正確なコマンドは、実際に使用するブート コードによって異なります。複数の「ブート マネージャ」プログラムが利用可能で、この機能は現在、より多くのオペレーティング システムに組み込まれています。これは良いニュースです。悪いニュースは、プロセスがそれほど標準化されていないため、すべての異なるバリエーションとうまく統合できる特定のプロセスを 1 つだけ提供できないことです。基本的に、ソリューションを選択して使用する必要があります。主な懸念は、複数のオペレーティング システムから実行でき、システムの起動中に処理されるディスクのセクションに書き込むために使用できるプロセスを見つけることです。これらのセクションは通常、ファイル システムの一部ではなく、ウイルス対策機能によって、ディスクのこれらの重要なセクションへの書き込みが制限される可能性があります。

基本的に、このプロセスでは、パーティションのフラグ ビットを変更するか、MBR のブート コードを変更するか、MBR がブートを続行するために使用するパーティション上のコードの動作を変更します。つまり、これら 3 つの異なるアプローチがあり、これらのアプローチはそれぞれ、利用可能なさまざまなオプションによって実際に使用されます。

4 番目のアプローチは、BIOS がどのディスクから起動するかを変更することです。ただし、このアプローチは従来、異なるシステム間で互換性がはるかに低いため、実際に使用されるものというよりは理論上の可能性です。(ただし、多くのユーザーは、F12 キーなどを押してブート メニューを表示するなど、対話的にこのアプローチを使用しています。場合によっては、BIOS セットアップに入り、以降のブートで使用するデフォルトのディスクを変更するだけです。)

最も一般的な方法は、システムをあるオペレーティング システムで起動したときに MBR 全体の 512 バイト イメージを作成し、次にシステムを別のオペレーティング システムで起動したときに MBR 全体の 512 バイト イメージを保存することです。次に、必要なソフトウェアを使用して、その 512 バイトをディスクの最初の 512 バイトに直接書き込みます (「dd」のようなもので十分です)。その場合の最大の課題は、オペレーティング システムによる許可を得ることだけかもしれません。

AFH の回答は、Linux から grub を使用してこれを行う方法を示しているようです。XP/2003 時代の Windows ブート マネージャーは、このような種類のセクター イメージ (「Boot.ini」ファイルによって参照される) を使用していたため、Windows を終了するには、Boot.ini テキスト ファイルを変更する必要があります (このプロセスは Vista/2008 では変更されている可能性があります。新しいシステムで試す前に、新しいブート マネージャーを確認してください)。これらのソリューションを実装する正確な方法は、使用を停止しようとしているオペレーティング システムによって異なります (たとえば、Microsoft Windows のバージョン)。

答え3

一方、ハードウェアの再起動を呼び出すと、電源をオフにしてその後に電源をオンにするのとほぼ同じになります。したがって、すべてのRAMメモリが失われます。電源をオンにすると、ブートプロセスはマザーボードのファームウェアによって処理されます。マザーボードのファームウェアにいくつかのことを伝えたい場合は、メッセージこのようなメッセージを RAM に残してはなりません。ただし、ディスク (または他の永続的なメディア、EFI は不揮発性変数を設定するメカニズムを提供していると思います) に何か (何でも) を書き込むことはできます。

前述のアプローチに加えて、Linuxカーネルにはケセックハードウェアをダウンさせることなく、別のシステムに「制御を明け渡す」機能。Windows カーネルを直接 kexec することはできないかもしれませんが、回避策として、ローダー プログラムに kexec し、ローダー プログラムに Windows システムを初期化させるという方法があります。

関連情報