LoginSignup
4
5

More than 5 years have passed since last update.

Kali Linux の live-build による custom iso

Last updated at Posted at 2017-06-01

概要

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をつなぐことができます。

4
5
14

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5