小提示:本文使用的操作系统为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的制作差不多。
后语
后语?没想好,下回补上