Kali LinuxをライブUSBから1TBの外付けハードディスクにインストールしようとしていました。最初は、H2O Insyde BIOSでライブUSBを起動できませんでした。次に、ペンドライブのパーティションテーブルをGPTに変換し、EFIというラベルの付いた500MB FAT32パーティションを作成し、BOOTX64.efi
とgrubx64.efi
をEFIパーティション内のブートディレクトリにコピーしました。私はVirtualBoxでUbuntuを使用してライブUSBを作成し(unetbootinとユニバーサルインストーラーで作成した場合、起動しません。)ライブUSBの起動に成功しました。
次に、外部ハードディスクにKali Linuxをインストールしようとしました。ガイド付きパーティションと手動パーティションの両方でインストール手順全体は成功しますが、GRUBインストールは失敗します。それを修正するためにオンラインフォーラムとウィキを参照しましたが、何も機能しません。
ライブUSBを使用して端末からGRUB-EFIを手動でインストールしようとしました。私は wiki.archlinux.org および GRUB2 EFIを再インストールする方法? に従いましたが、どちらも失敗しました。最初のリンクは成功していますが、Kali Linuxを起動できません。 2つ目は、パーティションをマウントしてchroot
を実行した後にgrub-efi
パッケージをインストールしようとすると、cdrom0パーティションにKali Linux CD/DVDを挿入するように求められます。ライブUSBからインストールしているため、CD/DVDにはありません。
ライブUSBの場合と同じプロセスを実行して、外部ハードディスクにEFI FAT32パーティションを作成し、これら2つのファイルをコピーしましたが、成功しませんでした。
以前、質問をしました here 。ハードコードされたUEFI-BIOSを編集するよう提案されました。しかし、私はすべての外付けハードディスクに、ブートローダーとEFIパーティションを含むLinux OS全体をインストールしたいと思っています。そして、最初の起動デバイスを外部デバイスとして設定します。ハードディスクを接続すると、Linuxから起動し、Windows 7から起動します。ライブUSBの起動に成功したので、ハードコーディングされたUEFI-BIOSに問題はないと思います。
ライブUSBを作成してUbuntuで同じプロセスを試しましたが、インストール中にネットワークの選択を求められた後、インストールが続行されません。ネットワークを使用しない、またはネットワークを使用することを選択しましたが、パーティショニングに進みません。
レガシーモードでBIOSを使用してLinuxをインストールしてから、UEFIを使用してブートするように変換するGRUB-EFIをインストールするという別の提案を受けました。しかし、私のGPTパーティションではレガシーモードで起動せず、MBRパーティションではUEFIで起動しません。そのため、レガシーモードを使用してインストールする場合、インストールをクリーンアップしてディスクをGPTパーティションに変換しないと、UEFIで起動できません。だからそれは役に立たない。
誰か助けてくれますか?
私のハードディスクは1TB Seagateです。 (GPTパーティションに変換されます。)
おそらくgrub
は必要ありません。事は-あなたのUEFIファームウェアはあなたのブートローダーです-それはすでにです。 grub
を介してブートすると、実際にはchainloadブートローダー-これは不要な冗長性です。私はrEFInd
を使用しています-これはブートマネージャーのみです-何をブートするかを選択し、それをファームウェアとファームウェアが起動します。メニューに過ぎません。
Linuxカーネル自体がEFI実行可能なバイナリであるため、これは良いことです。ファームウェアから実行するだけで、ブートマネージャ/ローダーなしでLinuxをブートできます。私もそのオプションをお勧めしますが、rEFInd
のような介在するメニューマネージャーほど柔軟ではありません。なぜなら、そのインターフェイスを提供するためにファームウェア開発者に依存する必要があるためです。ただし、efibootmgr
インターフェースに興味がある場合は、永続的なファームウェア変数を設定する必要があります。
以下は、最初にdd
、次にgdisk
を使用して、起動可能なEFIシステムパーティションがあることを確認する方法のチュートリアルです。
開始する前にパーティションテーブルが完全にクリアであることを確認するために、そのディスクの非常に初期のブロックを上書きする必要があります。
dd ibs=4M count=1 if=/dev/zero of=/dev/${USB_DISK}
次に、gdisk
に入ります。 USBディスクが存在する/dev/...
デバイスファイルを/dev/${USB_DISK}
に置き換えます。
gdisk /dev/${USB_DISK}
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): ?
メニューに?
を使用してすべてのオプションを最初に表示しますが、クリーンなGPTパーティションテーブルを作成するために最初に必要なのはo
です。
...
Proceed? (Y/N): y
次に、EFIシステムパーティションが必要になります。 n
コマンドを使用して、n
ewパーティションを作成します。以下のプロンプトで、入力されたキーが表示されないのは、ENTER
を押してデフォルトに同意するためです。
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-1331166, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-1331166, default = 1331166) or {+-}size{KMGTP}: 500M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef00
上記の最後のプロンプトでL
を押すと、使用可能なすべてのパーティションタイプのリストが表示されますが、efiシステムパーティションの場合は、タイプef00
が必要です。 /
やswapなどに必要な他のパーティションを作成するのに必要な回数だけn
を繰り返します。繰り返しますが、L
を使用してさまざまなタイプを表示しますが、デフォルト以外の8300はスワップ以外のすべてで機能するはずです。
p
を使用して新しいパーティションテーブルを確認し、保留中の変更を書きたい場合はw
でフォローします。
...
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
次に、EFIシステムパーティションにfat
ファイルシステムを作成します。 -n
は、パーティションに名前を付けます。 ESP
を使用する:
mkfs.vfat -n ESP /dev/${USB_DISK}1
mkfs.fat 3.0.26 (2014-03-07)
必要な他のすべてのパーティションにはmkfs.${desired_file_system} /dev/${USB_DISK}[num]
を使用します。そのファイルシステムの--help
を使用して、パーティションのGPTラベルを指定する方法を見つけることも最適です。
refind.bin.*.Zip
が見つかります ここ を取得し、ディスクに解凍して、ブートローダーをインストールします。
mkdir /tmp/refind
unzip ~/Downloads/refind-bin-0.7.9.Zip -d $_
...
$_/ref*/install.sh --usedefault /dev/${USB_DISK}
Not running as root; attempting to elevate privileges via Sudo....
Installing rEFInd on Linux....
UnmountEsp = 1
Copied rEFInd binary files
Copying sample configuration file as refind.conf; edit this file to configure
...
これでブートマネージャーが手に入りました。 Linuxシステムをディスクにインストールしたら、次のことを行う必要があります。
mkdir -p /mnt/bootdisk/
mount /dev/${USB_DISK}1 /mnt/bootdisk
mkdir -p /mnt/bootdisk/EFI/kali_linux/
cp ${kali_root}/boot/vmlinuz-* \
/mnt/bootdisk/EFI/kali_linux/
cp ${kali_root}/boot/initrd-* \
/mnt/bootdisk/EFI/kali_linux/
printf %s\\n "LABEL=${GPT_LABEL} /esp vfat defaults 0 1" \
"/esp/EFI/kali_linux /boot none bind,defaults 0 0" \
| Sudo tee -a /etc/fstab
mkdir /esp
mount -a
それはちょうどそれを行います。 rEFInd
を少し設定する必要があります。以下の${GPT_LABEL}
をルートファイルシステムのGPTラベルに置き換えます。
echo '"Kali" "root=LABEL=${GPT_LABEL} rootwait"'\
>/mnt/bootdisk/EFI/kali_linux/refind_linux.conf
これで起動可能なシステムが得られます。 refind.conf
のメイン../BOOT
に目を通してください。コメントが非常に多く、ドキュメント自体がかなり多くなっています。 rodsbooks.com にアクセスして、そこでドキュメントを読むこともできます。
EFIインターフェイスでデバイスを起動するのが難しいので、既存のWindowsブートローダーを使用できます。
やることが2つあります
1。通常どおりLinux OS(Kali)をインストールしますが、GRUBインストールステップでルートパーティションを選択して、ディスク全体ではなくGRUBをインストールします。つまり、sda7ではなくsda7 sda7がインストール用のルートとして選択されたパーティションであると仮定します)
2。 grub2win をダウンロードし、Windows OSのルートにコピーします。
3。 Grubからルートパーティションにチェーンロードして、WindowsブートローダーにLinuxエントリを作成します。開くには
grub2win->管理->新規追加-> os-> ubuntu->チェーンロード->パーティション
変化する
必要に応じて、OSにUbuntu。
正しいパーティション番号へのパーティション(sda7を思い出してください)。
変更を保存して再起動します。これで、GRUB= WindowsブートローダーからLinuxを選択できます。
とりあえずインストールしたのはgrub-pc
MBRパーティションペンドライブ。 KPT LinuxをGPTパーティション外付けハードディスクにインストールしました。 Kali Linuxを使用するたびに、BIOS設定をレガシーに切り替え、ペンドライブを挿入して起動します。 GRUBチェーンは、Linuxがインストールされているハードディスクにロードし、今のところ問題なく動作しています。しかし、これは別の方法であり、問題が解決するのを待っています。