前言

一不小心给manjaro的pacman源换成了arch的,更新完全是bug,干脆自己动手从头安装一个arch得了

硬件简介

surface pro8

windows11已经安装

制作安装介质

下载,制作Arch安装介质

首先在Index of /archlinux/iso/2023.07.01/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror下载arch的对应版本,如果你是x86架构,你应该下载

之后使用balenaEtcher这个软件烧入一个你不用的u盘里面。

进入Arch 安装介质

首先进入你电脑的bios(通常是开机狂按del),把首要引导换成usb,选择uefi引导,关闭安全启动。

然后重启就进入arch,选择:

Arch Linux install medium (x86_64, UEFI)

连接互联网

首先进入iwd环境

iwctl

输入device list 查看都有什么网络设备

我们记住name下面的网络名称

[iwd]# station wlan0 scan  # 扫描网络,请将 wlan0 换成您的设备名称
[iwd]# station wlan0 get-networks  # 输出扫描结果,请将 wlan0 换成您的设备名称
[iwd]# station wlan0 connect "mySSID"  # 连接网络,请将 wlan0 换成您的设备名称,mySSID 换成您的网络名称
Type the network passphrase for mySSID psk.
Passphrase: ********  # 输入密码
[iwd]# quit  # 退出 iwd 程序环境

这里是用wifif联网的,用有线网可能会复杂一点点,但是我没用

你可以ping一下本网站来确定连接成功

# ping qwqpap.xyz

按ctrl+c 退出

请校准时钟

# timedatectl

查看时间是否准确,如果是utc时间可能会慢上8小时,不用管他

对磁盘分区

务必谨慎操作

我这里已经有了windows系统,提前在diskgenius里面提前给出了一块空闲的空分区。

因为只有一个硬盘,所以要事先划分一块嘛。

输入

fdisk -l 

