UbuntuでGrub 2を使用してモバイルハードディスクのブートを修復


grub 2のインストールには、次のパッケージをインストールする必要があります.
        grub-pc, grub-common
パッケージ管理ツールで確認できます.
 
grub-install-vは、現在のバージョンを表示します.従来のgrubバージョン番号は0.97以下で、grub 2のバージョン番号は1.96以上です.
 
grub 2のプロファイルは/boot/grub/grub.cfgですが、このファイルは変更できません./etc/grub.d/のファイルおよび/etc/default/grubファイルを編集し、update-grubを使用してプロファイルを生成します.
 
つまり、通常のプロセスは次のようになります.
sudo apt-get install grub-pc, grub-common    #grub 2が既にインストールされている場合は不要です
sudo grub-install --root-directory=//dev/sda    #デバイスにgrub 2ブートをインストールする
sudo update-grub  #grubプロファイルの生成
 
現在の問題はupdate-grubです.grub-installはデバイスを指定してインストールすることができますが、プロファイルを生成するupdate-grubは指定できません.
whereis update-grubは/usr/sbin/ディレクトリの下で検索し、編集はgrub-mkconfigに対するショートカットであることを発見しました.コードは以下の通りです.
#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"

ではgrub-mkconfigのコードを確認し続けます(以下、前のキーディレクトリ定義部分のみを切り取ります)
prefix=/usr
exec_prefix=${prefix}
sbindir=${exec_prefix}/sbin
libdir=${exec_prefix}/lib
sysconfdir=/etc
PACKAGE_NAME=GRUB
PACKAGE_VERSION=1.98+20100804-5ubuntu3
host_os=linux-gnu
datarootdir=${prefix}/share
datadir=${datarootdir}
pkgdatadir=${datadir}/`echo grub | sed "${transform}"`
grub_cfg=""
grub_mkconfig_dir=${sysconfdir}/grub.d

ここではsysconfdirがシステムプロファイルのパスを指定したパスが定義されていることがわかります.このディレクトリのgrub.d/*とdefault/grubを使用してプロファイルを生成します.
では、sysconfdirを修正して、修復するモバイルハードディスクのetcディレクトリの下に移動し、実行することができます.
sudo grub-mkconfig-o/カスタムパス/grub.cfg
これにより、grub.cfgが「/カスタムパス/」で生成されます.
 
もちろん、この時点では問題があります.現在見つかっているシステムは、現在のオペレーティングシステムが存在するハードディスクをメインハードディスクとしてスキャンしているので、grub.cfgでオペレーティングシステムが設定されている部分を猫の絵虎のように修正すればいいのです.修正する部分は、主にシステムカーネルバージョンとデバイスに注目しています.
ls-l/dev/disk/by-uuid#すべてのデバイスのuuidを表示
ls-l{修復するハードディスクマウントポイント}/boot      #使用可能なカーネルの表示
 
さて、ここで、この修正後のgrub.cfgを「{修復するハードディスクマウントポイント}/boot/grub/」に移動し、ターゲットハードディスクで起動を再開します.
 
私はここまで成功しました....突然、/etc/grub.d/*と/etc/default/grubの構成については、本稿では言及していませんが、参照してください.https://help.ubuntu.com/community/Grub2#/etc/default/grub