Loading... <div class="tip share">请注意,本文编写于 1249 天前,最后修改于 612 天前,其中某些信息可能已经过时。</div> ## 前言 之前的一台老电脑装着 Windows 和 [Manjaro](https://manjaro.org/) 的双系统,但是 Windows 也一直没在使用,就想着把它干脆把它格了装成 Linux 单系统。由于习惯了 pacman 和 aur,就想着重装成 [Manjaro](https://manjaro.org/) 或者 [Arch](https://archlinux.org/) 了,毕竟之前装过 [Manjaro](https://manjaro.org/) 了,是时候体验下装 [Arch](https://archlinux.org) 了(瞎折腾~)。 Arch Linux 的[官方 Wiki](https://wiki.archlinux.org/) 一直都是业界楷模,所以照着维基安装问题不大。本文对自己安装过程((LVM + XFS) / Btrfs + KDE)进行记录整合,方便自己使用,整个内容在 Wiki 基本都能找到说明,建议想要入坑的直接查看 [Wiki](https://wiki.archlinux.org/)。 ## 准备工作 1. 下载[镜像](https://archlinux.org/download/); 2. 制作 U 盘启动盘,可采用 [Rufus](https://rufus.ie/en_US/) 或者 [Ventoy](https://www.ventoy.net/en/index.html) ## 系统安装 ### 启动到 Live 环境 1. 进入 BIOS 设置 U 盘优先启动,启动后进入 archiso shell 环境(默认为 zsh); 2. 验证启动模式是否为 UEFI 模式: ```bash # 能够正常显示该目录,则为 uefi 模式 ls /sys/firmware/efi/efivars ``` 本文采用 UEFI 模式启动。 ### 连接网络 由于安装过程中需要安装一些必要的软件,所以需要连接到网络,我采用的是无线网络(iwd),有线网络的话正常插上线(DHCP)就可使用了: ```bash # 1. 查看网卡设备 ip link show # 2. 输入 iwctl 进入 iwd 模式下 [root@archiso~] iwctl [iwd#] # 3. 扫描和获取附近网络 [iwd#] station <device> scan [iwd#] station <device> get-networks # 例如: [iwd#] station wlan0 scan [iwd#] station wlan0 get-networks Available networks -------------------------------------------------------------------------------- Network name Security Signal -------------------------------------------------------------------------------- > 12333_5461 psk **** CU_cH82 psk **** CMCC-cd3x psk **** Tenda_304 psk **** JC2902544410000B07050225 psk **** JSCN_SZ_4296B9 psk **** # 4. 连接 WiFi,连接是会提示输入密码,按照实际情况输入即可 [iwd#] station <device> connect <network name> # 5. 连接后,如无报错,则连接成功,输入 exit 退出 # 6. ping baidu.com 确认网络连接正常 ``` ### 同步系统时间 ```bash # 设置 ntp 同步 timedatectl set-ntp true # 查看同步状态 timedatectl status ``` ### 硬盘分区与格式化 硬盘分区我采用的是 GPT 分区表,硬盘分区工具可使用 fdisk 或者 cfdisk。 #### LVM + XFS 方案 采用 [LVM](https://wiki.archlinux.org/title/LVM) 方案来方便进行空间的动态调整,文件系统采用的是 [XFS](https://wiki.archlinux.org/title/XFS) 格式(不支持压缩空间),所以刚开始配置的时候可以给各分区小点的空间。 1. 假设存在两块硬盘 `/dev/sda` 及 `/dev/sdb`,因为我使用的是 UEFI 模式启动,需要创建相应的 EFI 系统分区(如 `/dev/sda1`),不能使用 LVM,该分区大小可以设置在 500M 左右,分区类型为 EFI System; 2. 将 `/dev/sda` 及 `/dev/sdb` 剩余空间分别创建分区 `/dev/sda2` 、`/dev/sdb1`,分区类型为 Linux LVM,用于 LVM; 3. 配置 LVM(创建 PV --> 创建 VG --> 配置 LV): 1. 创建物理卷: ```bash # 查看可以用做物理卷的设备 lvmdiskscan # 创建物理卷 pvcreate /dev/sda2 pvcreate /dev/sdb1 # 查看物理卷 pvdisplay ``` 2. 创建卷组: ```bash # 创建卷组命令 vgcreate <vg-name> <device> # 例如 vgcreate arch-vg /dev/sda2 /dev/sdb1 # 查看卷组 vgdisplay ``` 3. 创建逻辑卷: ```bash # 逻辑卷创建命令 lvcreate -L <volume size> <vg name> -n <lv name> # 例如:先创建 root/home/swap 三个 LV,后续有需要可以再加 lvcreate -L 50G arch-vg -n root lvcreate -L 2G arch-vg -n swap lvcreate -L 100G arch-vg -n home # 查看逻辑卷 lvdisplay ``` 4. 对创建好的逻辑卷进行格式化: ```bash # 格式化 EFI System 分区,采用格式为 fat32 mkfs.fat -F32 /dev/sda1 # 格式化 root/home 分区,采用格式为 xfs mkfs.xfs /dev/mapper/arch--vg-root mkfs.xfs /dev/mapper/arch--vg-home # 格式化 swap 分区 mkswap /dev/mapper/arch--vg-swap ``` 5. 挂载分区: ```bash # 将 root 分区挂载到 /mnt 下 mount /dev/mapper/arch--vg-root /mnt # 将 efi 分区挂载到 /mnt/boot 下 mkdir /mnt/boot mount /dev/sda1 /mnt/boot # 将 home 分区挂载到 /mnt/home 下 mkdir /mnt/home mount /dev/mapper/arch--vg-home /mnt/home # 启用 swap 分区 swapon /dev/mapper/arch--vg-swap ``` #### Btrfs 方案 [Btrfs](https://wiki.archlinux.org/title/Btrfs#File_system_on_a_single_device) 支持 LVM 功能,子卷方便进行快照,不清楚有没有啥毛病,尝鲜用。 以下以一块硬盘做记录 1. 使用 fdisk 或者 cfdisk 进行分区,只分两个区(如需要可以分一个 swap 出来,我这里使用 swapfile),一个 EFI System 分区 `/dev/sda1`,大小 500M 左右,剩余空间均给 `/dev/sda2`; 2. 格式化: ```bash # EFI System 分区 mkfs.fat -F32 /dev/sda1 # btrfs 文件系统 mkfs.btrfs -L arch /dev/sda2 # -L 为指定 label ``` 3. 创建子卷,类似于分区,先不对空间进行限制: ```bash # 1. 挂载 /dev/sda2 到 /mnt mount /dev/sda2 /mnt # 2. 创建子卷,这里先只创建 root 及 home,@ 仅作为标识 btrfs su cr /mnt/@ btrfs su cr /mnt/@home btrfs su cr /mnt/@swap # 3. 取消挂载 umount /mnt # 4. 挂载子卷及 boot mount -o subvol=@ /dev/sda2 /mnt mkdir /mnt/{boot,home,swap} mount -o subvol=@home /dev/sda2 /mnt/home mount -o subvol=@swap /dev/sda2 /mnt/swap mount /dev/sda1 /mnt/boot # 5. swapfile 设置 btrfs filesystem mkswapfile --size 4g /mnt/swap/swapfile swapon /mnt/swap/swapfile ``` ### 安装软件包 由于镜像源在连接网络后会通过 [Reflector](https://wiki.archlinux.org/title/Reflector) 自动帮忙排序,我们可以不需要手动挑选镜像源。 ``````bash pacstrap /mnt base base-devel linux linux-firmware vim iwd lvm2 # - base / base-devel 一些基础软件包 # - linux linux 内核软件包 # - linux-firmware 固件软件包,虚拟机或者容器可不安装 # - vim 文本编辑器 # - iwd 无线联网 # - lvm2 lvm 软件 `````` ### 生成 [fstab](https://wiki.archlinux.org/title/Fstab) 文件 ```bash # 生成 fstab 文件,用于分区挂载 genfstab -U /mnt >> /mnt/etc/fstab # 生成后,检查 /mnt/etc/fstab 文件是否正确 # 如果按照上述 btrfs 子卷方式使用了 swapfile,可以手动加上 swapfile 的挂载 /swap/swapfile none swap defaults 0 0 ``` ## 系统配置 ### [Chroot](https://wiki.archlinux.org/title/Chroot) ```bash # 进入到安装好的新系统中,根目录(/)挂载在 /mnt 下 arch-chroot /mnt ``` ### 时区设置 ```bash ln -sf /usr/share/zoneinfo/Region/City /etc/localtime # 如 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 通过 [hwclock](https://man.archlinux.org/man/hwclock.8) 生成 /etc/adjtime hwclock --systohc ``` ### 本地化设置 ```bash # 1. 编辑 /etc/locale.gen 文件,按需取消地区前的注释,如 en_US UTF-8 和 zh_CN UTF-8 # 2. 运行 locale-gen 生成 locale 文件 locale-gen # 3. 创建 /etc/locale.conf 文件,设置 LANG 变量 LANG=en_US.UTF-8 ``` ### 网络配置 1. 编辑文件 `/etc/hostname` 配置主机名; 2. 编辑文件 `/etc/hosts` 配置 localhost 的域名解析 ```bash 127.0.0.1 localhost ::1 localhost 127.0.1.1 myhostname.localdomain myhostname # 主机名.本地域名 主机名 ``` 3. (optional)使用 iwd 连接网络,配置 iwd 配置文件 `/etc/iwd/main.conf` ,允许 DHCP ```bash [General] EnableNetworkConfiguration=true ``` 4. (optional)使用 systemd-networkd 管理网络,参考配置如下: ```conf # 1. 新建一个 network 配置,如 `/etc/systemd/network/eth0.network` # 两种选其一 # 配置 DHCP [Match] Name=eth0 [Network] DHCP=ipv4 # 配置静态 IP [Match] Name=eth0 [Network] Address=10.10.10.2/24 Gateway=10.10.10.1 DNS=10.188.8.8 # 2. 允许自启 systemctl enable systemd-networkd ``` 5. (optional)如果后续需要使用图形界面的话,可以使用 [NetworkManager](https://wiki.archlinux.org/title/NetworkManager) 管理网络,后续操作可在 UI 下配置,更简单。 **注意**: step 3/4/5 可选择性的搭配使用,比如 `systemd-networkd + iwd` ### 配置 Initramfs 1. 如果分区时采用了 LVM,需要做如下修改: ```bash # 1. 编辑 /etc/mkinitcpio.conf 文件,找到 HOOKS,在 block 和 filesystem 之间插入 lvm2: HOOKS=(base udev autodetect modconf block lvm2 filesystems keyboard fsck) # 2. 执行下面命令,创建新的 initramfs mkinitcpio -P ``` 2. 如果采用的是 Btrfs 文件系统,需要做如下修改: ```bash # 1. 编辑 /etc/mkinitcpio.conf 文件,修改如下内容 MODULES=(btrfs) # 2. 执行命令 mkinitcpio -P ``` ### 设置用户 ```bash # 为 root 用户添加密码 passwd # 增加非 root 用户 useradd -m <user> # 为非 root 用户设置密码 passwd <user> # 修改 /etc/sudoers 添加权限 sudoedit /etc/sudoers ``` ### 安装引导程序 1. 安装引导程序 ```bash pacman -S grub efibootmgr ``` 2. 安装引导到 EFI 分区下 ```bash grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB ``` 3. 生成 grub 配置 ```bash grub-mkconfig -o /boot/grub/grub.cfg ``` 配置完成后,如果不需要图形界面,可按照下面步骤重启: 1. 使用 `exit` 退出 chroot; 2. 使用 `umount -R /mnt` 取消挂载; 3. 使用 `reboot` 命令重启,记得重启前拔除 U 盘。 这样,基本上一个没有图形界面的系统就安装配置完成了。需要图形界面的话可以参考下面 「配置图形界面」 ## 配置图形界面 ```bash # 1. 安装显示服务 pacman -S xorg # 2. 安装显卡驱动 pacman -S xf86-video-intel # intel pacman -S nvidia # 如果安装 nvidia 闭源驱动,可能需要另外的配置,详见 Wiki,否则可能无法进入桌面 # 3. 安装桌面环境 pacman -S plasma-meta kde-applications # 4. 安装显示管理器 pacman -S sddm sddm-kcm systemctl enable sddm # 允许 sddm 服务自启 ``` ## 参考资料 - [Installation guide - ArchWiki](https://wiki.archlinux.org/title/Installation_guide) - [Archlinux 最新安装教程](https://zhuanlan.zhihu.com/p/157260502) - [Arch Linux with BTRFS Installation](https://www.nishantnadkarni.tech/posts/arch_installation/) 最后修改:2023 年 04 月 02 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏
3 条评论
会不会被老师捉起来打
会不会被老师捉起来打
一直在用centos,试试这个