BIOSモードの10年前のPC(2006年にはEFIにPCはありません!)、基本的なnVidiaグラフィックカード。 BIOSは、Grub2がインストールされている/ dev/sdbで起動するように設定され、/ dev/sdaにある14.04 + 12.04を指します。
EFIモードに設定された最近のPC。コアi7 6700内の統合Intel GPUを使用するグラフィックカードなし。
/ dev/sda上のUbuntu 16.04(新規インストール)[Samsung 500G SDD]
Ubuntu 16.04はこの構成で正常に動作します。 EFIはSSDでの起動を指示します。
今、バックアップとして古いバージョンのUbuntuを持ちたいので、便利なTweakを再適用するのを忘れた場合、古いPCからHitachiドライブを引き出して新しいPCにインストールしました。
だから今私は持っています:
16.04でgrub-update
を実行して、14.04でグラブメニューを取得しました。マシンは、16.04でもgrubメニューが表示された状態で正常に起動します。
しかし、問題は、14.04でgrubメニューから選択すると、正しく起動しないことです。
Ubuntuが実行中のハードウェアをまったく見つけなかった場合、すべてが「デフォルト」であるように見えます。
14.04でnVidiaドライバーを削除してセッションに参加しましたが、次のようになります。
ディスク、キーボード、およびマウスは正常に機能します。
この14.04のインストールは最初はBIOSだったので、「普通の」ように見えますが、EFIはハードウェアをカーネルとは異なる方法で表示しているようです。
最も近い質問はこれでした: 単一のブートハードウェアでブート修復なしでUbuntu BIOSインストールをEFI/UEFIに変換するコマンド?
しかし、この投稿では、(16.04に)動作しているマシンがなく、すでに動作しているEFIブートがインストールされていませんでした。
私は自動化されたブート修復を使用するのではなく、私もやっていることを理解することを好むでしょう(私の場合は巧妙なことをするでしょう).
上記の質問に対する答えは、修復するバージョンにgrub-efiをインストールすることを提案しました。私の場合、実際には機能しません:
実際、14.04が上書きした後、/ dev/sdaの先頭を復元して復元することもできますが、そのような操作は「危険」であり、すべてを破壊するリスクがあります。
成功しました
失敗した
modprobe
e1000e(16.04で使用されるイーサネットIntelドライバ)とptpおよびpps_coreを試してみました。モジュールは正しくロードされましたが、イーサネットインターフェースを提供しませんでしたinsmod efivars
を追加しようとしました:動作せず、14.04ブートモジュールリストにefivars.modがありません(16.04にもありません)将来使用するために予約したスペアパーティションに14.04をEFIモードでインストールします。可能な場合はgrub-efiをインストールせず(上記参照)、不可能な場合は破棄する必要のないUSBキーに入れます。次に、インストールされているバージョンとHDD上のバージョンとの違いを理解しようとします。
次に避けるべきステップは何ですか:14.04を完全に再インストールするか、16.04 efi grubを上書きしますか?
BIOS/EFIの問題でドライバーを混乱させない場合にカーネルがドライバーを自動的に推測するようにします。
ここに、私が解決できない問題についての私の理解があります(明確なドキュメントがないため)。
ブートプロセス:(私が理解している限り)
efivars
であり、そのためのドキュメントがいくつかあります。 https://firmware.intel.com/blog/accessing -uefi-variables-linux 。基本的に、/ sys/firmware/efiには疑似ファイルシステムがあり、カーネルが構成を照会し、それに応じて動作できるようにします。したがって、私の推測では、明らかにBIOSがインストールされたシステムはそうではないということです。カーネルがBIOSを照会し、システムをEFIとして起動する方法、カーネルは「ハードウェアなし」を検出するため、デフォルトマシンのみを初期化します。
だから、私が見つけようとしているのは、14.04の古いインストールを伝える方法です: "今、あなたはEFIを介してブートされました。efivars
を使用してハードウェアの詳細を取得してください"。
...そして、ブートプロセスの(簡略化された)説明の仮定がひどく間違っていた場合は、遠慮なく修正してください。
私はあきらめます古いインストールをBIOSからEFIに変換するアイデア。
代わりに、@ oldfredの提案を使用して、必要なときにMotherBoardをデュアルブートします。
これには実際に利点があります:
とにかく、BIOSモードでもドライバーは読み込まれませんが、これは別の問題なので、これらのドライバーを試して修正するために別の質問をします。
したがって、Linux Boxの詳細なブートプロセスについて良いドキュメントを見つけた場合、この質問は閉じられます。それを読んでうれしいです!
要約すると、BIOSブート14.04ディスクをUEFI 16.04システムに移動し、update-grubを再実行し、14.04システムをブートできるようになりましたが、ビデオ/ドライバーの問題があります。解決策は、すべての(古いシステムの)専用ドライバーをアンインストールしてデフォルトのシステムに戻し、新しいドライバーをインストールすることです。
「ソフトウェアアップデーター」の「設定」ボタンをクリックし、「Ubuntuソフトウェア」タブの下で、「独自のドライバー...」ボタンをクリックし、「追加のドライバー」タブの下で、提供されている独自のドライバーを確認し、クリックします必要なもので(そしておそらく再起動)。自動的には何も起こりません。
また、バックポートを14.04システムにインストールして、6700の最新のカーネルを取得することもできます。それだけです。 「変換」は必要ありません。それで、移動した14.04更新がそのシステムの(未使用の)grub.cfgを変更した場合、16.04システムでupdate-grubを再実行するだけです。/boot/efiへの参照がない場合はどうでしょう(ただし、/ etc/fstabファイルの行で簡単に追加できます)。ブートの問題はまったくありません。