概要
Kali Linuxをpersistenceを用いたLiveUSBにして使っています。
以下の2つを改善したくてcustom isoを作りました。
- 新しくisoを書き込みLiveUSBにした際のアップデートが面倒
- ブート画面でのビープ音を消したり勝手にpersistenceでログインしてほしい
環境
LiveUSBの作成
macOS
(ddがあるmacやlinuxだと簡単です。windowsでもできます。)
live-build
Kali Linux(LiveUSBでもVirtualBoxでもデュアルブートでも普通のインストールされたものでもなんでもいい)
今回はLiveUSBでします。
LiveUSBの作成
custom isoを作るためにKaliの環境がいるため、まずは公式が配布しているisoを使ってLiveUSBを作ります。
はじめにKaliの公式からisoファイルをダウンロードしてください。
Kali公式ダウンロードページ
次は空のusbにisoファイルを書き込みます。isoファイルがだいたい2.8GBとかなのでそれ以上あればよいです。
ただpersistenceを使うことを考えると16か32は欲しいです。
macOSの場合
diskutil list
でusbのpathを調べる。
だいたい/dev/disk1です。このpathを間違えると大変なことになります。
diskutil unmountdisk /dev/diskN
します。Nにはさっき調べたのをいれます。
sudo dd if=/path/to/iso of=dev/diskN bs=1m
で書き込みます。
/path/to/isoはだいたい~/Download/kaliほにゃららだと思います。
diskutil eject /dev/diskN
で取り出します。
これでLiveUSBの完成です。
どのPCでもいいのでLiveUSBをさしてboot menuを開いて起動してください。
後で述べますがMacBookだとwifi設定するのにネットワークに繋げる必要があるというループに陥るため、USBテザリングできるスマホかアダプタつけて有線で繋げられる環境が要ります。
LiveUSBが起動できたら、初めは一番上のliveで起動します。
persistence設定
ただのliveでもlive-buildは可能ですが、ただのliveはシステム設定もユーザ設定も保存されないため作業が困難です。
そのためpersistence設定をします。
まずgparted
でpersistence領域の設定をします。(kaliはrootでログインされるのでsudoはいらないです)
gpartedがなかなか開かない時はLiveUSB以外のHDDやSSDまで読み込んでいる場合が考えられます。
fdisk -l
でLiveUSBのpathを調べてgparted /dev/sdb
とかするとLiveUSBだけ開く。
gparted上の右上のところでLiveUSBの方を開く。kaliのOS領域と謎のFAT32領域があってその後にunallocatedの領域があると思います。そこを選択し、新しいパーテーションを作ってください。
ファイルシステムはex4で、ラベルはpersistenceとしてください。
次に
mkdir -p /mnt/usb
mount /dev/sdb3 /mnt/usb
echo "/ union" > /mnt/usb/persistence.conf
umount /dev/sdb3
とします。/dev/sdb3のところはさっき作ったpersistence領域にしてください。(手順通りならこのままでOK)
これでpersistence設定は完了しました。
再起動しlive(persistence)を選んでください。
live-build
まずapt update
してください。
その際にupgradeすべきパッケージがたくさんあると言われますが、ここでapt upgrade
するととても時間がかかります。ここでしなくても後でisoをbuildする際にしてくれるので大丈夫です。どうせbuildするのにも時間かかるのでまとめてした方がいいです。
apt install git live-build cdebootstrap
git clone git://git.kali.org/live-build-config.git build
cd build
あとはupdateされたkaliのisoが欲しいだけなら、そこで
./build.sh --distribution kali-rolling --variant gnome --verbose
とすればできます。(ブート設定もしたい人は後でするのでしないでください。)
だいたいbuildには2時間くらいかかります。
ブート設定
続いて2つ目の改善したい点のブート画面でビープ音を消すのとpersistenceに勝手に入るというところに取り掛かります。
今現在のブートの設定は
/lib/live/mount/persistence/sdb1/isolinux/
にあります。isolinux.cfgが最初に読み込まれるファイルで、その中でstdmenu.cfgとmenu.cfgを呼び出し、menu.cfg内でlive.cfgとinstall.cfgを呼び出しています。
これらのファイルは変更できないため、custom isoで変更する必要があります。
先ほど落としたbuildの中のkali-config/common/includes.binary/isolinux
に自ら作ったcfgファイルを置くことでcustom isoに独自のブート設定が適用できます。
今回は以下の3つの点を変えたものを置きました。
- defaultのプロンプトを変える
- timeoutを設定し勝手に入る
- install関係の項目はなくす
他にも変えたい部分がある場合は現在のブート設定のcfgファイルを見ながら好きなように変えてください。
kali-config/common/includes.binary/isolinux/isolinux.cfg
ここではdefaultとtimeoutを変えました。
include menu.cfg
ui vesamenu.c32
default live-persistence
prompt 0
timeout 3
kali-config/common/includes.binary/isolinux/menu.cfg
ここではinclude install.cfgを消しました。
menu hshift 0
menu width 82
menu title Boot menu
include stdmenu.cfg
include live.cfg
menu clear
kali-config/common/includes.binary/isolinux/live.cfg
これは変えてないです。使わない項目は消していいかな。
label live-amd64
menu label ^Live (amd64)
menu default
linux /live/vmlinuz
initrd /live/initrd.img
append boot=live components splash username=root hostname=kali
label live-amd64-failsafe
menu label ^Live (amd64 failsafe)
linux /live/vmlinuz
initrd /live/initrd.img
append boot=live components username=root hostname=kali memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
label live-forensic
menu label Live (^forensic mode)
linux /live/vmlinuz
initrd /live/initrd.img
append boot=live noconfig=sudo username=root hostname=kali noswap noautomount
label live-persistence
menu label ^Live USB Persistence (check kali.org/prst)
linux /live/vmlinuz
initrd /live/initrd.img
append boot=live noconfig=sudo username=root hostname=kali persistence
label live-encrypted-persistence
menu label ^Live USB Encrypted Persistence (check kali.org/prst)
linux /live/vmlinuz
initrd /live/initrd.img
append boot=live persistent=cryptsetup persistence-encryption=luks noconfig=sudo username=root hostname=kali persistence
kali-config/common/includes.binary/isolinux/stdmenu.cfg
これは初めから置いてあるので書き換えるだけでいいです。
install関連の項目をなくした分だけmenu row
を10から6に変えました。
menu background splash.png
menu color title * #FFFFFFFF *
menu color border * #00000000 #00000000 none
menu color sel * #ffffffff #76a1d0ff *
menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff *
menu color tabmsg * #ffffffff #00000000 *
menu color help 37;40 #ffdddd00 #00000000 none
menu vshift 10
menu hshift 4
menu width 70
menu margin 5
menu rows 6
menu helpmsgrow 15
# The command line must be at least one line from the bottom.
menu cmdlinerow 16
menu timeoutrow 16
menu tabmsgrow 18
menu tabmsg Press ENTER to boot or TAB to edit a menu entry
MacBookでwifi設定に必要なものが組み込む
とりあえず最後にあるようにして1回wifi設定できれば、このようにして組み込めば今後はすぐにwifiが使えます。
kali-config/variant-gnome/package-lists/kali.list.chroot
のKali Applicationのところに
linux-headers-amd64
linux-image-amd64
linux-firmware
linux-firmware-free
broad-sta-dkms
を足せばいいです。
linux-headers-amd64
は64bitの場合です。下のおまけでapt install
したものです。
最後にbuild
./build.sh --distribution kali-rolling --variant gnome --verbose
だいたい2時間かかります。gnomeのところkdeに変えるとデスクトップ環境をkdeにできます。
おまけ:Kali LinuxのMacBookでのwifi設定
apt install firmware-linux
apt install firmware-linux-free
apt install linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,')
apt install linux-image-$(uname -r|sed 's,[^-]*-[^-]*-,,')
apt install broadcom-sta-dkms
modprobe -r b44 b43 b43legacy ssb brcmsmac bcma
modprobe wl
でできます。
ただapt install
にネットワーク接続が必要なので、wifi以外でMacBookをネットワーク接続しないといけないです。
あとlinuxのkernelのversionが最新のものでないとうまくいかないことがあります。
KaliのLiveUSBではbootを変更できないためkernelの変更方法がわかりませんでした。
しかしcustom isoではkernelも最新のものが採用されるため、上で行った方法だとmacbookでもkaliでwifiをつなぐことができます。