注:更简便的方法请参考此文:定制 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盘有两种方法,一种是解压这里的 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
便可。
另外一种稍微简便的方法是不制做 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/