送给同样喜欢折腾的小伙伴 :)

如果你把玩Linux发行版有余,已经不满足于开箱即用的Ubuntu,下一个折腾对象用Archlinux是不错的选择,它的安装过程能简单揭示一下在图形化安装界面背后的各类发行版的Installer是如何工作的,并且Archlinux的WIKI可以说是对新手非常友好的了,很多信息都能在WIKI中找到,官方的安装教程亦很丰富,本篇只是在此基础上增加了一些增加自己用到时的条目,仅作笔记。

恰逢手里有一台老款的笔记本,说动就动,首先第一步当然是制作安装介质,目前来说应该基本上都是使用U盘了。下面推荐几款制作安装盘比较方便的GUI工具,横跨各大平台:

  1. Windows:Win32 Image Writer、Rufus
  2. Linux:dd、BootMaker
  3. MacOS:balenaEtcher

Archlinux的安装ISO非常的小,能很快的写入到U盘中。然后进行常规的BIOS修改引导从U盘启动,需要注意的是现在很多笔记本都拥有secure boot的选项在BIOS中,建议在引导安装之前将其关闭,以防止不可预料的一些奇怪问题发生。

引导U盘并加载ISO后,可以得到有一个Virtual Console界面,是的一个朴实无华的命令行摆在了你的面前。通常来说第一步需要判断UEFI模式是不是开了,使用ls /sys/firmware/efi/efivars查看目录来进行判断,如果不存在则是普通的BIOS引导模式,不过现在大多数笔记本出厂应该都默认EFI了。而我手上这台机器又恰好安装过Windows(这一是一篇双系统安装Archlinux的笔记),EFI分区已经在Windows安装时被分配好了,安装万事第一步就是进行磁盘的分区,Archlinux提供了众多分区的工具来使用,我比较习惯使用gdisk来进行分区(如何分区其实是一个比较私人的选择,如果想进一步配置LVM或者Luks Crypt等请移步官方WIKI):

gdisk /dev/sdX #需要注意的是现在越来越多nvme的SSD,设备名有可能变为 nvme0nX

gdisk会显示当前磁盘的分区表情况,如果不存在(比如之前没装过系统)则会自动建立一个GPT分区表,Archlinu WIKI推荐了 Boot分区、Root分区、Swap分区这种典型的方案,沿用之,不过这里因为已经安装过Windows所以不需要再进行Boot分区的操作了,分区之前可以先通过fdisk -l查看一下已有的分区的方案,进入gdisk界面之后几个常用的操作包括print打印分区,n创建分区,w写入分区表等。创建分区时,第一步会让确立分区编号(一般默认即可),然后确立分区起始位置(一般也默认),再然后是分区结束位置(这里可以用+XXX单位的方式标示,比如+30G就是分配30G空间),最后一步是确认分区类型(Linux文件系统的类型码8300,Swap分区的类型码8200),最后写入分区表后即可退出Gdisk的交互界面,进行下一步格式化操作:

# mkfs.ext4 /dev/sdX1
# mkswap /dev/sdX2
# swapon /dev/sdX2
# free -h

格式化都完成了之后,就需要准备来联网了,目前笔记本基本上是通过无线连接路由接入互联网的,Arch提供了一个简单的命令行图形界面工具wifi-menu,运行之后就是简单的交互操作,最后确保你能连上互联网即可。Arch的安装指导此时还会推荐一些操作,比如确保通过互联网时间同步timedatectl set-ntp true等,下一个大的步骤就是将分区挂载磁盘,通过pacstrap等安装基础的Linux环境。

因为已经安装Windows的原因,所以EFI分区已经存在了,我们先通过mount /dev/sdX1 /mnt来挂载Root分区,然后通过mount /dev/sdXX /mnt/boot/efi来挂载EFI分区(sdXX通过前面的fdisk -l查看),在准备使用pacstrap之前确保正确使用pacman的镜像,由于国内的网络情况你懂的,我比较喜欢中科大的源,暴力点可以直接echo到镜像列表文件,或者你可以编辑(注意保证新添加的内容在其他 Server =之上):

Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch

然后可以通过pacman -Syy来确认Repo索引同步,以及感受一下速度如何,诸事具备让我们向Root分区安装基础的Linux环境吧~

# pacstrap /mnt base linux linux-firmware

一支烟的功夫都不要应该就基本安装完成了,在进一步通过chroot配置已经安装好的Root分区之前,还请先保存一下磁盘的挂载点情况,可以通过如下命令自动生成(注意fstab配置的路径,和你前面的Root分区挂载点一致):

genfstab -U /mnt >> /mnt/etc/fstab

提前做好分区挂载点配置不容易忘,然后可以通过arch-chroot /mnt来切入到安装后的环境的了,接下来是几个几乎必备的常规操作:

