定制 Kali Linux Live ISO
2014-04-30 00:00
1696 查看
摘要: Kali Linux 自带了许多实用工具,将 ISO 刻录到U盘上做成的 Live USB 可以用在许多场合,比如无盘系统、公共电脑或者别人的电脑等。重启之后 Live 系统上的改动不会保存,并且 Live 磁盘空间比较小,不能临时装备过大的软件。所以定制自己的 Live 系统就很有必要了。本文讲述的是基于原有的 Live 文件系统定制。
Kali Linux 自带了许多实用工具,将 ISO 刻录到U盘上做成的 Live USB 可以用在许多场合,比如无盘系统、公共电脑或者别人的电脑等。重启之后 Live 系统上的改动不会保存,并且 Live 磁盘空间比较小,不能临时装备过大的软件。所以定制自己的 Live 系统就很有必要了。本文讲述的是基于原有的 Live 文件系统定制,准备环境如下:
首先,挂载 ISO:
找到 filesystem.squashfs,解压(
在这里我将文件系统解压到了 /mnt/kalifs,接着执行:
之后,就可以出于自己的喜好修改 Live 系统了。
修改完毕之后,不要退出 chroot,执行:
清理垃圾。根据你的操作,可能还需要清理 /root 目录下的一些文件。
接着
开始制作 squashfs 文件:
首先新建一个目录,
然后将 /mnt/kaliiso 下除了 filesystem.squashfs 所有文件复制到这里,将自己制作的文件系统复制到 /mnt/newiso/live 接着:
这时做好的 kali-linux.iso 的 mbr 没有引导代码,执行:
把现在的 ISO 写入 U盘,假设所在设备是 /dev/sdX,执行:
即可。
将U盘的一个分区挂载到 /mnt/usb,将它格式化成 ext4 文件系统(也可以是 fat,不过我没有尝试过):
然后安装 syslinux 到 U盘上,这里由于使用的是 ext4 文件系统,要用 extlinux 安装。假设挂载到 /mnt/usb 的是 /dev/sdX1:
这会在 /mnt/usb 下生成 ldlinux.sys 文件。
最后写入 syslinux 的 mbr:
###使用 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下载源码包并执行:
个人经验是,6.02 和 4.05 在寻找配置文件有差别,4.05 会寻找安装目录下的 syslinux.cfg 和 syslinux/syslinux.cfg,而 6.02 只寻找安装目录下的了。所以安装的话要这样:
然后更新 syslinux.bin 和 mbr.bin,并将所有 c32 文件复制过去(并不知道具体需要哪些,但在这个版本下缺少某些可能会无法引导):
用 syslinux 引导相当灵活,省去了制作 ISO 的麻烦。并且如果U盘有多个分区的话,不会像用 dd 那样会格式化分区。实际上对其他分发版的 Live ISO 引导也可以用这种方法,个人强烈推荐。
准备环境
注:更简便的方法请参考此文:定制 Kali Linux Live USB 的另一种方法Kali Linux 自带了许多实用工具,将 ISO 刻录到U盘上做成的 Live USB 可以用在许多场合,比如无盘系统、公共电脑或者别人的电脑等。重启之后 Live 系统上的改动不会保存,并且 Live 磁盘空间比较小,不能临时装备过大的软件。所以定制自己的 Live 系统就很有必要了。本文讲述的是基于原有的 Live 文件系统定制,准备环境如下:
Kali Linux 镜像:kali-linux-1.0.6-i386.iso U盘一只:大于4G,并格式化为 ext4 文件系统 制作环境:Kali Linux
定制
定制的基本思路就是解压原 ISO 镜像的 filesystem.squashfs,chroot 进去修改,将修改后的文件系统压缩,然后写入U盘。首先,挂载 ISO:
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,接着执行:
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 系统了。
修改完毕之后,不要退出 chroot,执行:
apt-get clean rm -rf /tmp/* echo "" > /etc/resolv.conf rm -rf /root/.bash_history
清理垃圾。根据你的操作,可能还需要清理 /root 目录下的一些文件。
接着
Ctrl-D退出 chroot,umount 之前挂载的文件夹:
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/相关文章推荐
- 封装定制的Kali Live ISO
- 【转】怎样完全定制自己的debian 6.0 安装 iso
- The Art of Exploitation 2nd Edition (Jon Erickson), Official LiveCD ISO
- win7 系统下安装Tex Live过程,使用ISO镜像,不用区份32位系统或者64位系统
- 定制自己Linux发行版(ISO):向安装程序添加自定义软件包
- CentOS 定制ISO后,安装时出现错误 /dev/root does not exist
- Fedora桌面Live,Fedora KDE Live,Fedora 定制版 Live有什么不同?
- grub2 u盘引导启动CentOS-7-x86_64-Minimal-1511.iso Fedora-Live-Workstation-x86_64-22-3.iso
- 定制 CentOS 6.5_x64 ISO 系统(mkisofs)
- 基于CentOS6.0-64定制系统iso制作(修改)
- 用Mini ISO通过网络安装Kali Linux
- CentOS6.5定制系统iso制作
- 定制自己的Linux ISO
- 基于CentOS6定制自己的ISO安装光盘
- 使用 live-build 定制ubuntu livecd
- CentOS 6.5 iso系统定制
- kali linux 2016.2 live usb persistence 制作
- Kali Linux 安装 LivePool
- 系统定制成iso文件
- 定制fedora安装iso