查看所有的磁盘分区,我们注意到/dev/nvme0n1(如果你没有用m.2硬盘可能是/dev/sda

首先进入fdisk分区操作环境

# fdisk /dev/nvme0n1

我们有如下基本操作:

  • d 删除分区
  • n 创建分区
  • p 打印现存分区
  • t 改变分区类型
  • w 写入 保存
  • q 不保存 退出
  • g 创建gpt分区表

因为我这里已经有Windows分区了,我们直接进入对linux系统分区

Command (m for help): n  # 输入 n 创建新的分区,这个分区将是根分区
Partition number (4-128, default 4):  # 分区编号保持默认,直接按 Enter
First sector (210282496-315831057, default 210282496):  # 第一个扇区,保持默认
Last sector, +/-sectors or +/-size{K,M,G,T,P} (210282496-315831057, default 315831057): +50G  # 创建 50 GiB 大小的根分区,您可以根据自己的硬盘空间决定根分区的大小

Created a new partition 5 of type 'Linux filesystem' and of size 50 GiB.

Command (m for help): t  # 输入 t 改变分区类型,请勿遗忘此步
Partition number (1-5, default 5):   # 保持默认
Partition type or alias (type L to list all): 23  # 输入 23 代表 Linux root (x86-64) 类型
Changed type of partition 'Linux filesystem' to 'Linux root (x86-64)'.

Command (m for help): n  # 输入 n 创建新的分区,这个分区将是 home 分区
Partition number (5-128, default 5):   # 保持默认
First sector (252225536-315831057, default 252225536):   # 保持默认
Last sector, +/-sectors or +/-size{K,M,G,T,P} (252225536-315831057, default 315831057):   # 保持默认,将剩余空间全部分给 home 分区

Created a new partition 6 of type 'Linux filesystem' and of size 30.3 GiB.

Command (m for help): t  # 输入 t 改变分区类型
Partition number (1-6, default 6):   # 保持默认
Partition type or alias (type L to list all): 42  # 输入 42 代表 Linux home 类型
Changed type of partition 'Linux filesystem' to 'Linux home'.

Command (m for help): p  # 输入 p 打印分区表,请检查分区是否有误,如果有误,请输入 q 直接退出

Disk /dev/sda: 150.6 GiB, 161705518592 bytes, 315831091 sectors
Disk model: xxx
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Device        Start        End   Sectors   Size  Type
/dev/sda1      2048     534527    532480   260M  EFI System
/dev/sda2    534528     567295     32768    16M  Microsoft reserved
/dev/sda3    567296  105424895 104857600    50G  Microsoft basic data
/dev/sda4 105424896  210282495 104857600    50G  Microsoft basic data
/dev/sda5 210282496  252225535  41943040    50G  Linux root (x86-64)
/dev/sda6 252225536  315830271  63604736  30.3G  Linux home

Command (m for help): w  # 输入 w 写入分区表,该操作不可恢复
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

使用 mkfs.ext4[16] 将您的根分区格式化为 ext4 文件系统。请将 /dev/sda5 更换为您的 root 分区名,可能是 /dev/nvme0n1p5。

如果您忘记了 root 分区名,请输入 fdisk -l。在 Type 一栏里找到 Linux root(x86-64) 对应的 Device 名称。

root@archiso ~ # mkfs.ext4 /dev/nvme0n5

使用 mkfs.ext4 将您的 home 分区格式化为 ext4 文件系统。请将 /dev/sda6 更换为您的 home 分区名,可能是 /dev/nvme0n1p6。

如果您忘记了 home 分区名,请输入 fdisk -l。在 Type 一栏里找到 Linux home 对应的 Device 名称。

root@archiso ~ # mkfs.ext4 /dev/nvme0n6

挂载分区

我们首先挂载/root分区

# mount /dev/nvme0n1p5 /mnt

然后创建必要的目录

# mount --mkdir /dev/nvme0n1p5 /mnt/boot

之后把efi分区挂载在windows创建的efi分区中

mount --mkdir /dev/nvme0n1p1 /mnt/efi

之后挂载home目录

# mount --mkdir /dev/nvme0n1p6 /mnt/home

建立交换文件

也就是虚拟内存,这里有一个表供计算虚拟内存大小

内存大小2 GiB4 GiB8 GiB16 GiB32 GiB64 GiB
推荐的交换文件大小4096 MiB5793 MiB8192 MiB11585 MiB16384 MiB23170 MiB
# dd if=/dev/zero of=/mnt/swapfile bs=1M count=11585 status=progress

如上创建了一个11585MiB大小的交换文件

然后修改权限

# chmod 0600 /mnt/swapfile

格式化,启用

# mkswap -U clear /mnt/swapfile
# swapon /mnt/swapfile

选择软件仓库镜像

如果你是一个纯正的中国人

我推荐使用清华镜像

# nano /etc/pacman.d/mirrorlist
Server = https://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch

然后按ctrl+x y 保存

装个内核

先装个内核

# pacstrap -K /mnt base linux linux-firmware

fstab

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

chroot

从这一步开始,我们就进入新的系统了

# arch-chroot /mnt

设置时区

# ln -sf /usr/share/zoneinfo/Asia/Chungking  /etc/localtime

我们选择重庆作为时区(确信

# hwclock --systohc

本地化

我们将设置 locale 和终端字体。locale 决定了系统的语言和格式,包括终端显示哪种语言,数字、时间和货币以哪国的格式显示等等。

首先使用 Arch Linux 强大的包管理器 pacman 安装两个软件包。包管理器 pacman 是 Arch Linux 的核心特征之一,可以自动解决依赖问题,十分方便。它具有强大的功能,不过现在只需要学习安装软件包的方法。使用 pacman 安装软件包需要利用 -S(--sync)选项,这个选项的意思是同步的数据库,请初学者牢记。

[root@archiso ~]# pacman -S vim terminus-font

vim 是著名的文本编辑器,而 terminus-font 是终端字体。我们输入以下命令,利用 vim 编辑 /etc/locale.gen。

[root@archiso ~]# vim /etc/locale.gen

vim 的功能也十分强大,在这里笔者只解释用到的功能,其他功能在下一篇文章中介绍。如果您想提前学习 vim 的使用方法,请查看菜鸟教程[32]

首先输入“/”,进入搜索功能,输入“en_US.UTF-8”,我们找到了以下一行。

#en_US.UTF-8 UTF-8

按下Enter,此时光标的位置在这一行的“e”的位置。按方向左键,再输入“x”,将这一行开头的“#”删除。

en_US.UTF-8 UTF-8

再一次输入“/”,进入搜索功能,输入“zh_CN.UTF-8”,按下Enter。按方向左键,再输入“x”,将“#”删除。

zh_CN.UTF-8 UTF-8

随后输入“:”,进入命令模式,输入“wq”,按下Enter,保存并退出 vim 软件环境。

接下来,输入如下命令,生成 locale。

[root@archiso ~]# locale-gen

我们再使用 vim 创建并编辑 locale.conf,设置 locale。

[root@archiso ~]# vim /etc/locale.conf

这是一个空文件。进入 vim 程序环境时,默认进入了命令模式,此时无法插入字符。我们首先按下“i”键,进入插入模式。请输入如下字符。

LANG=en_US.UTF-8

然后按 Esc,退出插入模式。再输入“:”,进入命令模式,输入“wq”,按下Enter,保存并退出 vim 软件环境。

最后,我们创建并编辑 vconsole.conf,设置终端的默认字体。我们已经在安装开始时设置过终端字体,但是重启之后设置将失效,为了让设置永久生效,我们需要把设置写在文件中。请输入如下命令。

[root@archiso ~]# vim /etc/vconsole.conf

如果您的屏幕分辨率较高,您会发现终端显示字体较小。这时需要设置终端字体,把字号调大。

在此之前需要先介绍一下 Linux 命令的语法。最简单的 Linux 命令由命令、选项和参数组成。就像一个祈使句,由谓语、状语和宾语组成,只不过语序有所变化,而且选项要前面用“-”标注。我们以祈使句“快速地吃米饭”举一个例子。

命令-选项参数
谓语-状语宾语
-快速地米饭

请记住下列语法

命令 -选项 参数

我们使用 setfont 命令[11]设置,这个命令没有选项,只需要输入命令和参数,如

setfont 字体名

分辨率为 1080p 的屏幕,建议选择字体 ter-122b,分辨率更高的屏幕,可以在 ter-124b,ter-128b,ter-132b 中选择一个,例如

root@archiso ~ # setfont ter-132b

请用相同的方法输入如下字符,请在“FONT=”后面输入您刚刚设置的字体,保存并退出。

FONT=ter-132b

网络配置

请编辑 hostname[33] 文件,设置主机名,这将成为您计算机的名字。这篇文章[34]为设置主机名提供了一些建议。

[root@archiso ~]# vim /etc/hostname
----------------------------------
我的主机名

然后,请安装一个网络管理器,笔者推荐使用 NetworkManager。

[root@archiso ~]# pacman -S networkmanager

NetworkManager 附带一个守护程序。在 Arch Linux 中,守护程序由 systemd 管理。systemd 是非常重要的系统程序,我们在下一篇文章中会详细介绍它的用法。现在我们使用 systemd 设置 NetworkManager 开机自动启动。

[root@archiso ~]# systemctl enable NetworkManager.service

root 密码

root 用户是 Linux 系统中权限最高的用户,有些敏感的操作必须通过 root 用户进行,比如使用 pacman。我们之前进行所有的操作也都是以 root 用户进行的。也正是因为 root 的权限过高,如果使用不当会造成安全问题,所以我们在下一篇文章中会新建一个普通用户来进行日常的操作。在这里我们需要为 root 用户设置一个密码。[35]

请输入如下命令设置 root 密码。

[root@archiso ~]# passwd
New password:  # 请输入密码,这里不会显示“*”,这是正常现象
Retype new password:
passwd: password updated successfully

引导加载程序

为了启动 Arch Linux,必须使用一个引导加载程序,笔者推荐使用 GRUB[36]。再次声明,本教程只针对 UEFI 启动模式的计算机,如果您的计算机使用 BIOS 启动模式,请参见教程[37]。关于 Arch Linux 启动的过程,请参见[38]。这也是安装过程中比较复杂的一步。

微码

首先,根据您的 CPU 型号,安装相应的微码[39]

请查看您的 CPU 型号。

[root@archiso ~]# cat /proc/cpuinfo | grep "model name"

如果是 Intel CPU,安装 intel-ucode。

[root@archiso ~]# pacman -S intel-ucode

如果是 AMD CPU,安装 amd-ucode。

[root@archiso ~]# pacman -S amd-ucode

Arch Linux 和 Windows 双系统的引导加载程序安装

首先,安装必要的软件包。

[root@archiso ~]# pacman -S grub efibootmgr os-prober

安装 GRUB 到计算机。

[root@archiso ~]# grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB

如果您在挂载分区时,将 esp 分区挂载到了 /boot,请在 --efi-directory 选项中作相应变动。如果您完全按照本教程操作,就不用作改变。

如果报告

Installation finished. No error reported.

说明安装成功,可以执行以下步骤。否则请检查错误。

然后配置 os-prober,以检测 Windows 系统。

[root@archiso ~]# vim /etc/default/grub

搜索“GRUB_DISABLE_OS_PROBER=false”一行,并去掉这行开头的“#”。保存并退出。

最后生成 GRUB 配置,即可。

[root@archiso ~]# grub-mkconfig -o /boot/grub/grub.cfg

重启

首先,退出 chroot 环境。

[root@archiso ~]# exit

然后,关闭交换文件。

root@archiso ~ # swapoff /mnt/swapfile

随后,取消挂载 /mnt。

root@archiso ~ # umount -R /mnt

最后,重新启动计算机。

root@archiso ~ # reboot

创建普通用户

我们已经使用 root 用户登录了系统,但是 root 用户的权限太高了,日常使用 root 可能带来安全风险。因此我们创建一个普通用户,并为其设置密码。[4]

[root@xxxx ~]# useradd -m -G wheel 用户名  # 创建用户,并为其创建家目录,将其加入 wheel 组
[root@xxxx ~]# passwd 用户名  # 为新用户设置密码
New password:
Retype new password:
passwd: password updated successfully

安装一个桌面环境

这个比较好看,所以选它了

请安装 plasma-meta 软件元包。为了提供 Wayland 支持,请安装 plasma-wayland-session 软件包。请安装 KDE 默认的文件管理器 dolphin 和终端模拟器 konsole 软件包。KDE 提供的其他应用程序,请见 Arch Linux - kde-applications (x86_64) - Group Details。为了获得中文字体,请安装 noto-fonts-cjk 软件包。

# pacman -S plasma-meta plasma-wayland-session dolphin konsole noto-fonts-cjk

安装过程中需要选择 jack 和 pipewire-session-manager 的提供者,请分别选择 pipewire-jack 和 wireplumber。其余选择默认选项。

安装完毕后,请激活 sddm.service。sddm 是 KDE Plasma 的显示管理器,用于登录帐号与启动桌面环境。

# systemctl enable sddm.service

然后重新启动,即可进入 sddm 的登录界面。请在左上角选择“Plasma (Wayland)”以便以 Wayland 方式启动。然后输入密码即可进入桌面环境。

# reboot

Surface 驱动安装方法

我们安装Linux-surface内核

linux-surface
34 repositories, 218 followers.

尾页

之后请跳转 manjaro 折腾指南 继续折腾