定製 Kali Linux Live ISO

準備環境

注:更簡便的方法請參考此文:定製 Kali Linux Live USB 的另外一種方法node

Kali Linux 自帶了許多實用工具,將 ISO 刻錄到U盤上作成的 Live USB 能夠用在許多場合,好比無盤系統、公共電腦或者別人的電腦等。重啓以後 Live 系統上的改動不會保存,而且 Live 磁盤空間比較小,不能臨時裝備過大的軟件。因此定製本身的 Live 系統就頗有必要了。本文講述的是基於原有的 Live 文件系統定製,準備環境以下:linux

Kali Linux 鏡像:kali-linux-1.0.6-i386.iso
	U盤一隻:大於4G,並格式化爲 ext4 文件系統
	製做環境:Kali Linux

定製

定製的基本思路就是解壓原 ISO 鏡像的 filesystem.squashfs,chroot 進去修改,將修改後的文件系統壓縮,而後寫入U盤。ios

首先,掛載 ISO:bash

mkdir -p /mnt/kaliiso
	mount -o loop kali-linux-1.0.6-i386.iso /mnt/kaliiso

找到 filesystem.squashfs,解壓(apt-get install squashfs-tools安裝 unsquashfs):工具

unsquashfs /mnt/kaliiso/live/filesystem.squashfs /mnt/kalifs

在這裏我將文件系統解壓到了 /mnt/kalifs,接着執行:oop

BASE=/mnt/kalifs
	mount -o bind /dev $BASE/dev
	mount none -t proc proc/
	mount none -t sysfs sys/
	mount none -t devpts dev/pts/
	cp -rf /etc/resolv.conf $BASE/etc/resolv.conf
	chroot $BASE

以後,就能夠出於本身的喜愛修改 Live 系統了。ui

修改完畢以後,不要退出 chroot,執行:.net

apt-get clean
	rm -rf /tmp/*
	echo "" > /etc/resolv.conf
	rm -rf /root/.bash_history

清理垃圾。根據你的操做,可能還須要清理 /root 目錄下的一些文件。code

接着 Ctrl-D 退出 chroot,umount 以前掛載的文件夾:blog

umount -lf $BASE/proc
	umount -lf $BASE/sys
	umount -lf $BASE/dev/pts #最好先 umount 這個
	umount -lf $BASE/dev

開始製做 squashfs 文件:

mksquashfs $BASE filesystem.squashfs -e boot

寫入U盤

製做鏡像

要製做可啓動U盤有兩種方法,一種是解壓這裏的 kali-linux-1.0.6-i386.iso, 將 filesystem.squashfs 替換成本身製做好的這個版本,使用 genisoimage(apt-get install genisoimage) 製做成 ISO 鏡像,而後 dd 寫入 U盤。

首先新建一個目錄,

mkdir -p /mnt/newiso

而後將 /mnt/kaliiso 下除了 filesystem.squashfs 全部文件複製到這裏,將本身製做的文件系統複製到 /mnt/newiso/live 接着:

cd /mnt/newiso
	genisoimage -rational-rock -volid "KaliLive" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output kali-linux.iso /mnt/newiso

這時作好的 kali-linux.iso 的 mbr 沒有引導代碼,執行:

dd if=/usr/lib/syslinux/mbr.bin of=kali-linux.iso bs=440 count=1

把如今的 ISO 寫入 U盤,假設所在設備是 /dev/sdX,執行:

dd if=kali-linux.iso of=/dev/sdX

便可。

syslinux 引導

另外一種稍微簡便的方法是不製做 ISO 鏡像,將 /mnt/newiso/ 的全部內容複製到U盤的分區裏面(固然 /mnt/newiso/live/filesystem.squashfs 是你定製的那個版本),而後用 syslinux 引導。

將U盤的一個分區掛載到 /mnt/usb,將它格式化成 ext4 文件系統(也能夠是 fat,不過我沒有嘗試過):

cp -rf /mnt/newiso/* /mnt/usb
	cd /mnt/usb
	mv isolinux syslinux
	mv syslinux/isolinux.bin syslinux/syslinux.bin
	mv syslinux/isolinux.cfg syslinux/syslinux.cfg

而後安裝 syslinux 到 U盤上,這裏因爲使用的是 ext4 文件系統,要用 extlinux 安裝。假設掛載到 /mnt/usb 的是 /dev/sdX1:

extlinux -i /mnt/usb

這會在 /mnt/usb 下生成 ldlinux.sys 文件。

最後寫入 syslinux 的 mbr:

dd if=/usr/lib/extlinux/mbr.bin of=/dev/sdX bs=440 count=1

###使用 syslinux 6.02

Debian 自帶 syslinux 的版本是 4.05,目前最新版是 6.02。就我碰到的狀況,4.05 版不支持一些新式的鍵盤。要使用最新版首先到 https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.02.tar.xz下載源碼包並執行:

tar xvf syslinux-6.02.tar.xz
	cd syslinux-6.02
	apt-get install uuid-dev
	make bios	#這裏僅編譯 bios 版本
	make install

我的經驗是,6.02 和 4.05 在尋找配置文件有差異,4.05 會尋找安裝目錄下的 syslinux.cfg 和 syslinux/syslinux.cfg,而 6.02 只尋找安裝目錄下的了。因此安裝的話要這樣:

extlinux -i /mnt/usb/syslinux

而後更新 syslinux.bin 和 mbr.bin,並將全部 c32 文件複製過去(並不知道具體須要哪些,但在這個版本下缺乏某些可能會沒法引導):

cp -rf /usr/share/syslinux/isolinux.bin /mnt/usb/syslinux/syslinux.bin
	cp -rf /usr/share/syslinux/*.c32 /mnt/usb/syslinux/
	dd if=/usr/share/syslinux/mbr.bin of=/dev/sdX count=1 bs=440

用 syslinux 引導至關靈活,省去了製做 ISO 的麻煩。而且若是U盤有多個分區的話,不會像用 dd 那樣會格式化分區。實際上對其餘分發版的 Live ISO 引導也能夠用這種方法,我的強烈推薦。

參考

http://willhaley.com/blog/create-a-custom-debian-live-environment/

相關文章
相關標籤/搜索