前言
一不小心给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 GiB | 4 GiB | 8 GiB | 16 GiB | 32 GiB | 64 GiB |
---|---|---|---|---|---|---|
推荐的交换文件大小 | 4096 MiB | 5793 MiB | 8192 MiB | 11585 MiB | 16384 MiB | 23170 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内核
尾页
之后请跳转 manjaro 折腾指南 继续折腾