网上有些说通过ultraiso等软件刻录到U盘的方法其实是以live方式运行的,这样做的修改是保存不了的。
为了探索把kali安装在U盘,前前后后安装了3次,搜了无数相关文章,踩了很多坑,也明白了很多地方怎么配置,总结一下。希望帮到需要的人。
本文方法同样适用于其他linux系统,有些地方要根据情况变一下
打开VMware虚拟机,新建虚拟机。
2.1 兼容性选择默认的Workstation 12.0就可以。
2.2 安装来源选择第二项,然后浏览下载的kali ISO镜像文件。这里可能会提示无法检测操作系统,没关系。点击下一步然后选择linux Debian 8.0x 64位就可以。
2.3 名字随便起一个
2.4 内存根据情况调一下,一般1-2G左右就可以
2.5 后面的一路点击下一步就可以,会自动创建一个20G的虚拟硬盘。
【重点来了】
打开虚拟机设置,看一下USB控制器里面用的是3.0还是2.0接口,要和U盘保持一致。如果U盘是3.0且插在3.0接口上,这里就选择USB 3.0,否则选择2.0。如果这里选择不正确就会导致后面识别不到U盘。
2.6 开启虚拟机,进入安装界面后选择第三项,Graphical Install,图像化安装
2.7 然后选择语言,中文英文都可以,但是light版一定要选择英文,因为light版没有自带中文字体,会有乱码。
2.8 然后选择区域,键盘,默认就可以
2.9 然后会探测安装光盘,这是VMware的虚拟DVD
2.10 如果已经连接到网络,会自动配置网络。如果提示网络配置失败,一般是VMware的网络服务没有开启,任务管理器定位到服务,把VM相关的VMnetDHCP,VMUSBArbService,VMware NAT Service,VMwareHostId等全部开启。也可能是虚拟机设置里面USB控制器选择的USB版本和U盘插入的接口不一致。如果USB控制器选择2.0(默认),就要把U盘插在2.0接口。
2.11 然后要求填主机名称和域名称,随意填就可以
2.12 设置root账户密码,这个必须记住
2.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接口后,点击返回,然后在主菜单中选择“磁盘分区”,继续。
2.14 选择将所有文件放在同一个分区
2.15 选择结束修改,安装系统到磁盘,继续,然后等待大约1小时。
2.16 安装过程会提示是否安装网络镜像。这里选是。其实就是通过apt-get下载软件,如果选择了否,也可以在安装好之后手动配置源:/etc/apt/sources.list
2.17 询问是否将grub启动引导安装在主引导记录(MBR)时,选择【是】,然后在硬盘设备列表中选择U盘。
2.18 等待结束安装进程,然后虚拟机会重启,kali安装在了U盘,虚拟机不会从U盘启动,所以会提示找不到操作系统,这个没事。
2.19 制作完成后,windows会提示无法识别U盘。询问是否格式化,这是因为U盘这里已经是ext4格式了,windows不支持,识别不了是正常的,点击取消就行了,不要格式化。
重启电脑,在bios中配置从U盘启动。
不同电脑从U盘启动方式不太一样,不过大致分为几类。按F10或F12或F11能进入启动设备选择菜单,可以在菜单列表中找到U盘,按上下方向键选择后Enter即可进入。
如果没有在列表中找到U盘,可以Ctrl+Alt+Delete重启,然后按F2或Enter进入BIOS设置,找到boot选项,将所有的USB设备启动顺序调到最前面。
如果还是不行,看是否是用UEFI模式启动的,改成LEGACY就可以了。
在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
#重启系统。
以上启动错误的解决方法参考http://www.cnblogs.com/xuandi/p/6746880.html并做了补充。
kali默认的源是官网的,比较慢,国内有很多比较快的源,中科大,163等。
leafpad /etc/apt/sources.list
//leafpad有错误就用vi
#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#kali官方源
deb http://http.kali.org/kali kali-rolling main non-free contrib
#中科大的源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb http://mirrors.ustc.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main contrib non-free
deb http://mirrors.ustc.edu.cn/kali-security kali-current/updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/kali-security kali-current/updates main contrib non-free
#阿里云源
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
就可以了。
默认是英文输入法,要安装搜狗输入法,请参考:http://blog.csdn.net/anjingshen/article/details/75909366