Mac
 Computer >> コンピューター >  >> システム >> Mac

MacでEFIブートを使ってUSBにKali Linuxを完全インストールする方法【VirtualBoxでの仮想化手順も解説】

著者:Flavio De Stefano

このチュートリアルは、Macで使えるKali Linuxのフルインストール済みUSBメモリを作成したい方のためのガイドです。なお、永続化機能付きのLive版Kaliを作成する方法ではない点にご注意ください。

USBメモリにKaliをインストールする際の問題点は、KaliがディスクをVFATファイルシステムでパーティショニングすることです。macOSが認識できるのはHFS+パーティションと、それに必要な特定のファイルのみだからです。

用意するもの

  • お使いのMac
  • Kali ISOインストーラーを書き込んだUSBメモリ
  • Kaliのインストール先となるUSBメモリ、SDカード、または外付けSSD(16GB以上・USB 3.0推奨)

このチュートリアルは、Kali向けに適切な修正を加えた上で、以下の記事から大きな影響を受けています。https://medium.com/@mmiglier/ubuntu-installation-on-usb-stick-with-pure-efi-boot-mac-compatible-469ad33645c9

ステップ1:USBへのLiveインストール

まず、以下のコマンドでKaliをUSBメモリに書き込みます。この手順の詳細は割愛しますが、まずはここから始めましょう。

$ sudo dd if={KALI_ISO.iso} of=/dev/{USB} bs=1m

準備ができたらMacを再起動し、2つのUSBメモリを挿してALTキーを押しながら起動します。EFI bootを選択すると、Liveインストーラーが立ち上がります。

MacでEFIブートを使ってUSBにKali Linuxを完全インストールする方法【VirtualBoxでの仮想化手順も解説】

Kaliインストーラーはタイムゾーンやキーボードレイアウトなど、いくつかの質問をしてきます。

ディスクのパーティショニングを尋ねられたら、Manual(手動)を選択します。次に、KaliをインストールしたいターゲットのUSBドライブを選択してください。ドライブはサイズなどの特徴で見分けられます。Continueをクリックすると、ドライブのパーティショニングが行われます。

同じ画面に戻ったら、ターゲットUSBドライブ配下のFREE SPACE(空き領域)を選択し、Continueをクリックします。続いてAutomatically partition the free space(空き領域の自動パーティショニング)を選び、推奨オプションに従って進みます。最後にFinish partitioning and write the change to disk(パーティショニングの終了と変更の書き込み)を実行しましょう。

これでデータのコピーが始まります。完了まで約30分ほどかかりますので、しばらくお待ちください。

ステップ2:GRUB Liveからの起動

インストールが完了するとMacが再起動するので、再びALTキーを押してEFI bootを選択します。

次にすべきことは、Live GRUB経由でインストール済みのKaliシステムを読み込むことです。インストールされたシステムには、macOSが認識できるブートローダーが存在しないためです。

GRUBが読み込まれたら、cキーを押してGRUBのコマンドラインインターフェースを表示します。

ここで、KaliがどのHDにインストールされているかを確認する必要があります。GRUB CLIでlsと入力し、その後USBメモリを抜いて再度lsと入力してみましょう。

grub> ls
(memdisk) (hd0) (hd1) (hd1,gpt3) (hd1, gpt2) (hd1,gpt1) ...

あるhd{X}が消えたことに気づくはずです。それがあなたのドライブです。次に、正しいgptを見つけます。おそらくgpt2でしょうが、念のため以下のコマンドで確認できます。

grub> ls (hdX,gpt2)/boot/grub
unicode.pf2 ...

unicode..と表示されればそれが正しいgptです。違う場合は他のgptを試してみてください。続いて、パーティションのUUIDを調べて控えておきます。

grub> ls -l (hdX},gpt{X})
 Partition hd2,gpt2: Filesystem type ext* 〈...snip...〉 UUID e86c20b9-83e1-447d-a3be-d1ddaad6c4c6 - Partition start at [...]

これでGRUBに起動パラメータを設定できます(Tabキーで補完が使えます)。

grub> set root=(hd{X},gpt{X})
grub> linux /boot/vmlinuz〈...tab here!...〉.efi.signed root=UUID=〈the UUID〉
grub> initrd /boot/initrd〈...tab here!...〉
grub> boot

