callcc.dev

本文章主要是针对 UEFI 启动的,MBR 的话有稍许不同,可参考这篇文章

Δ前期准备

  • 话说 Arch 的 Wiki 真是丰富,查 Wiki 能解决挺多问题了,建议看。
  • 官方的安装 Wiki:Installation guide
  • 制作一个启动 U 盘,用USBWritter即可。
  • 在 Windows 的磁盘管理中划分出一块磁盘空间出来,无需格式化。
  • 假设你懂得了如何设置启动顺序/快速启动选择,这里忽略。
  • vim 的基本使用方法
  • 每条命令前都有提示符,#表示 root 用户下执行,$表示普通用户下执行。
启动进入 U 盘的安装引导后,开始进行下面的安装步骤。

Δ联网

有线网
# dhcpcd
无线网
# wifi-menu
网络连接好了之后可以进行一次网络通畅测试
# ping baidu.com
确认可以后进行下一步。

Δ更新系统时间

# timedatectl set-ntp true

Δ分区

分区用fdisk
首先
# fdisk -l
查看一下当前磁盘情况(关注磁盘路径和 EFI 分区路径(非全新磁盘))。因为这里是建立在 Windows 已经安装好了的情况下进行的,所以肯定会有一个 EFI 分区,记住它的路径,或者想建立一个独立的 EFI 分区也是可以的。如果你的磁盘是新的,那么就还要建立一个 GPT 分区表。
# fdisk /dev/xxx
(这里的 xxx 是指你的磁盘路径,不是分区路径)进入操作界面,然后进行下面的操作。

Δ建立 EFI 分区

输入g建立 GPT 分区表(仅对于新磁盘)。然后输入n建立分区,然后会要求我们输入起止扇区,开始扇区默认就好,结束扇区可以输入一个大小,一般大于 100M 就好,所以我们输入+200M,这里就划分出来了一个 200M 大小的分区用作引导。输入t选择新建分区类型,输入1表示要建立 EFI 分区,输入w使刚才的分区操作生效。在这之前可以输入p来查看分区情况。最后格式化一下新建分区
# mkfs.fat -F 32 /dev/xxxY
(这里的 xxxY 是指你的引导分区)。

Δ建立根分区

这里没有建立其他分区而是直接一个根分区,要是想把 Linux 其他路径挂在到独立的分区(因为我的是双系统,磁盘空间本来就不够了,懒得再分,如果是要绝心装单系统,那么可以划出更多的分区),那么可以活用搜索引擎了解一下 Linux 的分区。分区操作是一样,只是在fstab记录分区表的时候会多一点记录。
# fdisk /dev/xxx
选中磁盘,然后输入n新建分区,因为我想把剩下的空间全部利用上,所以输入起止扇区的时候都直接回车就好了。同样输入w生效,然后格式化分区
# mkfs.ext4 -b 4096 /dev/xxxY
(这里的 xxxY 是刚新建的根分区,4096 是确保 4K 对齐)。

Δ挂载根分区

# mount /dev/xxxY /mnt(xxxY是根分区)
# mkdir /mnt/boot
# mount /dev/xxxY /mnt/boot(这里的xxxY是EFI分区)

Δ更换软件源

# vim /etc/pacman.d/mirrorlist
在顶部添加速度会较快一点的源,这里添加了清华大学的源
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
保存退出。

Δ安装基本系统

# pacstrap /mnt base base-devel
base-devel 包含了基本的工具,如 sudo,pacman 等,具体包含了什么可以在这里查看。

Δ配置系统

Δ生成 fstab

这个是用来让系统挂载分区时候用的
# genfstab -U /mnt >> /mnt/etc/fstab
这一步很重要,用
# vim /mnt/etc/fstab
查看生成的文件,有误可以编辑它。

Δroot 切换到系统

# arch-chroot /mnt

Δ设置时区

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# hwclock --systohc
第二条命令是同步硬件时钟为 UTC。

Δ安装会用到的软件

比如 vim 等
# pacman -S vim dialog wpa_supplicant ntfs-3g networkmanager

Δ设置 Locale

# vim /etc/locale.gen
然后找到
zh_CN.UTF-8 UTF-8
zh_HK.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
en_US.UTF-8 UTF-8
这四行,去掉注释。接下来运行这条命令
# locale-gen
然后
# vim /etc/locale.conf
在第一行写入
LANG=en_US.UTF-8

Δ设置主机名