# ln -sf /usr/share/zoneinfo/Asian/Shanghai /etc/localtime #天朝人用帝都时区
# hwclock --systohc #确保硬件时钟同步
# nano /etc/locale.gen && locale-gen #我一般习惯用 en_US.UTF-8 和 zh_CN.UTF-8
# echo "LANG=en_US.UTF-8" > /etc/locale.conf #设定一下默认语言环境,通常天朝产的笔记本不用修改键盘布局,故略过
# echo "Linux-PC" > /etc/hostname
# nano /etc/hosts #添加你的主机名,并且确保 127.0.0.1 和 ::1 除了对应 localhost 也能对应你刚建立的主机名
# passwd # 改下Root密码
# mkinitcpio -P #这一步通常不是必须的

一顿操作猛如虎之后,一个基本的Linux环境已经诞生了,诞生还差最后重要的一个步骤 —— 搞定引导:

pacman -S grub efibootmgr

如果想自动发现多系统还可以安装pacman -S os-prober,工具就绪后就是增加配置了:

grub-install /dev/sdXX --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ArchLinux

安装引导前面你看到过的EFI分区中,同时确保你的Grub菜单是存在的,可以通过如下命令生成:

grub-mkconfig -o /boot/grub/grub.cfg

在你退出chroot环境umout /mnt/boot/efi && umount /mnt之前,请选择性的安装下这几个包,能让你的笔记本重启之后感受到生命的美好,他们主要用于给管理无线网络带来一些方便:

pacman -S wpa_supplicant dhcpcd net-tools vim

再然后你可以reboot了,我不建议在Chroot中优先做过多的配置,可以先确保重启通过硬盘引导后能运行到Archlinux中再进行后续的配置也无妨。重启成果后,会进入到命令行界面的登陆验证,输入凭据后又是亲切的Console,此时通常来说笔记本需要面临的最大问题是通过无线连接互联网,如果你插线的可以稍微的略过这一段。我们主要通过 wpa_supplicant 来管理无线网络,首先你需要新建一个配置,路径可以是/etc/wpa_supplicant.conf,并写入一些内容:

ctrl_interface=/var/run/wpa_supplicant
update_config=1

然后通过如下命令,启动wpa的服务:

wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

最后你可以通过一个简单的命令行交互界面进行无线网络的配置(当然你可以一步到位的编辑配置文件自动进行联网,但我比较习惯于交互界面),它就是wpa_cli -i wlan0,一些简单的操作如下:

scan #开始扫描SSID
scan_result #等一阵可以查看结果
list_network #列出已经保存的连接
add_network #添加连接,会返回一个序号,后续所有操作通过需要完成,对应的remove_network是删除
set_network 0 "SSID" "WIFI_PASSWD" #设置连接,主要是SSID和WIFI密码
select_network 0 # 选择连接
enable_network 0 # 开启连接
save # 保存
help XXXX #记不住没关系,我也不记的,看帮助!当输入命令不加参数时可以查其 Usage

当看到联网成果时,你发现通过ifconfig -a命令查看无线网卡是没有IP的,所以你需要刚刚在安装过程中的DHCP客户端,使用dhcpd -i wlan0就可以使无线网卡获取到IP了(不可能你的家用路由都不开DHCP服务吧!?),此时你已经拥有了感受互联网广阔的Archlinux了!

当然在日常使用中,我们还需要进行进一步的配置,第一个操作当然是配置普通用户,然后像其他发行版一样通过sudo来切换权限,养成一个较好的网络安全意识:

# pacman -S sudo 安装sudo
# useradd -m -G wheel -s /bin/bash youruser
# passwd youruser
# ln -sf /usr/bin/vim /usr/bin/vi && visudo #找到 %wheel组,去掉前面的注释并保存

Archlinux WIKI还有一些推荐的普通用户加入的用户组,具体可以自行参考

有了一个普通用户且能够方便通过 sudo 切换 Root 权限之后,你一定还需要一个DE,通常我比较喜欢Xfce也是因为经常使用 Kali 做渗透的缘故,但是最近想感时髦追求国产,于是便安装了深度的桌面环境,通过如下命令安装:

# pacman -S deepin
# pacman -S deepin-extra # 可选,包含一些桌面常用软件,比如视频播放器之类的

深度桌面环境依赖 NetworkManager 管理网络(当然目前所有流行的发行版搭载的DE都用它),安装并通过 systemd 配置自启动:

# pacman -S networkmanager
# systemctl enable NetworkManager
# systemctl start NetworkManager # 如果一会儿想直接体验Deepin DE的话可以开启

最后,仍然需要对Deepin DE做一些配置,主要是在 /etc/lightdm/lightdm.conf 中找到 greeter-session=将其去掉注释并修改为:

greeter-session=lightdm-deepin-greeter

同时保证 lightdm 是自启动状态:

systemctl enable lightdm
systemctl start lightdm #如果执行它,等待一会就可以进入DE了

一切测试妥当之后,可以先注销Root的命令行会话,通过新建用户进行登录尝试,以确保凭据的正确性,免得重启后在桌面环境的登录界面上用快捷键来切换命令行,保持一个良好检查习惯的重要性,会让事情变得容易很多。最后的最后重启就大功告成了。

