记录自己在 Kali Linux 安装过程中遇到的问题和解决方案。
注:本文为近日在物理机安装 Kali Linux 的个人笔记,仅供参考,文中的操作只是基于文中列出的特定机型和 Kali Linux 版本。
环境说明
物理机:神舟 K480N 笔记本,双硬盘(光驱位拆了光驱,换成了自带的 500G hdd 硬盘 ,原来的hdd硬位盘换了个 128G 的 ssd),双显卡( Nvidia GT645M + intel hd4000 集显)。
Kali Linux 版本:2017.1 amd64。注:Kali Linux 2017.1 基于 debian 的 stretch 版本,因此在安装时常见问题可以参考 debian 系的通用解决方法。
安装步骤
这里没什么好说的,但要注意几个点:
进入安装前安装引导选项的选择。出现引导界面进行安装时,不要选择 Advance Options 中的快速安装选项,虽然需要配置的地方很少,但是一个蛋疼的问题是安装后无法登录,因为不知道设置的 root 初始密码是多少(尝试了虚拟镜像下的默认密码 “toor” 但是提示错误了)。虽然可以通过单用户模式进行修复,但是终归是比较烦心的事情。
多硬盘环境下的硬盘选择。安装时选择安装到第一个硬盘,也就是在 BIOS 中第一个被识别的硬盘上。之前尝试过将硬盘拆下来分别安装系统,然后在系统启动时,在 BIOS 中选择不同硬盘进行引导,当时将 kali 安装在第二块硬盘上(原来光驱位置的 hdd 硬盘),第一块硬盘(ssd)安装的 Windows 系统,发现在没有装回 ssd 时,kali 系统能够正常引导,但在将 ssd 装回电脑后,kali 系统死活就起不来了。摸索了几次后,决定直接将硬盘都装回电脑上,然后将 Kali 安装在第一块硬盘上,不考虑双系统的方案了。这里如果有朋友有研究的话,还请不吝赐教。关于这里的原因,参考了《鸟哥的 Linux 私房菜》,里面对于多硬盘主机的 Linux 安装有这样一段描述(《鸟哥的 Linux 私房菜 基础学习篇(第三版)》 4.4.2 章节,105 页)。
因为 SATA 硬盘的设备文件名是利用检测的顺序来决定的,所以你如果这样调整来调整去的话,你的 SATA 设备文件名可能会产生不同,这对于 Linux 的运行会有问题,因此如果这样随时调整 BIOS 时,可能还是会造成无法开机成功的问题。
安装时语言的选择。安装时选择语言使用 English,否则安装完成后用户目录下的文件夹会变成中文(例如 Desktop 显示为“桌面”),不方便命令行操作。当然,如果不小心设置了中文,在实际使用时用户名下的目录名称又希望能以英文显示,可以修改配置文件进行调整。
在安装时连接网络。在提示选择网络时,选择正确的网络,若都不进行配置,安装完成后在系统源中会没有任何一个源地址,也就是说 apt-get 无法获取网络源的最新软件包等信息。若安装时确实没有选择网络,那么可以手动添加 kali 更新源。
安装后的配置–系统篇
更新 Kali Linux 中的软件包
更新软件列表信息。运行命令:
1apt-get update这里有可能遇到 apt-get 无法定位源的情况,具体可以表现为运行 apt-get update 命令后根本就没有向网络请求数据包更新,这个很可能是因为系统定义更新源的文件中无网络更新源所致。可以通过添加网络更新源的方式进行修复。
如果嫌更新速度慢,可以自行搜索“kali更新源”关键字,查看国内其他源的地址和添加方法。本人不是很建议这样做,网络上的教程大都是之前 kali.org 被墙,而国内又没有节点时的解决方案,但是现在新版的 kali linux 会自动使用国内镜像(如大连东软的http://mirrors.neusoft.edu.cn/kali节点)进行加速。很多问题都是因为添加了不够兼容的源导致的。
更新软件。运行命令:
1apt-get upgrade这里可能遇到由于网络问题导致更新不完整或中断,可以更新国内 kali 源或者添加 –fix-missing 参数修复缺失信息(感觉有点像下载里面的断点续传?)。
1apt-get upgrade --fix-missing更新依赖关系。运行命令
1apt-get dist-upgrade
更新 Kali Linux 的内核头文件
在命令行中运行下面的命令:
|
|
安装 Nvidia 显卡驱动
这里是个很容易踩坑的地方,主要是由于 kali 的官方文档中有如何安装 Nvidia 驱动的说明(Install NVIDIA GPU Drivers on Kali Linux)。但是由于我的笔记本使用了 optimus/hybrid Graphics (显卡智能切换/混合显卡)技术,在按照官方文档进行操作后,重启后会出现无法登录的情况,屏幕提示
Oh no! Something has gone wrong.
A Problem has occurred and the system can’t recover. Please log out and try again.
选择 Logout 选项,会尝试重新加载系统,但是仍旧会再次出现此报错页面,无法进入系统。
如果不幸遇到了这个问题,可以参考 quora 上 Patrick Himebaugh 在问题 How can I fix the error “something has gone wrong” on Kali Linux? 下的回答。如果遇到网址打不开的情况,也可以参考本文后的修复方法。
经过测试,双显卡(intel + Nvidia)电脑可用的安装方法可以参考 kali 论坛中 TiGER511 推荐的 Installing official NVIDIA driver in Optimus laptop 一文。大致步骤如下:
确认使用了混合显卡 (hybrid graphics)。在命令行中输入
1lspci | grep -E "VGA|3D"能看见存在两个显卡
123root@kali:~$ lspci | grep -E "VGA|3D"00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)01:00.0 VGA compatible controller: NVIDIA Corporation GK107M [GeForce GT 645M] (rev a1)禁用默认使用的显卡驱动 nouveau。在命令行中输入
12echo -e "blacklist nouveau\noptions nouveau modeset=0\nalias nouveau off" > /etc/modprobe.d/blacklist-nouveau.confupdate-initramfs -u && reboot系统将会重启,重启后 nouveau 应该被禁用了。在命令行中输入以下命令来确认 nouveau 被禁用
1lsmod |grep -i nouveau如果输入此命令后未显示任何内容,证明 nouveau 已被成功禁用。
从 kali 的网络源中安装 nvidia 驱动。在命令行中输入
1apt-get install nvidia-driver nvidia-xconfig当然,也可以从 Nvidia 网站下载最新的 .run 文件并进行安装。不论是使用 kali 的网络源进行安装还是去 Nvidia 网站下载安装,过程都是一样的。
接下来我们需要找到我们 Nvidia 显卡的 BUS ID。在命令行中输入
1nvidia-xconfig --query-gpu-info | grep 'BusID : ' | cut -d ' ' -f6它应该会显示如下的内容
1PCI:1:0:0这个就是我们需要的 BUS ID。
接下来,根据 nvidia 的手册说明,我们需要创建一个 /etc/X11/xorg.conf 文件,并在其中输入以下的内容
Section "ServerLayout" Identifier "layout" Screen 0 "nvidia" Inactive "intel" EndSection Section "Device" Identifier "nvidia" Driver "nvidia" BusID "PCI:1:0:0" EndSection Section "Screen" Identifier "nvidia" Device "nvidia" Option "AllowEmptyInitialConfiguration" EndSection Section "Device" Identifier "intel" Driver "modesetting" EndSection Section "Screen" Identifier "intel" Device "intel" EndSection
将加粗部分的 “PCI:1:0:0” 替换为自己的 BUS ID,保存至 /etc/X11/xorg.conf 文件中。
接着我们根据我们的显示管理器 (display manager)来创建一些脚本。由于我们的 kali 默认使用的是 GDM (Gnome Display Manager),我们需要创建两个文件:
/usr/share/gdm/greeter/autostart/optimus.desktop
/etc/xdg/autostart/optimus.desktop
内容均为:123456[Desktop Entry]Type=ApplicationName=OptimusExec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto"NoDisplay=trueX-GNOME-Autostart-Phase=DisplayServer重启系统,这时候我们应该使用的就是 Nvidia 的驱动了。通过以下命令来确认是否一切正常
1glxinfo | grep -i "direct rendering"如果一切正常,应当显示
1direct rendering: Yes(可选)安装 CUDA 套件 (CUDA toolkit)。在命令行中输入
1apt-get install ocl-icd-libopencl1 nvidia-cuda-toolkit
至此,显卡驱动的安装就基本结束了。但是如果遇到某些场景下的屏幕撕裂问题(包括但不限于在 VLC 中播放视频,在 Chrome/Firefox 中观看 youtube 视频等),我们可以通过启用 PRIME 同步 (PRIME Sync) 的方法进行修复。如果卡在了启动屏幕处,也可以参考这篇文章进行还原和修复。
挂载第二块硬盘
由于系统中有两块硬盘,之前尝试的双系统方案各种蛋疼,那么干脆就把第二块硬盘作为存储盘进行扩展。在 Linux 中,一切皆目录,和 Windows 中分区,然后划分盘符的方式不一样, Linux 中新增的硬盘应当挂载至某个目录中,具体步骤如下(参考 linux 增加硬盘,以将硬盘划分为一个区并挂载至 /storage 目录为例):
使用 fdisk -l 查看系统硬盘信息。
1fdisk -l能看见存在 /dev/sda 和 /dev/sdb 两块硬盘。
开始使用 fdisk 对第二块硬盘 (sdb) 进行分区。
1fdisk /dev/sdb这时进入了 fdisk 进行操作,在
1Command (m for help):后面输入 n (代表new)创建新分区。然后在
123Command actione extendedp primary partition (1-4)输入 p,创建主分区。然后在
1Partition number (1-4):后面输入 1,添加主分区1。在之后的 First cylinder 和 Last cylinder 处都直接按下回车使用默认数值。完成后,在
1Command (m for help):后面输入 w,保存退出。
对分区进行格式化。在命令行中执行
1mkfs.ext4 /dev/sdb1创建一个目录用于挂载新的硬盘。我这里由于主要想用第二块 hdd 进行大量数据的存储,因此在系统根目录下创建了一个 /storage 目录(实际使用时根据自己的喜好和习惯起名即可)
1mkdir /storage然后挂载新创建的 /dev/sdb1 至新建的 /storage 目录
1mount /dev/sdb1 /storage使用 df 命令即可查看硬盘的挂载状态
1df若能看见 /dev/sdb1,证明硬盘已经挂载成功。
在第 5 步中的操作只是临时挂载硬盘,如果想要在系统启动时自动进行挂载动作,则可以通过修改 /etc/fstab 文件来实现。在 /etc/fstab 文件末尾加上一行:
1/dev/sdb1 /storage ext4 defaults 1 2对修改后的 fstab 文件配置进行测试,先使用 df 命令查看当前 /dev/sdb1 是否挂载
1df由于第五步中已经挂载成功了,此时应该是能看见 /dev/sdb1 的。接下来,现将临时挂载的硬盘取消挂载,在命令行中输入下面的命令取消挂载
1umount /dev/sdb1然后再输入
1df查看 /dev/sdb1 是否已经成功取消挂载。确认已经成功取消后,最后使用 mount 命令挂载 fstab 的配置。在命令行中输入
1mount -a同理,最后执行 df 命令查看是否成功挂载,若 /dev/sdb1 成功挂载到 /storage 目录下,则证明 fstab 的自动挂载已经配置成功。
笔记本触摸板的配置
由于使用的是笔记本电脑,自带有触摸板模块,由于没有提供 Linux 下的键盘热键或类似 Windows 界面的触摸板驱动包,无法通过键盘快捷键或者配置触摸板设置来禁用触摸板,这在打字工作较多时可能给我们带来一定的困扰。在 Kali Linux 下可以通过命令行的方式来禁用和启用触摸板。
禁用触摸板。在命令行中输入:
1modprobe -r psmouse启用触摸板。在命令行中输入:
1modprobe psmouse
为 64 位系统添加 32 位架构的支持
由于某些软件的兼容性问题,需要添加对于 32 位架构的支持。步骤如下:
在命令行中执行
1dpkg --add-architecture i386在命令行中输入
1apt-get update注:若在 update 时未发现有读取 i386 的库,且重启后也没有改变,则可以手动编辑 /etc/apt/sources.list 文件,在 deb 后面增加
[arch=amd64,i386]
,完整源配置如下:1deb [arch=amd64,i386] http://http.kali.org/kali kali-rolling main non-free contrib然后重新运行
apt-get update
即可。
修改并发限制
默认的操作系统会对系统资源进行限制,例如会使用 ulimit 对每个终端 shell 能使用的资源进行限制。这样在使用某些 DDOS 攻击程序会受到系统资源限制导致不能达到最佳效果。具体修改方式如下:
通过
ulimit -a
查看默认值主要通过 -s (stack size), -m (max memory size), -v (virtual memory),-n (oepn files) 等参数来设置
若需要持久化保存,则可以通过修改 ~/.bashrc 文件并在后面追加需要的 ulimit 命令来实现。
(可选)配置网络
参考来源:
NetworkConfiguration
默认的 Kali Linux 在安装好后会使用 dhcp 自动获取网络地址,如果不能正确获取,可以在命令行中输入
|
|
为 wlan0(根据实际需要换成实际的网卡接口,如 eth0 ,eth1 之类) 网络接口设置从 DHCP 服务器获取 IP 地址。
但是某些环境下需要手动配置静态 IP 地址才能访问网络,或者需要切换内网地址,或者是为一个网卡添加多个 IP 地址,这时候就需要手工指定网卡的 IP 地址。这里介绍两种临时配置 IP 地址和持久配置 IP 地址两种方式,可以根据实际业务场景选用。
配置临时 IP 地址
具体步骤如下:
为选定的网卡配置静态 IP 地址(以 wlan0 为例)
1ifconfig wlan0 192.168.1.123/24配置完成后,可以使用
ifconfig wlan0
查看 IP 地址是否成功配置。配置路由和默认网关
1route add default gw 192.168.1.1配置完成后,可以在命令行中输入
netstat -nr
或者 `route -n’ 查看默认网关是否已经成功配置。配置 DNS 服务器
1echo nameserver 114.114.114.114 > /etc/resolv.conf或者也可以直接编辑 /etc/resolv.conf 文件来进行 DNS 服务器的配置。由于这里是直接修改了配置文件,因此 DNS 服务器信息是持久化配置的。
配置临时 IP 地址时,配置的 IP 地址和网关信息会在操作系统重启后消失。
持久配置 IP 地址
通过编辑网卡接口文件 /etc/network/interfaces ,可以持久配置网卡的 IP 地址。以配置 wlan0 为例:
打开 /etc/network/interfaces 文件,在最后加入 wlan0 的配置信息:
123456auto wlan0iface wlan0 inet staticaddress 192.168.1.123netmask 255.255.255.0gateway 192.168.1.1dns-servers 114.114.114.114 8.8.8.8当然,dns 服务器是可选的,也可以在 /etc/resolv.conf 中进行配置。
修改完成后,重启操作系统,配置生效。
安装字体
由于会用到 IDE 写一些简单的代码,先安装几个常用的字体以备 IDE 界面的配置。推荐的有两个字体,YaHei Consolas Hybrid 和 YaHei Mono 。此外,使用 Wine 运行软件时会有很多地方对 宋体 (SimSun) 进行调用下载并解压缩处 ttf 后缀的文件后,安装 font-manager,在命令行输入 sudo apt-get install font-manager
即可。安装完成后,打开 font-manager,在其中添加我们自己的 ttf 文件即可完成字体的安装。
增加非 root 账户
如果习惯使用 Chromium 系列的浏览器,在打开 Chromium 或 Chrome 时,会提示不能以 root 身份运行。这里可以通过添加参数来在 root 账户下运行浏览器,但是这样会带来可能的安全问题:如果浏览器被攻破,则恶意程序获得的将是 root 权限。个人更推荐添加一个非 root 账户,在此账户下进行日常的维护操作。具体操作如下:
添加用户
1userad -m userabc为账户设置密码
1passwd userabc将创建的用户添加到 sudo 用户组(允许用户使用 sudo 进行软件安装之类的操作)
1usermod -a -G sudo userabc将创建的用户默认 shell 改为 bash
1chsh -s /bin/bash userabc注销当前的 root 用户,并用新用户和密码登录,确认登录成功。后文的操作有很多是在普通用户下操作,因此会增加 sudo 命令。
快捷键设置
用惯了 Windows 系统,总是习惯 Win + R 快速运行, Win + D 显示桌面。为了让 Kali Linux 符合使用习惯,也可以进行快捷键的配置。步骤如下:
打开
系统设置--键盘
。找到其中
导航
部分的隐藏所有正常窗口
,然后设置快捷键为 Win + D (Super + D, 在 Linux 中将 Win 键称为 Super)。新增自定义快捷键,在命令中输入
gnome-terminal
,快捷键设置 Super + R,名称任意填写,保存生效。这时候使用快捷键就能实现希望的效果了,如果有其他想配置的地方,也可以按照同样的方法进行配置。
电源优化
在
设置-电源
中配置无操作挂起,关闭显示器降低显示器亮度
不使用时关闭无线网卡
开启硬盘省电选项
1hdparm -i /dev/sda if AdvancedPM=yes then hdparm -B 1 -S 12 /dev/sda当然,由于我的系统安装在 SSD 上,默认就已经开启了硬盘省电选项。
启动笔记本模式。创建文件
123456789101112currentMode=$(cat /proc/sys/vm/laptop_mode)if [ $currentMode -eq 0 ]thenecho "5" > /proc/sys/vm/laptop_modeecho "Laptop Mode Enabled"elseecho "0" > /proc/sys/vm/laptop_modeecho "Laptop Mode Disabled"fi在使用时,即可通过
./文件名
的形式来开启/关闭笔记本模式。
根据需要开启系统服务
在 /etc/init.d 目录下有大量的服务名称,可以通过 服务名 start
的方式来启动相应服务。
安装后的配置–常用软件篇
安装完整版 Kali Linux
之所以安装 Kali 就是为了其中的安全类工具,因此更新完整版的 Kali Linux 是必须的。在命令行中输入
|
|
即可完成完整版的 Kali Linux 安装。
安装 watchdog
在系统使用过程中,可能会遇到系统关闭时等待 90 秒才关闭的问题。这个是由于关机时,某个进程没有结束,systemd 在为此等待 90 秒。屏幕显示:
A stop job is running for Session……
对于这个问题可以采用两种方案来解决,一种是采取 systemd 降级的方法,虽然有效,但是太麻烦。另一种是通过安装 watchdog 的方法来解决,操作起来会简单不少,具体步骤如下:
安装 watchdog
1sudo apt install watchdog开启 watchdog 服务
1sudo systemctl enable watchdog.service马上启用 watchdog 服务
1sudo systemctl start watchdog.service
通过上述几步,就能解决关机等待 90 秒的问题了。(然而我仍然出现了等待 90s 后才关机的问题,有待进一步观察)
配置中文输入法
由于默认的是英文环境下进行安装,并没有中文输入法,因此需要额外安装中文输入法以供日常使用。输入法有两大类以供选择,ibus 和 fcitx。体验下来各有优劣。
IBUS
先说 ibus,这个安装配置非常简单,直接在命令行中输入
|
|
即可完成安装。然后在系统设置的区域和语言部分添加中文拼音输入法即可。输入法中英文切换可以使用右上角的输入法指示栏,也可以使用 ctrl + space 快捷键进行切换。
但是,在使用过程中,发现响应速度不是很令人满意,特别是有大量中英文切换需求时,经常发生卡顿的现象,另外,在中文输入法的英文状态下利用 shift 键输入大写英文字母时,会自动切换到中文输入法,非常难用。最后选择切换到了 fcitx 系列。
(推荐)fcitx
fcitx 的安装相对来说曲折一些。主要是安装了 fcitx 后不知道如何启用相应的输入法,在系统设置的区域和语言部分添加中文输入法时,没有相应的配置,尝试在安装了 fcitx 后在命令行中输入 fcitx 后会报错
(WARN-12251 /build/fcitx-SJV5lg/fcitx-4.2.9.1/src/lib/fcitx-config/fcitx-config.c:922) 配置项不合法: 行150 缺少’=’
一直以为是由于这个报错导致了不能正确启用输入法。为了解决这个问题查阅了很多资料,尝试了不少方法,甚至尝试了最后发现只要无视这个报错就好了。启用 fcitx 时应当在 im-config 中进行配置。具体安装过程如下(以搜狗输入法为例):
去搜狗官网下载对应版本的 deb 包,然后在命令行输入
1dpkg -i sogoupinyin_2.1.0.0086_amd64.deb进行安装。安装过程中会很多告警信息提示依赖包不存在的问题,无视即可。
在命令行中输入
1apt-get install -f修复缺失的依赖关系。
在命令行输入
1im-config在弹出的窗口中按照提示操作,选择使用 fcitx 作为输入法。操作完毕后会提示重启。
重启后,在命令行中输入
1fcitx-config-gtk3在其中进行 fcitx 的相关配置,可以按照自己的使用习惯设置默认输入法和输入法切换快捷键。至此搜狗输入法已经安装完成,当然,若要安装其他的 fcitx 系列输入法,也是类似的操作过程。
安装 Chromium/Chrome 浏览器
Windows 下习惯了基于 Webkit 内核的 Chromium 引擎快速的响应速度、强大的开发者工具,好用的插件和账户同步功能,而 Kali Linux 中默认安装的是 Firefox ESR,只能手动来安装了。浏览器安装时有两个选择,一种是选择开源的 Chromium 浏览器,另外一种就是基于 Chromium 开发的闭源 Google Chrome。两种浏览器安装都很简单。
安装 Chromium 浏览器
1apt-get install chromium安装 Google Chrome 浏览器
去 chrome 浏览器官网 下载 deb 安装包,然后使用 dpkg 进行安装
1dpkg -i google-chrome-stable_current_amd64.deb
安装翻墙软件
由于天朝的 GFW,翻墙是必备的,总不能天天在大局域网中被 bat 之流强奸。考虑到国内外网络的访问速度,选择安装 Shadowsocks 并辅助以 Lantern。
安装 Shadowsocks 客户端
Linux 下的客户端推荐使用 Shadowsocks-qt5。使用 apt 的 apt-get install shadowsocks-qt5
进行安装时会报错“无法定位软件包 libqtshadowsocks-dev ”,最后使用的是 Shadowsocks-qt5 官方文档推荐的源码编译安装的方式。具体步骤参考了 Kali Linux 下安装 Shadowsocks-qt5。编译安装过程如下:
编译安装 libQtShadowsocks-dev
使用 git 获取 libQtShadowsocks 源代码
1git clone https://github.com/shadowsocks/libQtShadowsocks.git安装依赖
1apt-get install qtbase5-dev qt5-qmake qt5-default libbotan1.10-dev unzip debhelper进入目录并编译
12cd libqtshadowsocks-devqmake&make打包
1dpkg-buildpackage -uc -us -b此命令完成后,会在上一层目录生成 libQtShadowsocks 的安装包
安装
1dpkg -i ../libqtshadowsocks_1.10.0-1_amd64.deb ../libqtshadowsocks-dev_1.10.0-1_amd64.deb
编译安装 shadowsocks-qt5
使用 git 获取 Shadowsocks-qt5 源代码
1git clone https://github.com/shadowsocks/shadowsocks-qt5.git安装依赖
1apt-get install qt5-qmake qtbase5-dev libqrencode-dev libqtshadowsocks-dev libappindicator-dev libzbar-dev libbotan1.10-dev进入目录并编译
12cd shadowsocks-qt5qmake && make打包
1dpkg-buildpackage -uc -us -b此命令完成后,会在上一层目录生成 Shadowsocks-qt5 的安装包
安装
1dpkg -i ../shadowsocks-qt5_2.8.0-1_amd64.deb
至此,安装已经完成。在命令行中输入
1ss-qt5即可打开 Shadowsocks-qt5 的客户端并配置参数进行科学上网。如果对 Shadowsocks 技术尚不了解,可以参阅Shadowsocks 不完全指南,虽然这篇文章已经有一段时间未更新了,但是较为全面地介绍了 Shadowsocks 的实现原理和配置方法。
安装 Lantern 客户端
Lantern 的实现原理和 Shadowsocks 极为类似,之所以安装这个,是为了在自己的 Shadowsocks 账号出现问题的情况下,可以有一个临时性的备用翻墙方式。Lantern 官方提供的 deb 包可以直接下载安装。步骤如下:
下载安装包,可以去 Lantern 官网或者去 github 上的仓库 下载对应版本的安装包。
使用 dpkg 进行安装
1dpkg -i lantern-installer-beta-64-bit.deb可以在命令行中输入’lantern’,或者在系统中搜索 Lantern 打开 Lantern,然后就能自由上网了。
更换 JDK (多版本 JDK 共存)
由于版权原因,系统自带的是 OpenJDK,由于开源的 OpenJDK 和闭源的 Oracle JDK 存在着不少区别,我们可以切换使用 Oracle JDK。步骤如下:
下载 Oracle JDK。访问 Oracle JDK 下载页面下载对应版本的最新 tar.gz 包。
解压缩 tar.gz 包。
1tar -zxvf jdk-8u131-linux-x64.tar.gz使用 update-alternatives 进行安装,这样不会卸载原有的 OpenJDK,在以后需要时可以随时切换回来。
1234sudo update-alternatives --install /usr/bin/java java /storage/jdk1.8.0_131/bin/java 1sudo update-alternatives --install /usr/bin/javac javac /storage/jdk1.8.0_131/bin/javac 1sudo update-alternatives --install /usr/bin/jar jar /storage/jdk1.8.0_131/bin/jar 1sudo update-alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so /storage/jdk1.8.0_131/jre/lib/amd64/libnjp2.so 1注意,第二个路径为解压的 JDK 路径,具体安装时以实际路径为准。最后的数字为优先级,默认的 OpenJDK 优先级数值为 1081,因此我们这里的数字只要比 1081 小即可。
确认成功安装并启用。在命令行中输入
12java -versionjavac -version查看其中信息是否为 Oracle JDK 的信息。
此外,在 Firefox 浏览器中访问 https://www.java.com/en/download/installed.jsp,查看浏览器是否正确识别安装的 java 版本。其他版本的 Java也可以按照类似的方法来安装配置。如果需要切换版本,可以使用以下命令进入命令行交互模式并选择想要使用的版本。
1234sudo update-alternatives --config javasudo update-alternatives --config javacsudo update-alternatives --config jarsudo update-alternatives --config mozilla-javaplugin.so
安装 IDE
Pycharm
Pycharm 的安装非常简单,步骤如下:
解压压缩包。
1tar -xvf pycharm-professional-2017.1.3.tar.gz进入解压后 pycharm 的 bin 目录并执行 pycharm.sh 文件
12cd pycharm-2017.1.3/bin./pycharm.sh
安装文本编辑器
小巧的文本编辑器 Notepadqq
Windows 下的 Notepad++ 非常好用,可惜却没有 Linux 版本,但是在 Linux 下有一款叫作 Notepadqq 的软件,与 Notepad++ 非常类似,下面说一下具体安装过程(参考 Notepadqq – Source Code Editor for Linux):
安装依赖。
1sudo apt install qt5-default libqt5webkit5-dev libqt5svg5-dev qttools5-dev-tools获取 notepadqq 源码。
1git clone --recursive https://github.com/notepadqq/notepadqq.git对源码进行编译安装
1234cd notepadqq./configure --prefix /usrmakesudo make install
Linux 平台下的 Office 编辑套件 LibreOffice
Office 系列文件的编辑和处理在 Linux 上一直是硬伤,由于微软没有提供 Microsoft Office 的 Linux 版本,要查看和编辑 Office 文档只能使用在线版的 Office,或者在 wine/crossover 中安装 Windows 版本的 MS Office 软件,此外,也可以使用支持 Linux 平台的编辑软件来实现。Linux 下的第三方 Office 编辑器主要有 LibreOffice, WPS Office, 永中 Office, OpenOffice 等。在这些软件中,LibreOffice 相对来说已经是做得很不错的了。安装也很简单,直接在命令行中运行 sudo apt-get install libreoffice
即可成功安装。
MarkDown 编辑器 ReText
MarkDown 虽然到现在尚无完全统一的语法和解析标准,但是大部分的规则是公认的,利用它来写笔记是个非常惬意的事情。自带的 gedit 文本编辑器虽然支持 MarkDown 语法,但是功能太过薄弱,因此安装 ReText 作为 MarkDown 编辑器,安装过程很简单,命令行输入 sudo apt-get install retext
即可完成安装。但是其强大的功能需要进一步配置后才能发挥作用。配置过程如下:
为 ReText 配置 Github stylesheet。访问 https://gist.github.com/EndangeredMassa/8849279,下载 github.css 文件,然后在 ReText 中选择
编辑-个人偏好-交互界面-样式表文件
,选择使用下载的 github.css 文件。重启 ReText 后即可生效。添加数学公式。首先安装 MathJax,在命令行中输入
1sudo apt-get install libjs-mathjax安装完毕后,在 ReText 中选择
编辑-个人偏好-行为-Markdown 语法扩展
,在其中输入mathjax
,重启 ReText 即可。添加语法高亮。首先安装高亮支持模块 python-pygments,在命令行中输入
1sudo apt-get install python-pygments安装完毕后,在 ReText 中选择
编辑-个人偏好-行为-Markdown 语法扩展
,在其中输入codehilite
。这里要注意,若 Markdown 语法扩展下方的文本框原先有内容,比如上一步的 mathjax,需要在后面追加 “逗号 + codehilite”。参阅 ReText 的官方文档可知,文档里的扩展功能添加进ReText的Markdown extensions时,都必须改成小写字母,否则无效。同时,两个扩展之间用英文逗号分割。因此,这时候内容应该变成mathjax,codehilite
。完成后重启 ReText 即可。修改字体。在
编辑-修改编辑器字体
和编辑-修改预览字体
处,选择需要的字体。我这里选择的均为YaHei-Consolas-Hybrid-Normal Regular
。
安装虚拟化软件
虚拟化环境作为必备软件之一,显然也是需要配置的,毕竟偶尔总需要跑些其他平台的软件,或者跑些测试的环境之类。
VirtualBox
开源的 VirtualBox 安装很简单,直接使用 sudo apt-get install virtualbox
进行安装即可。
VMWare WorkStation
去官网下载安装包,得到 VMware-Workstation-Full-12.5.6-5528349.x86_64.bundle 文件。
赋予 bundle 文件执行权限
1chmod +x VMware-Workstation-Full*.bundle运行 bundle 文件执行安装
1sudo ./VMware-Workstation-Full*.bundle注:运行时会出现报错
Gtk-Message: Failed to load module “atk-bridge”: /usr/lib/x86_64-linux-gnu/libatspi.so.0: undefined symbol: g_type_class_adjust_private_offset
(vmware-installer.py:13903): Gtk-WARNING **: 无法在模块路径中找到主题引擎:“murrine”尝试着搜索解决方案,主要是参考了 stackoverflow 上的类似问题下的各种回答,安装了高分答案下推荐的所有依赖包,仍然报错。弃疗后直接安装,然而也能正常完成安装。目前也未发现影响使用的情况,暂时就不研究了~
Docker
Docker 的安装可以参考其官方文档,稍微修改一下即可。步骤如下(以 docker-ce 为例):
安装依赖(默认应该都有安装)
1sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common导入 docker 的 gpg 签名
1curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -在 /etc/apt/sources.list.d/ 目录下新建 docker.list 文件,输入以下的 docker 仓库地址并保存
1deb [arch=amd64] https://download.docker.com/linux/debian stretch stable更新软件源并安装
12sudo apt-get updatesudo apt-get -y install docker-ce安装完成后,可以通过以下命令启动 docker 服务
1sudo systemctl start docker或者
1sudo service docker start验证 docker 安装成功
1sudo docker run hello-world此时,docker 已经成功安装,正常使用即可。当然,也可以进行进一步的配置,比如使用非 root 用户管理 docker,配置 docker 随系统启动修改 Docker 默认的镜像和容器存储位置等。
安装多媒体播放器
音乐播放器 DeaDBeeF
Windows 下的音乐播放器使用的是 Foobar2000,在 Linux 平台下没有对应的版本,可以使用 DeaDBeeF 来代替。由于在 kali 源中并没有 DeaDBeeF,因此不能使用 apt-get 直接安装,而需要去 DeaDBeeF 官网下载页面进行下载。下载了 deb 包后,运行 ‘sudo dpgk -i deadbeef-static_0.7.2-2_amd64.deb` 进行安装即可完成。但是需要注意,DeaDBeeF 在播放无损音乐时,不是直接添加 cue 索引文件,而是在添加 ape,flac 等音乐文件时自动加载同一目录下的同名 cue 文件。另外,如果加载 cue 文件后发现是乱码,可以在 Deadbeef 菜单栏:编辑–偏好设置–用户界面/杂项 中,取消俄语编码选项,勾选中文 CP936 编码选项,然后清空播放列表,再次添加歌曲,即可顺利显示中文。
网易云音乐
偶尔想要换换口味,听听在线歌曲,可以使用网易云音乐。虽然因为版权问题导致了很多歌曲下架,但是其用户体验还是领先同类型的其他产品一大截的。网易云音乐官方提供有 Linux 版本,但是在 Kali 下安装会有依赖问题,最后参考了 Kali Linux 2016.2(Rolling) 网易云音乐安装,终于安装成功。具体步骤如下:
下载安装包。链接: https://pan.baidu.com/s/1i5l1wsX
使用 dpkg 安装软件包。
1dpkg -i netease-cloud-music_1.0.0-1_amd64.kali.deb修复依赖关系。
1apt-get -f install
不过,话说回来,网易云音乐这种本身就基于网络的播放器价值不大,如果嫌麻烦,完全可以使用网页版代替。
第三方的网易云音乐播放器 FeelUOwn
FeelUOwn 是由 cosven 开发维护的一款第三方网易云音乐播放器,对于某些没有网易没有版权的音乐自动使用虾米源进行播放,有插件和主题切换功能,喜欢自己 DIY 的小伙伴可以使用这个来代替网易云音乐的客户端。安装步骤可以参考项目上的介绍:
|
|
安装 QQ
尝试了很多第三方的教程,都出现了各种问题无法成功安装,最后直接去了清风的博客,使用其 WineQQ 8.9 版本,在 Kali 下安装成功。具体步骤如下:
下载 WineQQ 最新的 8.9 版本
wineQQ8.9.3_21149.tar.xz
。为了能正常运行 WineQQ,需要安装 winehq。具体安装过程可以参考 winehq 的官方文档
首先,开启系统对32位的支持,然后获取并导入签名12wget -nc https://dl.winehq.org/wine-builds/Release.keysudo apt-key add Release.key接着,在 /etc/apt/sources.list.d/ 目录下新建一个
winehq.list
文件(文件名可自定义,以 list 作为文件扩展名即可),文件内容为:1deb https://dl.winehq.org/wine-builds/debian/ stretch main注:Kali Linux 2017.1 基于 debian 的 stretch 版本,若为其他版本,则需做相应修改。完成后,需更新包信息,在命令行中输入
1sudo apt-get update最后进行安装即可。
1sudo apt-get install --install-recommends winehq-devel解压下载的压缩包至用户主目录
1tar xvf wineQQ8.9.2_20760.tar.xz -C ~/此时,在系统菜单中已经能看见 Wine QQ,点击后运行,会提示需要下载某个软件包(MONO),选择下载即可。下载完成后,即可正常运行。
此外,如果之前未安装字体,会存在部分中文显示为方框的情况,这时参考前文的安装字体部分进行配置后,重启即可正常显示。
当然,毕竟是修改版,存在着一些bug,目前已遇到问题:视频结束后会闪退,无法保存密码。但是作为一个及时消息型软件,最主要的文字沟通和文件传输之类的功能能够正常使用,已经满足了需求。
其他需要的软件
由于很少将 Linux 作为主办公环境,还有很多软件并没怎么用到,这里主要参考了[安全牛]上房苑弘的 [Kali Linux 渗透测试教程]上推荐的一些软件,也欢迎大家回复和推荐好应用:)。在命令行中输入:
|
|
大致介绍一下这些软件:
- libreoffice:开源的 Office 组件。
- smplayer:多媒体播放器。
- gdebi:图形化的 deb 包管理工具。
- amule:电驴,下载工具。
- qbittorrent:比特彗星,下载工具。
- geany:一个轻量级的 IDE。
- stardict:星际译王。字典工具,现在貌似已经停止维护和更新了。但是字典支持很强大,可以下载到字典配合使用。
- meld:文件差异比较工具。
- ttf-wqy-microhei:文泉驿微米黑中文字体。
- kchmviewer:chm 文件查看器。
- mtr:winMTR 的 Linux 版本,网络诊断工具。
- filezilla, filezilla-common:FTP工具。
- monodevelop:开发工具集。
安装后的配置–浏览器篇
Chromium
安装 Flash 插件
Chromium 登录账户后,扩展(Extensions)都同步了,没什么好说的。但是很多视频无法播放,需要安装配置 Flash 插件。在 Chrome 中有内置的 Flash 插件,选择启用即可。但是 Chromium 需要安装一个叫作 pepperflash 的插件才能支持 Flash 功能。步骤如下(参考 How to install Flash Player on Debian with Chromium):
首先在浏览器中打开 chrome://flash/,查看 flash 是否已经安装。
若在上一步确认 flash 插件未安装,在浏览器中打开 pepperflashplugin 下载页面,选择一个服务器进行下载。
下载完毕后,在命令行中使用 dpkg 进行安装
1sudo dpkg -i pepperflashplugin-nonfree_1.8.3+num1_amd64.deb(可选) 升级 pepperflash
1sudo update-pepperflashplugin-nonfree --install查看 pepperflash 安装状态
1sudo update-pepperflashplugin-nonfree --status若显示类似下面的信息,则说明 pepperflash 已经安装成功。
Flash Player version installed on this system : 25.0.0.171
Flash Player version available on upstream site: 25.0.0.171再在浏览器中打开 chrome://flash/ 查看是否显示安装成功。
此时打开视频站,应该就可以正常观看视频了。如果遇到某些视频能看见播放框,但是没有内容,很有可能是浏览器默认禁用了第三方站点的数据和 cookie 所致,可以参考 FAQ 部分的解决方法。
关闭 GPU 加速
使用 Chromium/Chrome 时,经常会发现风扇疯转,系统资源占用蹭蹭地往上涨,此外,偶尔会出现卡死的情况,一定要切换到其他窗口再切换回来才正常。查阅资料发现是由于 Chromium 系列浏览器的 GPU 加速功能导致的。于是乎我们来关闭 GPU 加速功能,步骤如下:
打开浏览器,找到
Settings--Show advanced settings--System
取消 ‘Use hardware acceleration when available’ 的勾选
打开 chrome://flags/,在里面搜索 GPU 相关的选项,全部关闭。
重启浏览器,就可以享受到流畅的网络体验了。
Firefox
Flash 插件
Flash 是个天坑,毕竟本身漏洞太多了,安全性是个大问题,因此很多浏览器默认都不带或者不启用 Flash 插件。如果不得不用的话,也只能安装了。步骤如下(参考Install Flash Player for Iceweasel / Firefox in 3 Simple Steps):
在浏览器中打开 Flash 下载链接,选择 tar.gz 格式并下载。
解压缩下载的 tar.gz 文件
1tar xzvf install_flash_player_11_linux.x86_64.tar.gz将解压出的 libflashplayer.so 拷贝至 Firefox 的插件目录下。
1cp libflashplayer.so /usr/lib/mozilla/plugins/重启浏览器,就能正常显示 flash 内容了。
渗透测试相关扩展
Firefox 下有很多优秀的插件,渗透测试需要的一些插件在此列出,可以根据需要进行安装。
- AutoProxy-ng:继承自 AutoProxy,类似 Chrome 下的 SwitchOmega,可以方便地设置和切换浏览器代理。
注:不知道为什么,发现有个bug,最近其代理类型总是全部变成 socks5 类型,导致无法正常工作,已经暂时禁用,直接在浏览器中配置代理,等待进一步研究。 - Cookie Importer:用于 cookie 的导入
- Cookie Manager:强大的 cookie 管理扩展,可以替代浏览器自带的 cookie 查看器,管理网站 cookie 信息。
- Download YouTube Video as MP4:如其名字所述,以 MP4 格式下载 YouTube 视频。
- Firebug:Firefox 下最出名的插件了,虽然我觉得没有 Chrome 自带的 F12 好用~现在已经集成到了 Firefox 的 DevTools 中。
- Flagfox:可以显示网站所在国家的国旗。
- FlashGot:下载扩展,可以提高下载的速度和稳定性,此外也有嗅探视音频资源的功能。
- HackBar:web 渗透必备插件。快捷键 F9,遇到 HackBar 不显示也可以按下 F9 试试哦。
- hashr:可根据选择的主流算法计算字符串的哈希值。
- Live HTTP headers:可以显示和修改 http 请求头。
- SQL Inject Me:用于 SQL 注入测试。此插件不能直接在 Extensions 中安装,需要打开链接下载安装。
- Tamper Data:用于跟踪和修改 http/https 请求。
- User Agent Switcher:用于修改 User-Agent。
- XSS Me:用于 XSS 漏洞测试。此插件不能直接在 Extensions 中安装,需要打开链接下载安装。
FAQ
通过单用户模式找回root密码
大致步骤如下:
启动 Kali Linux,等出现GRUB引导菜单时,按向下方向键选择“恢复模式”,按E键进入编辑模式;
进入编辑模式后,将 single 模式中的 ro 选项修改为 rw,修改完成后,按下 F10 或 Ctrl + X 键继续启动,启动完成后,出现命令行界面;
在命令行中输入 passwd root,即可重设 root 用户密码。
1passwd root
将中文目录改为英文目录
以文件夹“桌面”修改为“Desktop”为例:
到当前用户的根目录,将文件夹“桌面”重命名为“Desktop“;
修改用户的 user-dirs.dirs 文件,将原来的
1XDG_DESKTOP_DIR="$HOME/桌面"修改为:
1XDG_DESKTOP_DIR="$HOME/Desktop"其他的目录同理修改;
logout,重新登录即可。
添加 kali 官方网络更新源
参考资料:Kali sources.list Repositories
编辑 /etc/apt/sources.list,在文件中加入下面这几行
123
deb http://http.kali.org/kali kali-rolling main contrib non-free# For source package access, uncomment the following line# deb-src http://http.kali.org/kali kali-rolling main contrib non-free
修复 Kali Linux 安装 Nvidia 显卡驱动后报错 “something has gone wrong”
参考来源:
Quora 上 Patrick Himebaugh 的回答
Kali 论坛中 TiGER511 的方案
具体步骤如下:
通过 Grub 引导菜单,进入高级启动中的修复模式,使用 root 在命令行下取消 nouveau 的黑名单并移除修改的 xorg 文件,或者简单粗暴地直接删除全部相关文件:
12apt-get remove --purge nvidia*rm -rf /etc/X11/xorg.conf注:如果不知道如何进入修复模式,也可以使用组合键 CTRL + ALT + F2 或者 CTRL + ALT + F3 唤出命令行登录界面,然后使用密码进行登录。
移除之前创建的显示管理器文件(GDM 环境):
12rm -rf /usr/share/gdm/greeter/autostart/optimus.desktoprm -rf /etc/xdg/autostart/optimus.desktop
注:此方案也可用于卸载在3.3部分安装的显卡驱动。
启用 PRIME 同步 (PRIME Sync) 来解决屏幕撕裂问题
参考来源:
Installing official NVIDIA driver in Optimus laptop
确认 PRIME 是否被禁用。在命令行中运行
1xrandr --verbose | grep PRIME这条命令应该会显示类似下面的信息: PRIME Synchronization:0 PRIME Syncroninzation:1
第一个就是我们连接的显示。因此 PRIME 同步是禁用的。
编辑 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT 一栏的 quite 后面追加 nvidia-drm.modeset=1,修改后的效果类似这样子:
123....GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia-drm.modeset=1"....保存修改,更新 GRUB:
1update-grub重启系统
确认是否启用 PRIME。在命令行输入
1xrandr --verbose | grep PRIME此时应该显示类似下面的输出:
PRIME Synchronization: 1
PRIME Synchronization: 1如果仍然显示的是 0,那么很可能是系统配置或者系统内核有些问题,或者是运气问题,毕竟该技术本身就是 Nvidia 一个测试性功能。
Chromium 浏览器只能看见播放框但没有播放内容的解决方法
在 Chromium 浏览器中按下键盘的 F12 键,查看是否有报错信息,若在 console 中有报错信息
Uncaught SecurityError: Failed to read the ‘localStorage’ property from ‘Window’: Access is denied for this document.
则是由于 Chromium 浏览器默认禁用了第三方站点的数据和 cookie 所致。
解决方法也很简单,打开 Chromium 浏览器的设置 chrome:settings,依次找到 Show advanced settings--Privacy--Content settings--Cookies
,在其中的 `Block third-party cookies and site data’ 上取消勾选。
这时候再刷新播放不正常的界面,即可正常观看视频。
使用非 root 用户管理 Docker
Docker 实例绑定在 Unix Socket 上,而不是绑定的 TCP 端口。而默认情况下 Unix Socket 是由 root 用户控制的,其他用户只能通过 sudo 命令来获取权限。为了省去每次运行 docker 都加上 sudo 的麻烦,可以配置一个 docker 用户组,并设置在 docker 实例启动时,Unix Socket 的所有关系变为 docker 组可读写。下列的步骤参考自docker 官方文档。
创建 docker 组
1sudo groupadd docker将我们常用的用户( userabc 为例)加入 docker 组
1sudo usermod -aG docker userabc重启系统以使修改的组成员关系生效
确认 docker 可以直接运行,而不用加 sudo 命令
1docker run hello-world
配置 Docker 随系统启动
参考自docker 官方文档
在命令行中输入:
|
|
若要禁用 docker 随系统启动,则可以在命令行中输入
|
|
修改 Docker 默认的镜像和容器存储位置
参考:
Change default Image and Container location in Docker
docker 官方文档
默认的 docker 会在 /var/lib/docker 目录下存储其镜像与容器,由于空间分配关系,需要修改其默认存储位置,步骤如下:
在命令行输入
docker info
,找到其中的Storage Driver
字段,并记录其中的值(我的是 overlay2,所有可能的值可以参考 docker 文档)停止 Docker 服务
1sudo systemctl stop docker新版本(推荐):在 /etc/docker 目录下创建 daemon.json 文件
1sudo touch /etc/docker/daemon.json在其中输入以下内容并保存
1234{"graph": "/storage/pentest/docker","storage-driver": "overlay2",}老版本:在 /etc/systemd/system 下创建 docker.service.d 目录,并在此目录下新建 docker.conf 文件
12sudo mkdir /etc/systemd/system/docker.service.dsudo touch /etc/systemd/system/docker.service.d/docker.conf在新建的 docker.conf 文件中写入以下内容并保存
123[Service]ExecStart=ExecStart=/usr/bin/dockerd --graph="/storage/docker" --storage-driver=overlay2其中,graph 后面的值即为我们想要移动的新目录,storage-driver 后的值即为我们在第一步时记录的 Storage Driver 值。这个 docker.conf 文件会覆盖默认的 docker 配置文件
/lib/systemd/system/docker.service
,具体原因可以参考 systemd 文档。重载服务(service deamon)并启动 docker 服务
12sudo systemctl daemon-reloadsudo systemctl start docker可以在命令行中输入
docker info
,查看其中的Docker Root Dir
字段的值,以确认修改成功。