0x00
通过ultraiso等软件刻录到U盘的方法其实是以live方式运行的,这样在系统中做的修改是保存不了的,固做此篇文章。
0x01
准备工作
1.USB3.0 U盘 不小于32G(推荐一款U盘:CZ800)
2.VMware
3.在服务中开启VMware的所有服务,否则安装会出问题
4.Kali linux 64位最新版(下载链接:https://www.kali.org/downloads/)
0x02
安装系统
打开VMware虚拟机,新建虚拟机。 1 .兼容性选择默认的Workstation 12.0就可以。 2. 安装来源选择第二项,然后浏览下载的kali ISO镜像文件。这里可能会提示无法检测操作系统,没关系。点击下一步然后选择linux Debian 8.0x 64位就可以。 3. 名字随便起一个 4 .内存根据情况调一下,一般1-2G左右就可以 5 .后面的一路点击下一步就可以,会自动创建一个20G的虚拟硬盘。
(打开虚拟机设置,看一下USB控制器里面用的是3.0还是2.0接口,要和U盘保持一致。如果U盘是3.0且插在3.0接口上,这里就选择USB 3.0,否则选择2.0。如果这里选择不正确就会导致后面识别不到U盘。)
6 .开启虚拟机,进入安装界面后选择第三项,Graphical Install,图像化安装 7 .然后选择语言,中文英文都可以,但是light版一定要选择英文,因为light版没有自带中文字体,会有乱码。 8 .然后选择区域,键盘,默认就可以 9 .然后会探测安装光盘,这是VMware的虚拟DVD 10 .如果已经连接到网络,会自动配置网络。如果提示网络配置失败,一般是VMware的网络服务没有开启,任务管理器定位到服务,把VM相关的VMnetDHCP,VMUSBArbService,VMware NAT Service,VMwareHostId等全部开启。也可能是虚拟机设置里面USB控制器选择的USB版本和U盘插 入的接口不一致。如果USB控制器选择2.0(默认),就要把U盘插在2.0接口。 11. 然后要求填主机名称和域名称,随意填就可以 12. 设置root账户密码,这个必须记住
13.这里把已经格式化位NTFS的U盘插入到电脑(虚拟机选择的是USB2.0控制器就插到USB2.0接口,否则3.0接口),然后看VMware右下角有没有U盘,可能是USB图标,也可能是硬盘图标,找到了就点击,然后选择连接。 如果没有找到,那就是Vmware的VMUSBArbService服务没有开启,在服务中开启,然后关闭虚拟机,重新再来一遍。
U盘连接到虚拟机后,在安装向导选择使用整个磁盘。
然后点击继续,现在应该会列出来两个磁盘,一个是默认的20G虚拟磁盘,一个是31G的U盘。点击31G的U盘。 如果只有20G的虚拟磁盘,那就看看U盘是不是插在2.0接口上,如果插在3.0接口会识别不出来,不知道是不是驱动的原因。U盘插在2.0接口后,点击返回,然后在主菜单中选择“磁盘分区”,继续。
14. 选择将所有文件放在同一个分区 15. 选择结束修改,安装系统到磁盘,继续,然后等待大约1小时。 16. 安装过程会提示是否安装网络镜像。这里选是。其实就是通过apt-get下载软件,如果选择了否,也可以在安装好之后手动配置源:/etc/apt/sources.list 17. 询问是否将grub启动引导安装在主引导记录(MBR)时,选择【是】,然后在硬盘设备列表中选择U盘。
18. 等待结束安装进程,然后虚拟机会重启,kali安装在了U盘,虚拟机不会从U盘启动,所以会提示找不到操作系统,这个没事。 19. 制作完成后,windows会提示无法识别U盘。询问是否格式化,这是因为U盘这里已经是ext4格式了,windows不支持,识别不了是正常的,点击取消就行了,不要格式化。
0x03
kali初始化
1.重启电脑,在bios中选择U盘启动。
2.(initramfs)启动错误
在grub引导界面有两个启动选项,第一个是kali GNU/linux,第二个是Advanced options for kali GNU/Linux. 直接选择第一个进入后,会启动失败,提示“Target filesystem doesn’t have requested /sbin/init.” 并进入一个(initramfs)的命令行界面。这是因为硬盘选择不对。
【 linux中硬盘名称分配是按照/dev/sda, /dev/sdb, /dev/sdc的序号分配的,有几个磁盘就分配到对应字母,
磁盘序号分配的顺序有三个原则:一是磁盘驱动程序的加载;二是主机PCI插槽的监测;三是磁盘本身的监测,先来的当然是a,以此类推。
这样在重启或某些磁盘热拔插的情况下有可能导致序号发生变化,无法启动系统。解决办法是通过uuid来标记磁盘,而不是通过/dev/sdc1之类,
所以不管有没有发生启动错误,都要替换为uuid(按照下面的永久生效方法操作即可),否则如果U盘插到一个有多个硬盘的电脑,序号变了,kali就无法启动了。】
【解决办法】
在这模式下可以输入命令:blkid 查看所列举出的磁盘 找到你的U盘系统 TYPE=”ext4”的区 记下 /dev/sdc1 这个名字。(每个人的不一样 有的可能是sdb1 下文用sdc1)。 然后重启,再次进入grub启动选择界面,选择第一项,按e进入编辑模式,找到有“初始化内存盘….”字样的地方,他的上一行linux后面有…………./dev/sda1 ro 的地方(可能被白边挡着看不清,我的在倒数第三行) 改成 /dev/sdc1 rw ,ro ,按F10 重新引导启动。 如果上面操作无误 就可以成功进入系统。用户名:root 密码 :你安装时候设置的。 但是上面这种设置方法只是临时的每次都要修改。
【永久生效操作方法,有没有错误都要执行下】: 进入系统之后 打开终端,输入
update-grub
#更新grub.cfg,这里必须执行,这里会重新扫描启动项,生成启动引导,以uuid方式标记硬盘而不是/dev/sdc1方式,所以拿到别的电脑上启动kali也不会出现启动错误。
leafpad /boot/grub/grub.cfg
看看linux是否挂载在sdc1(每个人不一样)下。(这里 可能显示的不是 sdc1 是sdc1的UUID 可以用blkid命令查看一下。)
sync
#确保写入
reboot
#重启系统
3.更新源
leafpad /etc/apt/sources.list
#阿里云源
deb http://mirrors.aliyun.com/kali sana main non-free contrib
deb http://mirrors.aliyun.com/kali-security/ sana/updates main contrib non-free
deb-src http://mirrors.aliyun.com/kali-security/ sana/updates main contrib non-free
增加后保存,然后执行
apt-get update
结束。