USBメモリから起動するKali Linux Liveで、ユーザーによるファイルの変更を保存するPersistenceモードを利用する為の手順です。
公式ドキュメントはこちらです。
02. Kali Linux Live | Kali Linux
Persistenceを利用することで、Live OSでありながら、
Persistenceはライブ起動イメージに対する差分を、後ほど作成するUSBメモリ内の書き込み可能領域に保存する為、元の起動ディスクイメージに対して変更を加えません。起動時にPersistenceを選択しなければ初期状態で起動します。
また、書き込み可能領域はLUKSによる暗号化が可能な為、紛失等のリスクに備えることが出来ます。(有効なパスワードが無ければディスク内容を解読出来ません。)
※危険な作業なので十分に注意して行って下さい。
詳しくは公式ドキュメントを参照して下さい。
フォーマットが完了したら下記コマンドで暗号化ドライブ(/dev/sdb3)の復号チャネル(復号化された状態)を/dev/mapper/my_usbにオープンします。
復号チャネル上にext3ファイルシステムを作成し、更に"persistence"というラベルを与えます。※Persistenceはディスクラベルが"persistence"のパーティションを検索して使用するのでラベルが必要です。
/dev/mapper/my_usbをLive Systemにマウントし、"persistence.conf"を作成します。
persistence.confについて詳しくはDebianのドキュメントを参照して下さい。
persistence.conf(5) — live-boot-doc — Debian jessie — Debian Manpages
作業が完了したら復号チャネルをクローズします。
公式ドキュメントはこちらです。
02. Kali Linux Live | Kali Linux
Persistenceを利用することで、Live OSでありながら、
- Wi-FiパスワードやVPN設定の保存
- Live起動OSで用意されていないソフトウェアのインストール
- 作業データの保存
Persistenceはライブ起動イメージに対する差分を、後ほど作成するUSBメモリ内の書き込み可能領域に保存する為、元の起動ディスクイメージに対して変更を加えません。起動時にPersistenceを選択しなければ初期状態で起動します。
また、書き込み可能領域はLUKSによる暗号化が可能な為、紛失等のリスクに備えることが出来ます。(有効なパスワードが無ければディスク内容を解読出来ません。)
ISOイメージファイルのダウンロード
Kali Linux Downloads より、「Kali 64bit」もしくは「Kali 32bit」のディスクイメージをダウンロードします。(最近のマシンであれば64bitで問題ないと思います。)USBメモリへの書き込み
ダウンロードしたISOイメージファイルをUSBメモリに書き込みます。※危険な作業なので十分に注意して行って下さい。
macOS
ターミナルより、
$ diskutil list
で取得したUSBメモリのデバイスファイルパス(/dev/disk2や/dev/disk3等、環境により異なります。)に対して、$ diskutil unmount /dev/disk2
$ sudo dd if=kali-linux-2017.3-amd64.iso of=/dev/disk2 bs=1m
の様に実行します。詳しくは公式ドキュメントを参照して下さい。
Windows
USBドライブにISOイメージを書き込む為に、Win32 Disk Imagerを使用します。空のUSBメモリを接続してWindowsのドライブとして認識されていることを確認して下さい。
- Win32 Disk Imagerを起動。
- Image File にKali LinuxのISOファイル(kali-linux-2017.3-amd64.iso等)を指定。
- Device にUSBメモリのドライブを指定する。([E:\]、[F:\]等、環境によって異なります。「マイコンピューター」等を開いて確認して下さい。)
- Write ボタンをクリックして書き込みを実行する。
Kali LinuxをLive起動する
USBメモリ内へのPersistence用パーティション追加や暗号化ドライブ作成などを行う為に、まずUSBメモリにインストールしたKali LinuxをLive起動します。(このLive OSに必要なツールが含まれています。)Macの場合 (MacBook Pro Early 2011で確認)
本体にUSBメモリを接続し、Optionキーを押しながら起動します。すると起動ドライブの選択画面になるので、「EFI Boot」を選択して起動して下さい。
![]() |
起動ドライブの選択画面でEFI bootを選択 |
※Kali LinuxをUSBから起動するにはMac本体のファームウェアがEFIブートに対応している必要がありますが、どのMacが対応しているかは公式には非公開の様です。2008年頃の非UnibodyモデルのMBPで試したところ、起動しませんでした。
Windowsマシン(PC/AT互換機)の場合
大抵は電源投入後にF2キーを押してBIOSで起動ドライブの優先順位を変更する必要があります。また、UEFIを使用している最近のパソコンはセキュアブートを無効化、BIOS互換モードに変更してから作業する必要があります。「UEFI USB起動」などで検索してみて下さい。
Live起動
無事にUSBから起動してBoot menuが表示されたら、Live Systemを起動します。
![]() |
一番上のLive SystemまたはLive (amd64)等でreturn |
![]() |
Live Systemのデスクトップ環境 |
Persistence用暗号化パーティションを作成する
2018/11追記
最新のISOイメージを書き込んだUSBドライブはGPartedでパーティション情報を読み込めなくなっていました。wipefsを使用してドライブからiso9660のシグネチャを消去する必要があります。
1. USBドライブのシグネチャを確認
次のコマンドを実行してパーティションテーブルのシグネチャを表示します。
/dev/sdb
はUSBドライブのデバイスファイルです。$ sudo wipefs /dev/sdb
DEVICE OFFSET TYPE UUID LABEL
sdb 0x8001 iso9660 2018-10-16-16-10-29-00 Kali Live
sdb 0x1fe dos
2. iso9660シグネチャを消去
シグネチャにiso9660が含まれていることを確認したら、
-o
オプションでマジックストリングのオフセット(iso9660は0x8001)を指定して消去します。 $ sudo wipefs -o 0x8001 /dev/sdb
どうやら、パーティションテーブルにiso9660のシグネチャが含まれているとGPartedはパーティション情報を読み込まないようです。
USBメモリの未使用領域に空のプライマリ・パーティションを追加
Live SystemのターミナルからGPartedを起動します。(公式ドキュメントではpartedを使用しますが、こちらの方が分かり易いと思います。)
$ gparted
GPartedが起動したらまず右上のデバイス選択メニューからUSBメモリを選択します。今回は/dev/sdbがUSBメモリのデバイスファイルでした。
※「Kali Live」の次にある704KBのfat16領域はEFI bootに使用するので削除しないで下さい。
GPartedで未使用領域(unallocated)を選択した状態で左上のパーティション追加ボタンをクリックし、新たなパーティションの設定をします。サイズは自動的に空き領域全体を使う様に設定されます。"Create as: Primary Partition"で File Systemは"unformatted"にします。
GParted上に"New Partition #1"が作成されます。更に"Apply All Operations"でデバイスへの書き込みを実行すると実際にパーティションが作成されます。
書き込みを実行すると/dev/sdb3が作成されます。続いてこの/dev/sdb3に対してLUKS暗号化設定を行います。
![]() | ||
USBメモリ(今回は/dev/sdb)に未使用領域(unallocated)がある状態 |
※「Kali Live」の次にある704KBのfat16領域はEFI bootに使用するので削除しないで下さい。
![]() |
未使用領域全体に空のプライマリ・パーティションを作成する |
GParted上に"New Partition #1"が作成されます。更に"Apply All Operations"でデバイスへの書き込みを実行すると実際にパーティションが作成されます。
![]() |
パーティションが追加された状態 |
書き込みを実行すると/dev/sdb3が作成されます。続いてこの/dev/sdb3に対してLUKS暗号化設定を行います。
LUKSでの暗号化設定
GParted等で作成した、USBメモリ内の空のプライマリ・パーティション(今回は/dev/sdb3)に暗号化ドライブを作成します。ターミナルでcryptsetupを実行します。
$ cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3
/dev/sdb3の内容が消える旨の警告を確認したら"YES"と入力し、ドライブの復号化に使うパスワードを二回入力して設定、フォーマットが開始されます。フォーマットが完了したら下記コマンドで暗号化ドライブ(/dev/sdb3)の復号チャネル(復号化された状態)を/dev/mapper/my_usbにオープンします。
$ cryptsetup luksOpen /dev/sdb3 my_usb
復号チャネル上にext3ファイルシステムを作成し、更に"persistence"というラベルを与えます。※Persistenceはディスクラベルが"persistence"のパーティションを検索して使用するのでラベルが必要です。
$ mkfs.ext3 -L persistence /dev/mapper/my_usb
$ e2label /dev/mapper/my_usb persistence
/dev/mapper/my_usbをLive Systemにマウントし、"persistence.conf"を作成します。
$ mkdir -p /mnt/my_usb
$ mount /dev/mapper/my_usb /mnt/my_usb
$ echo "/ union" > /mnt/my_usb/persistence.conf
$ umount /dev/mapper/my_usb
persistence.confについて詳しくはDebianのドキュメントを参照して下さい。
persistence.conf(5) — live-boot-doc — Debian jessie — Debian Manpages
作業が完了したら復号チャネルをクローズします。
$ cryptsetup luksClose /dev/mapper/my_usb
Live SystemをEncrypted Persistenceで起動する
マシンを再起動し、Boot menuから"Live USB Encrypted Persistence"を選択して起動します。
復号用のパスワードを求められます。
コメント
コメントを投稿