but wait,emm,还有什么需要做的吗?再多嘴一句关于Arch WIKI,以上的操作适用于大多数的硬件设备(笔记本),但是由于硬件的部分差异,Arch WIKi也贴心的提供了记录,比如我的这个老款设备是小米笔记本,这里就可以找到其WIKI页面,其中介绍了大量用户提供的Archlinux反馈,也会记录一些特别驱动(如触摸屏、蓝牙、触摸板、指纹等)的AUR地址,说道AUR这里又得多插一句话,让Archlinux更强大的是“我为人人、人人为我”的精神,所以AUR这类用户自定义源是很多疑难问题的快速解决途径(比如刚刚说道驱动问题),而管理AUR以前经常使用yourt,可惜其已经不再更新了,后续又出来很多类似的AUR管理辅助工具,我比较习惯使用的是基于Go语言编写的yay(谁叫我自称是一名Gopher呢?),yay的安装也很方便(通用AUR使用的方式),切换到普通用户权限(如果你是桌面环境登陆的话此时已经是了):

git clone https://aur.archlinux.org/yay
cd yaya
makepkg -si

这里可能会遇到没有 fakeroot 等编译环境不存在的问题,不用慌一下子搞定:

sudo pacman -S base-devel

自然会等待一会就会自动下载Go并且进行yay编译了,补充几个yay的常见操作:

yay -Ss package # 只搜索
yay -S pacage # 同步=安装包
yay -s package # 搜索,并且给出交互提示框用于输入数字选择安装
yay -R package # 删除包
yay -c # 类似 apt autoremove 删除无用的依赖包,主要是aur的,可以留着方便某些aur源码的编译

话又扯回来,下面一段文字各位读者可以基本略过,只是我们对于这个老款笔记本安装Archlinux后日常使用的一个记录,可能偶尔会不定期的更新一下。

首先解决的是显卡驱动问题,直接照着WIKI去操作记性,由于平时是写代码和渗透为主,所以只使用Intel的核显就行了,N卡基本上是禁用状态,这样的好处当然减少能耗增加电池的寿命。

其次就是中文语言环境,由于我们安装时已经生成对应中文的Locale,只是在显示上会有一些问题,所以需要安装对应字体,否则会显示很多“口口”,我比较中意的几个字体:

yay -s microhei # 搜索,通过序号选择安装,一般就 WQY 比较多
yay -s noto # 搜索,找到 CJK 字体进行安装就行了

然后由于大多数时间仍然处在中文互联网,所以输入法是必不可少的,Linux上如果抛开隐私问题闭口不提的话(鉴于某些随手可搜到的安全从业者提供的测试),搜狗也许是一个不错的选择,其主要还是依赖fcitx,但是由于目前Archlinux的更新,而老版搜狗基于qt4所以会有一些冲突,具体更新可以关注其AUR主页及一些互联网解决方案。其实Fcitx-也是另一个不错的选择,由于我平时使用中文输入法没那么频繁,一些词库也就不需要进行联网更新了,更多的中文本地化也可以参考这里,下面是Fcitx-的安装与配置:

yay -S fcitx 
yay -s rime or libpinyin #可以搜索到基于ibus的比如 libpinyin 一类的,或者 rime 输入法,记得选择 fcitx 打头的
yay -S fcitx-cloudpinyin #加上云中文输入法支持,不兼容 rime
yay -S fcitx-gtk2 fcitx-gtk3 fcitx-qt4 fcitx-qt5  # 根据需求安装一些辅助模块,或者一次性安装他们 fcitx-im
yay -S fcitx-configtool # 安装一个配置工具,然后就可以通过 fcitx-configtool 进行比如快捷平配置了(需要先运行一次 fcitx 才能获取 input-method)

如此基本上可以了,但是在Deepin的编辑器中可能无法使用,你还需要做如下尝试,在~/.pam_enviroment或者/etc/enviroment中加入:

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

然后修改Deepin的系统语言为简体中文并重启。

最后你可能需要一个浏览器,我的个人爱好是Firefox,啪啪啪yay -S firefox就直接安装好了。至此,一个基本可用的可以在中文互联网冲浪Archlinux环境安装配置完毕。

但是作为一名撸站工,日常的工作里头肯定少不了使用各种渗透工具,除了基于Debian的Kali之外,也有比较小众的基于Arch的Linux发行版,那就是BlackArch,其除了提供完整的预装环境的ISO之外,也可以在全新安装Arch上使用其Repo,同时BlackArch也提供了类似于可以使用AUR的工具 Blackman,从这里你可以获得比较详细的指导,就不再赘述了。

当然以上的手动安装过程中,如果你不想那么折腾,也可以使用 AUI https://github.com/helmuthdu/aui 一个Shell脚本的向导来辅助你快速安装并体验Archlinux。