定製 Kali Linux Live USB 的另外一種方法

原理

前文 脫離了廣大機械硬盤和 USB 2.0 羣衆的實際狀況,是不得人心的。下面介紹一種更加符合科學發展觀的定製方法。linux

啓動時,GRUB 或 extlinux 引導 /live/vmlinuz 和 /live/initrd.img, initrd.img 初始化以後會尋找 /live 目錄下以 squashfs ext2 ext3 ext4 xfs jffs2 後綴的文件和以 .dir 爲後綴的目錄,而後將它們 union mount 成根目錄。union filesystem,聯合文件系統是將多個文件夾聯合掛載在一個文件夾下,對聯合目錄的讀寫做用在指定爲 rw 的分支目錄上。bash

#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/

重啓以後便可看到效果。ui

GRUB2 引導 extlinux

直接複製 Kali ISO 的內容到U盤的某一分區後,假設是 /dev/sdb2,目錄名是 kaliLive,安裝 extlinux.net

extlinux -i /path/to/kaliLive/

這時 /dev/sdb2 的首 512 字節是 extlinux 的 bootloader。若是你在 /dev/sdb 安裝了 GRUB 2 能夠以:code

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

引導 extlinux。blog

其它

  • 複製+手動安裝 bootloader 的方法會在 kali 1.0.1 下沒法使用 persistence 功能。dd 的方法沒測試過。
  • 對於須要頻繁修改的小文件,好比 .bashrc,能夠考慮放在 .dir 目錄下。
相關文章
相關標籤/搜索