これでLive GRUB経由でKaliのフルインストール環境が起動するはずです。Live環境との違いは、ログイン時に設定したパスワードが認識される点で判別できます。

ステップ3:EFIパーティションの修正

Kaliにログインしたら、ターミナルを開いて以下を入力します。

$ fdisk -l

自分のドライブを見つけてください。

次に、gdisk(Kaliにデフォルトでインストール済み)を開いてドライブをパーティショニングします(この操作は十分注意してください)。

$ gdisk /dev/sd{X}
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
 MBR: hybrid
 BSD: not present
 APM: not present
 GPT: present
Found valid GPT with hybrid MBR; using GPT.
Command (? for help):

パーティションテーブルを表示し、最初のパーティションのタイプがEF00であることを確認します。

Command (? for help): p
Disk /dev/sdd: ...
[...]
Number Start (sector) End (sector) Size Code Name
 1 2048 1050623 512.0 MiB EF00 EFI System Partition
[...]

ここから行うのは以下の2つです。

  • EF00パーティションを削除する
  • 同じ場所に新しいHFS+パーティションを作成する
Command (? for help): d
Partition number (1-3): 1
Command (? for help): n
Partition number (1-128, default 1): 1
セクターの指定ではデフォルト値のまま進めてください
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): AF00
Changed type of partition to 'Apple HFS/HFS+'
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
OK; writing new GUID partition table (GPT) to /dev/sdd.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.

これで未フォーマットのHFS+パーティションができました。フォーマットには専用ツールが必要ですが、そのためにはDebianのソースリストをaptに追加する必要があります。

$ echo "deb https://ftp.debian.org/debian unstable main contrib non-free" > /etc/apt/sources.list.d/debian.list
$ apt update
$ apt install hfsprogs

これでパーティションをフォーマットできます。

$ mkfs.hfsplus /dev/sd{X}1 -v Kali
Initialized /dev/sd{X}1 as a 512 MB HFS Plus volume

次に、/etc/fstabファイルを編集します。

$ gedit /etc/fstab

Geditが起動したら、以下の行を探して削除してください。

# /boot/efi was on /dev/sd{X}1 during installation
UUID={XXXXXXX} /boot/efi vfat defaults 0 1

続いて、ブートパーティションをアンマウントします。まず以下のコマンドで場所を特定しましょう。

$ mount | grep /boot/efi
/dev/sd{Y}1 on /boot/efi ...
$ umount /dev/sd{Y}1

そして、fstabに必要なエントリを追加します。

$ echo "UUID=$(blkid -o value -s UUID /dev/sd{X}1) /boot/efi auto defaults 0 0" >> /etc/fstab

次に、新しくフォーマットしたHFS+パーティションにEFIデータを格納できるよう、GRUBを再インストールします。

$ mkdir -p /boot/efi/EFI/Kali
$ echo "This file is required for booting" > /boot/efi/EFI/Kali/mach_kernel
$ echo "This file is required for booting" > /boot/efi/mach_kernel
$ grub-install --target x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi --bootloader-id=Kali

さらに、Macのブートローダーが起動できるよう、ブートローダーコードを「bless(祝福)」する必要があります。これにはhfsblessというバイナリが必要ですが、aptでは入手できません。問題ありません。リポジトリをクローンしてビルドしましょう。

$ cd /root
$ git clone https://github.com/detly/mactel-boot
$ cd mactel-boot
$ make

そしてblessを実行します。

./hfs-bless /boot/efi/EFI/Kali/System/Library/CoreServices/boot.efi

最後のステップは、GRUB設定ファイルの作成です。

$ sed -i 's/GRUB_HIDDEN/#GRUB_HIDDEN/g' /etc/default/grub
$ sed -i 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=0.1/' /etc/default/grub
$ grub-mkconfig -o /boot/grub/grub.cfg

これで完成です!再起動してALTキーを押せば、MacのブートローダーにUSBメモリが表示されるはずです。

ステップ4:VirtualBoxでUSBを仮想化する

このUSBメモリをVirtualBox(macOS上)で起動したい場合、簡単なテクニックがあります。

まず、USBメモリのセクタを指すVMDKディスクを作成します。そのために、対象ディスクを特定しましょう。

