树莓派安装Kali Linux

Kali Linux支持多种平台运行,对于 ARM Atlas 设备,通过 Kali-ARM-Build-Scripts 工具,提供了不同 Kali Linux ARM Images ,并且针对不同的树莓派设备提供了32位和64位镜像。

备注

我准备在 树莓派Raspberry Pi 400树莓派Raspberry Pi Zero 上分别实践64位和32位的ARM版本Kali Linux,学习Linux安全技术以及尝试ARM平台开发。

安装

ARM版本的Kali Linux安装和其他ARM Linux操作系统安装方法类似,都是采用 dd 命令将镜像复制到SD卡,然后通过SD卡启动设备:

xzcat kali-linux-2021.1-rpi4-nexmon-64.img.xz | dd of=/dev/sdb bs=4M

启动设备之后,首次登陆用户名和密码都是 kali 需要立即修改账号密码。见 Kali’s Default Credentials

启动和运行

首次启动Kali Linux,系统会自动扩展文件系统到整个SD卡,默认启动到图形登陆界面。

Raspberry Pi 400的4K显示 相似,默认时显示器周边有黑边,这和 Underscan/overscan 相关,不过Kali Linux Raspberry Pi没有提供 raspi-config ,所以我参考 Raspberry Pi 400的4K显示 通过 raspi-config 工具生成的 /boot/config.txt 修改如下:

disable_overscan=1

此外,还需要激活:

dtoverlay=vc4-fkms-v3d

激活了 dtoverlay=vc4-fkms-v3d 才能识别出我的4k显示器,并支持30Hz下4k显示

初始设置

Kali Linux 2021.1 发行版默认优化已经非常完善,无论Xfce 4.16的界面风格和终端模拟器QTerminal结合zsh,已经让我非常顺手了。

  • 修订一下默认的时区:

    unlink /etc/localtime
    ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    

这样默认本地时间就能够正确显示。

  • 设置本地编码 locale

    echo "en_US.UTF-8 UTF-8" | sudo tee -a /etc/locale.gen
    sudo locale-gen
    

备注

如果不正确设置 locale ,则很多命令执行时候会出现设置locale报错,类似:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_CTYPE = "UTF-8",
        LC_TERMINAL = "iTerm2",
        LANG = (unset)
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
...

不过,在执行 virsh list 依然提示信息:

setlocale: No such file or directory

通过执行 LANG=en_US.UTF-8 locale 查看可以看到:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

可以看到 LC_CTYPELC_ALL 没有调整成 en_US.UTF-8 ,你可以通过设置环境变量 LC_CTYPELC_ALL 来解决这个问题:

export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

则再执行 virsh list 就不再报错。

或者重启主机也可以解决。

以上参考 “setlocale: No such file or directory” on clean Debian installation #144

  • Kali Linux网络配置

  • 为了方便开发学习,设置 Python virtualenv 完成Python 3开发环境:

    sudo apt install python3-venv
    cd ~
    python3 -m venv venv3
    source venv3/bin/activate
    
  • 写文档 安装Sphinx环境:

    pip install sphinx
    pip install sphinx_rtd_theme
    pip install sphinxnotes-strike
    

然后可以继续撰写我的 Cloud Atlas

Kali Linux 2021.1 Release

我所使用的Kali Linux 2021.1版本是2021年2月24日发布,具有很多有趣的特性:

  • 默认采用 Xfce 4.16 版本: Xfce 4.16当前最新的 xfce 稳定版本(2020年12月22日发布),Kali Linux在此基础上作了优化(基于Xfce调优了GTK3 theme),形成了非常美观的现代化界面

../../../_images/xfce-414-new.png
  • 提供了可选的 KDE 5.20 (Plasma) 作为Kali官方支持的桌面,安装过程也可以选择GNOME。此外,系统安装完成后,还可以选择安装Enlightenment, i3, LXDE 和 MATE

  • 提供了不同终端工具

  • 提供了 command-not-found 工具来帮助使用(当输入命令错误时会提供相近命令提示),激活方法如下:

    # enable command-not-found if installed
    if [ -f /etc/zsh_command_not_found  ]; then
        . /etc/zsh_command_not_found
    fi
    

切换窗口管理器

虽然 xfce 相对轻量,但是随着功能逐渐丰富,其内存使用率已经逐渐追平GNOME和KDE(启动后内存占用700+MB)。对于 树莓派Raspberry Pi 400 这样硬件有限的平台,已经非常沉重。Kali Linux发行版提供的 sway - i3兼容Wayland compositor 可以充分利用屏幕空间并且使用资源非常少,所以我改为 运行sway窗口管理器

使用体验

Kali Linux可以说是非常完整的桌面系统,即使抛却系统集成的大量hacker工具,从桌面角度来说,也提供了非常完整的体验,基本上一个开发或者运维工作者需要的工具都已经默认安装,并且采用了轻量级的 xfce ,使得即使在 树莓派Raspberry Pi 400 这样非常廉价的ARM设备上也运行流畅(需要精心裁剪)。

我在 Real Atlas 的桌面系统,就采用运行在 树莓派Raspberry Pi 400 上的Kali,目标是把所有复杂运算和开发工作都迁移到自己构建的云计算平台,本地只采用非常轻量级的移动设备工作。这方面经验将不断磨炼完善…

参考