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

    结束。