$ diskutil list
/dev/disk0 (internal):
 #: TYPE NAME SIZE IDENTIFIER
 0: GUID_partition_scheme 500.3 GB disk0
 1: EFI EFI 314.6 MB disk0s1
 2: Apple_APFS Container disk1 499.3 GB disk0s2
/dev/disk1 (synthesized):
 #: TYPE NAME SIZE IDENTIFIER
 0: APFS Container Scheme - +499.3 GB disk1
 Physical Store disk0s2
 1: APFS Volume Macintosh HD 222.0 GB disk1s1
 2: APFS Volume Preboot 22.4 MB disk1s2
 3: APFS Volume Recovery 519.9 MB disk1s3
 4: APFS Volume VM 3.2 GB disk1s4
/dev/disk3 (external, physical):
 #: TYPE NAME SIZE IDENTIFIER
 0: GUID_partition_scheme *32.0 GB disk3

この例では/dev/disk3が該当します。作業前に必ずアンマウントしておきましょう。

$ diskutil unmountDisk /dev/disk{X}

VirtualBoxがインストールされている状態で、以下を実行します。

$ sudo VBoxManage internalcommands createrawvmdk -filename ~/Kali.vmdk -rawdisk /dev/disk{X}
$ chmod 777 ~/Kali.vmdk
$ chmod 777 /dev/disk{X}

これで準備完了です。VirtualBoxのUIを起動し、以下の設定で新しい仮想マシンを作成しましょう。

MacでEFIブートを使ってUSBにKali Linuxを完全インストールする方法【VirtualBoxでの仮想化手順も解説】

VirtualBoxがディスクを尋ねてきたら、先ほど作成したVMDKファイルを指定します。

MacでEFIブートを使ってUSBにKali Linuxを完全インストールする方法【VirtualBoxでの仮想化手順も解説】

仮想マシンを起動する前に、設定画面でCPU数、ビデオ、メモリを調整しておきましょう。

特に重要なのは、System > MotherboardEnable EFIを有効にすることです。

MacでEFIブートを使ってUSBにKali Linuxを完全インストールする方法【VirtualBoxでの仮想化手順も解説】

これでEFI経由での起動が可能になります。仮想マシンを起動したら、すぐにF12キーを押してください。

Boot Maintenance Managerを選択します。

MacでEFIブートを使ってUSBにKali Linuxを完全インストールする方法【VirtualBoxでの仮想化手順も解説】

次にBoot from fileを選択します。

MacでEFIブートを使ってUSBにKali Linuxを完全インストールする方法【VirtualBoxでの仮想化手順も解説】

そして{SATA_DRIVE} > EFI > Kali > System > Library > CoreServices > boot.efiの順に選んでいきます。

MacでEFIブートを使ってUSBにKali Linuxを完全インストールする方法【VirtualBoxでの仮想化手順も解説】

これで完成です!

MacでEFIブートを使ってUSBにKali Linuxを完全インストールする方法【VirtualBoxでの仮想化手順も解説】

それでは、良いペネトレーションテストライフを!

  1. iPhoneのライブ写真をInstagramに投稿する方法【ストーリーズ・フィード対応】

    ```html ライブ写真(Live Photos)は、iPhone 6sおよび6s Plus以降のすべてのiPhoneに搭載されている魅力的な機能です。シャッターを切った前後約3秒間の動画と音声が記録され、静止画に動きが加わることで、まるでハリー・ポッターの世界のような魔法の写真を実現します。さらに、Instagramのアップデートにより、このライブ写真をストーリーズはもちろん、フィードにも投稿できるようになりました。必要なのはiPhone、Instagramアカウント、そして最近撮影したライブ写真だけ。手順はとてもシンプルなので、SNSのプロフィールにひと味違う動きを加えたい方は、ぜひ以下

  2. MacBookが充電できないときの原因と対処法まとめ

    MacBook ProやMacBook Airが充電できなくなると、バッテリー残量との勝負のような焦りを感じるものです。この記事では、Macノートブックが充電されなくなる考えられる原因と、その解決方法を詳しく解説します。 さらに、充電してもすぐに減ってしまう場合や、Appleが公表しているバッテリー駆動時間より大幅に短い場合の対処法についてもご紹介します。 MacBookが充電できない原因は? MacBook AirやMacBook Proが充電できない理由は、実はとても単純なケースも少なくありません。まずは以下の基本的なチェックから始めて、問題の所在を特定しましょう。 本当にプラグが差し込