博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定制 Kali Linux Live USB 的另一种方法
阅读量:6701 次
发布时间:2019-06-25

本文共 1998 字,大约阅读时间需要 6 分钟。

  hot3.png

原理

脱离了广大机械硬盘和 USB 2.0 群众的实际情况,是不得人心的。下面介绍一种更加符合科学发展观的定制方法。

启动时,GRUB 或 extlinux 引导 /live/vmlinuz 和 /live/initrd.img, initrd.img 初始化之后会寻找 /live 目录下以 squashfs ext2 ext3 ext4 xfs jffs2 后缀的文件和以 .dir 为后缀的目录,然后将它们 union mount 成根目录。union filesystem,联合文件系统是将多个文件夹联合挂载在一个文件夹下,对联合目录的读写作用在指定为 rw 的分支目录上。

#initrd.img/bin/boot/9990-overlay.sh:	69             if [ -n "${addimage_directory}" ] && [ -d "${addimage_directory}" ]	70             then	71                 for FILESYSTEM in squashfs ext2 ext3 ext4 xfs jffs2 dir	72                 do	73                     for IMAGE in "${addimage_directory}"/*."${FILESYSTEM}"	74                     do	75                         if [ -e "${IMAGE}" ]	76                         then	77                             image_string="${image_string} ${IMAGE}"	78                         fi	79                     done	80                 done	81             fi

定制

这里使用工具 unionfs-fuse,相对于 aufs,unionfs 支持在用户层上,兼容性较好。 Debian 安装: apt-get install unionfs-fuse,接着执行:

cd /tmp	mkdir custom	mkdir union	mount /path/to/live/filesystem.squashfs /mnt		unionfs-fuse -o cow,max_files=32768 -o allow_other,use_ino,suid,dev,nonempty /tmp/custom=RW:/mnt=RO /tmp/union/ #1	cd union	mount -o bind /proc proc/ #2	chroot . #3
  • 1:将两个目录挂载至 /tmp/union, 对 /tmp/union 的写操作会回溯到 /tmp/custom 上。-o cow,max_files=32768 -o allow_other,use_ino,suid,dev,nonempty 是必需的,要不然文件读写方面会出问题。
  • 2:proc 安装某些软件可能需要这里的信息,比如 VMWare。
  • 3:主机系统如果不是 Kali,可能需要设置额外的变量,比如 PATH。

进去了之后,我们就可以上下其手,为所欲为了。操作完成之后,删除 /tmp/custom 内多余的目录和文件,打包:

cd /tmp	mksquashfs custom/ custom.squashfs	cp custom.squashfs /path/to/live/

重启之后即可看到效果。

GRUB2 引导 extlinux

直接复制 Kali ISO 的内容到U盘的某一分区后,假设是 /dev/sdb2,目录名是 kaliLive,安装 extlinux

extlinux -i /path/to/kaliLive/

这时 /dev/sdb2 的首 512 字节是 extlinux 的 bootloader。如果你在 /dev/sdb 安装了 GRUB 2 可以以:

set root=(hd0,msdos2)	chainloader +1	boot

引导 extlinux。

其它

  • 复制+手动安装 bootloader 的方法会在 kali 1.0.1 下无法使用 persistence 功能。dd 的方法没测试过。
  • 对于需要频繁修改的小文件,比如 .bashrc,可以考虑放在 .dir 目录下。

转载于:https://my.oschina.net/ReJaVu/blog/425470

你可能感兴趣的文章
Flex强制类型转换错误
查看>>
Insert Interval
查看>>
信号处理过程中的几种常见傅里叶相关的变换
查看>>
Spring中基于AOP的@AspectJ
查看>>
MLP(多层神经网络)介绍
查看>>
SQL SERVER 事务和锁
查看>>
JavaScript变量提升的理解
查看>>
CentOS安装和配置Apache(httpd)
查看>>
华为/H3C Syslog配置
查看>>
23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数...
查看>>
如何查看Isilon的节点的CPU的信息?
查看>>
C# if为false仍然进入方法体,==和qeual结果不一致
查看>>
MongoDB简单使用 —— 驱动
查看>>
WPF——TargetNullValue(如何在绑定空值显示默认字符)
查看>>
给 iOS 开发者的 RxSwift(一)
查看>>
Excel2013 破解(编辑工作表受保护)密码
查看>>
Python基础-变量作用域
查看>>
php课程 6-21 HTML标签相关函数
查看>>
Spring Boot的Tomcat 启动详解
查看>>
Elasticsearch 2.3.3 JAVA api说明文档
查看>>