定制 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/

相关文章
相关标签/搜索