小提示:本文使用的操作系統為linux,所有命令都在 root 用戶下執行。
在計算機硬件越來越NB的時代下,把Kali安裝到USB中對我們來講然意義并不是太大,那為什么還要介紹Kali的U盤安裝方法呢?
- 便攜;
- 從USB啟動Kali完全不影響主機的操作系統(虛擬機運行在宿主機上,總有種不安全的感覺)。
1、材料準備
- Kail Linx 鏡像,Kali Linux 官方下載地址 。
- 一個容量為8GB的U盤(建議U盤大小為16GB以上,8GU盤太小,我這里使用8GB容量U盤只是出于演示目的)。
- 一臺安裝了Linux操作系統的主機(我這里使用的Debian9)。
準備Kali鏡像:這是我所下載的Kali鏡像
準備U盤:
a. 插入U盤,確認設備名稱以及分區。
使用以下命令查看:
fdisk -l
由上面可以看出,目前我的系統有三個磁盤:
- 一個465.8G,設備名稱為 sda ,路徑是 /dev/sda(這是我本機的系統盤)
- 一個111.8G,設備名稱為 sdb ,路徑是 /dev/sdb(這是我額外掛載的用于存儲家目錄數據的磁盤)
- 一個7.5G,設備名稱為 sdc,路徑是 /dev/sdc (這就是我們剛剛插入的8GU盤)
- 現在我們不管另外兩個磁盤,來看下U盤,可以看到,目前我的U盤上有三個分區
- /dev/sdc1
- /dev/sdc2
- /dev/sdc3
b. 清除分區(如果你的U盤沒有分區,那你可以直接跳到下一步);
以下是分區清除過程:“
# 進入U盤(操作U盤) root@c5:/home/code5# fdisk /dev/sdc Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. # 輸入指令 d ,表示刪除分區 Command (m for help): d # 輸入3 表示刪除分區3,也就是 /dev/sdc3 這個分區 Partition number (1-3, default 3): 3 Partition 3 has been deleted. # 刪除分區 2 Command (m for help): d Partition number (1,2, default 2): 2 Partition 2 has been deleted. # 刪除分區 1,由于上面刪除了兩個分區,U盤中只剩下一個分區,所以不用選擇分區號,fdisk會直接刪除分區1 Command (m for help): d Selected partition 1 Partition 1 has been deleted. # 寫入對U盤的修改 Command (m for help): w
再次查看分區;
fdisk -l
從上面可以看到,我們的U盤已經沒有任何分區了;
所以我們現在擁有了一個沒有任何分區的純凈U盤。
2、制作啟動盤
現在我們的Kali鏡像以及純凈U盤準備好了,開始制作kali的啟動盤。
要制作Kali的啟動盤很簡單,使用dd命令即可。
# 把 kali 鏡像寫入到我們的U盤中 dd if=./kali-linux-2019.1a-amd64.iso of=/dev/sdc bs=1M # if(input file) : 輸入 # of(output file): 輸出 # bs(bytes) : 輸入/輸出塊大小
寫入完成后,你U盤會多出兩個分區,一個是引導分區,一個是Kali的系統分區。
所以,你的U盤看起來應該是這樣的:
使用 dd 命令制作Kali啟動盤后就是可直接使用的 Live 系統了,插上到USB中,把電腦設置為USB啟動即可使用。
3、為啟動盤做持久化處理
第二步中我們已經把Kali的啟動盤制作好了,但還不能持久化存儲數據,一旦重啟,你對Kali的所有修改都會復原,所以我們要對啟動盤做一些持久化的處理,讓其可以存儲我們的修改和數據。
做持久化處理說白了就是在啟動盤中:劃分存儲分區,配置存儲分區,用于存儲數據。
所以,我們先使用 parted命令 在U盤中新建一個分區,以下是新建分區步驟:
# 進入U盤(操作U盤) root@c5:/home/code5# parted /dev/sdc GNU Parted 3.2 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) (parted) # 使用print指令查U盤所有分區 (parted) print Model: Generic Flash Disk (scsi) Disk /dev/sdc: 8053MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: s # 未劃分前有兩個分區 Number Start End Size Type File system Flags 1 32.8kB 3483MB 3483MB primary boot, hidden 2 3483MB 3484MB 721kB primary # 把剩余空間劃分為存儲分區 # 3484: 第二個分區的起點 # 8053: U盤總大小 (parted) mkpart primary 3484 8053 (parted) print Model: Generic Flash Disk (scsi) Disk /dev/sdc: 8053MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: # 劃分存儲分區后 Number Start End Size Type File system Flags 1 32.8kB 3483MB 3483MB primary boot, hidden 2 3483MB 3484MB 721kB primary 3 3484MB 8053MB 4569MB primary lba # 退出 parted (parted) quit Information: You may need to update /etc/fstab. root@c5:/home/code5#
現在,你的U盤看起來應該是這樣:
分區劃分好了,向分區寫入 ext3 文件系統, 并命名為 persistence(這一步很重要!這一步很重要!這一步很重要!)
mkfs.ext3 -L persistence /dev/sdc3
寫入文件系統后,為存儲分區分配一個名為 persistence 的卷標(這一步很重要!這一步很重要!這一步很重要!)
e2label /dev/sdc3 persistence
現在你可以從U盤啟動你的Kali,并在Kali的設置中把語言改為中文,重啟Kali。
重啟后你會發現,語言是英文而不是我們重啟前所設置的中文,這說明我們的Kali啟動盤還沒有實現數據的持久化存儲。
那是因為我們還未配置我們的存儲分區。
現在,讓我們重新插入U盤。
掛載我們的存儲分區(因為我們要向存儲分區寫入配置文件)。
# 在掛載目錄下新建 my_usb 目錄用于掛載我們的存儲分區 mkdir -p /mnt/my_usb # 掛載存儲分區到 /mnt/my_usb mount /dev/sdc3 /mnt/my_usb
寫入配置文件;
# 在存儲分區創建配置文件 persistence.conf 并寫入內容: / union echo "/ union" > /mnt/my_usb/persistence.conf
卸載存儲分區;
umount /dev/sdc3
持久化的處理到這里已經結束了,現在!你可以彈出你的U盤,再次嘗試修改Kali的使用語言 ~
關于啟動選項問題
在啟動過程中你會發現Kali給出了許多個啟動選項;
其中關于 持久化 的選項有兩個
- Live system (persistence, check kali.org/prst)
- Live system (encrypted persistence, check kali.org/prst)
Live system (persistence, check kali.org/prst):這個選項用于啟動可持久化的Kali
Live system (encrypted persistence, check kali.org/prst):這個選項用于啟動可持久化的加密kali(也就是把存儲分區加密后的kali),關于如何制作加密Kali,請看Kali官方教程,這里不再贅述。
什么,你不想看官方教程,那我在這里把命令簡單的復制并解釋一下下。
# 首先把你的U盤搞成純凈U盤 # 假設你的U盤設備為 /dev/sdc # 假設你使用的Kali鏡像為 kali.IOS ### 把鏡像寫入到到U盤,得到兩個分區 /dev/sdc1 /dev/sdc2 dd if=kali.iso of=/dev/sdb bs=1M ### 劃分存儲分區 /dev/sdc3 # 選擇操作的設備 parted /dev/sdc #劃分一個 start~end 大小的分區,根據你的U盤大小來設置 mkpart primary start end # 退出 parted quit ### 加密存儲分區 /dev/sdb3 # LUKS加密 存儲分區 /dev/sdc3 cryptsetup --verbose --verify-passphrase luksFormat /dev/sdc3 # 映射 /dev/sdb3 存儲分區為 my_sub cryptsetup luksOpen /dev/sdc3 my_usb # 向分區寫入 ext3 文件系統 mkfs.ext3 /dev/mApper/my_usb # 為存儲分區分配卷標 persistence e2label /dev/mapper/my_usb persistence ### 寫入配置文件 # 創建掛載目錄 mkdir -p /mnt/my_usb # 掛載存取分區到 /mnt/my_usb mount /dev/mapper/my_usb /mnt/my_usb # 向存儲分區寫入配置文件 persistence.conf ,內容為:/ union echo "/ union" > /mnt/my_usb/persistence.conf # 卸載存儲分區 umount /dev/mapper/my_usb # 關閉映射 cryptsetup luksClose /dev/mapper/my_usb
其實制作加密版的可持久化Kali只是多了一個 LUKS加密 的步驟,和普通的可持久Kali的制作差不多。
本文引自網絡,目的在于技術學習交流,有最新技術分享的伙伴們歡迎在下方留下足跡~