# vim /etc/hostname
输入你喜欢的主机名(比如我的 mcarch)。然后编辑一下 hosts 文件
# vim /etc/hosts
然后在里边输入
127.0.0.1	localhost
::1			localhost
127.0.1.1	mcarch.localdomain	mcarch

Δ设置 root 密码

# passwd

Δ安装 Intel-ucode(农企用户请忽视)

# pacman -S intel-ucode

Δ安装 Bootloader

# pacman -S os-prober //多系统需要
# pacman -S grub efibootmgr
部署 grub
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
生成配置文件
# grub-mkconfig -o /boot/grub/grub.cfg
如果爆出
warning failed to connect to lvmetad,falling back to device scanning.
这个药(错)丸(误),简单解决方法是编辑 /etc/lvm/lvm.conf
这个文件,找到use_lvmetad = 1这一行,把1改成0即可。

Δ配置 Windows 的启动入口

参考这里,添加到/boot/grub/grub.cfg这个文件中,在Arch Linux这个menuentry前或后添加 Windows 的menuentry
if [ "${grub_platform}" == "efi" ]; then
	menuentry "Windows 10" {
		fs_uuid=CEC0-7D1B
		hints_string=--hint-bios,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=achi0,gpt1
		insmod part_gpt
		insmod fat
		insmod search_fs_uuid
		insmod chain
		search --fs-uuid --set=root $hints_string $fs_uuid
		chainloader /EFI/Microsoft/Boot/bootmgfw.efi
	}
fi
fs_uuid 这个值是通过这条命令得到的
# grub-probe --target=fs_uuid $esp/EFI/Microsoft/Boot/bootmgfw.efi
hints_string 的值是通过这条命令得到的
# grub-probe --target=hints_string $esp/EFI/Microsoft/Boot/bootmgfw.efi
如果上边两条命令爆路径错误,直接切换到 bootmgfw.efi 的路径下
# cd /boot/EFI/Microsoft/Boot
然后去掉 bootmgfw.efi 前边的路径执行。比如第一条命令
# grub-probe --target=fs_uuid bootmgfw.efi
还有可能爆的错是获取 hints_string 的时候,因为我的 SSD 是 NVMe 的,然后爆出了这个错误
grub-probe: warning: unknown device type nvme0n1.
我 Google 了一下并没有找到解决方案[绝望脸.jpg],于是自己臆测 Wiki 给出的大概那是单块磁盘的输出,所以我直接就 copy 了 Wiki 给出的值。
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1
我大概猜测一下hd0是指第 1 块磁盘,在fdisk -l的输出结果中,我的磁盘是nvme0n1,如果有第二块 NVMe 磁盘应该就是nvme1n1。如果你只有单块 NVMe 磁盘,那么这么写是没错的,亲测能正常启动 Windows。而我测试了 gpt 后边的数字写什么都可以启动,如果你有多块磁盘,你也是可以测试一下。欢迎在评论区写下你的结果。;)
根据网友 tpob 的说法是:BIOS 里是第几块硬盘就是 hd 几。(看来和我猜想的一致)

Δ添加新用户

# adduser -m -G wheel [username]
设置密码
# passwd [username]
添加 sudo
# vim /etc/sudoers
找到 \# %wheel ALL=(ALL)ALL
这行,把#去掉,保存退出。

Δ安装 yaourt

# vim /etc/pacman.conf
在末尾加上
[archlinuxcn]
SigLevel = Optional TrustAll
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
然后运行
# pacman -Sy yaourt fakeroot

Δ重启

# exit
# reboot
ALL DONE!重启后可以用新建的用户登陆,然后联网进行后序的桌面安装

Δ安装桌面

Δ安装显卡驱动

这里可以找到你的显卡对应的包。我的是 Intel 的集显,所以我执行这条命令
$ sudo pacman -S xf86-video-intel

Δ安装 X

$ sudo pacman -S xorg xorg-xinit xterm xorg-xeyes xorg-xclock

Δ安装 gnome 桌面

其他桌面请活用搜索引擎。
$ sudo pacman -S gnome
因为桌面是用 NetworkManager,因此要让它启动并开启自启
$ sudo systemctl enable NetworkManager
$ sudo systemctl start NetworkManager

Δ安装工具栏网络图标

$ sudo pacman -S network-manager-applet
之后让 gdm 开启自动然后启动它,这时候就可以看到桌面了
$ sudo systemctl enable gdm
$ sudo systemctl start gdm
桌面安装完了之后可以进行一些软件安装(不写了就这样发布吧=。=)