seacover 2016-05-06
拿到一台 Dell XPS 13 9350,在安装 Arch Linux 时总体顺利,但有一些小问题,在此记一下备忘。
制作引导优盘
将下载的 Arch Linux ISO 镜像文件 archlinux-2016.05.01-dual.iso 校验无误后,使用 dd
写到优盘。因我的优盘在系统识别为 /dev/sdb
,故其命令为:
dd if=archlinux-2016.05.01-dual.iso of=/dev/sdb bs=4M status=progress && sync
引导 Arch Linux
在引导之前按 F12
进入 BIOS 设置,关掉 Secure Boot,否则会报找不到 loader.efi 的错误。同时,将 SATA Operation 设置为 AHCI,若不然则无法识别 SSD 磁盘。
连接 WiFi
当引导完毕进入 shell 后,执行以下命令来连接 WiFi:
wifi-menu
对磁盘分区
鉴于 GPT 分区表比 MBR 更有优势,在此选择 UEFI/GPT 的引导及分区方案。使用 parted
可以对磁盘进行分区操作:
parted /dev/nvme0n1
先删掉原分区,然后根据需要创建新的分区。我的分区方案如下,第一个分区用于 UEFI 引导,第二个作为 / 分区,最后一个用于 /home。
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 84934655 83884032 40G Linux filesystem
/dev/nvme0n1p3 84934656 500117503 415182848 198G Linux filesystem
创建完后别忘了将第一分区设置 boot 标志。
mkpart ESP fat32 1MiB 513MiB
set 1 boot on
mkpart primary ext4 513MiB 40.5GiB
mkpart primary ext4 40.5GiB 100%
格式化分区
分别将三个分区格式化需要的文件系统类型:
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
mkfs.btrfs /dev/nvme0n1p3
完成后再挂载:
mount /dev/nvme0n1p2 /mnt
mkdir -p /mnt/{boot,home}
mount /dev/nvme0n1p1 /mnt/boot
mount /dev/nvme0n1p3 /mnt/home
安装基础包
使用 pacstrap
脚本来安装基础系统:
pacstrap -i /mnt base base-devel
生成 fstab
使用 genfstab
来生成 fstab 文件:
genfstab -U /mnt >> /mnt/etc/fstab
chroot
为了进行后续配置,需要 chroot:
arch-chroot /mnt /bin/bash
设置区域和时区
从 /etc/locale.gen
选取需要的区域,去掉开头的注释即可,然后使用 locale-gen
来生成。同时,创建 /etc/locale.conf
文件,并将 LANG
设为跟所选区域一致。
使用 tzselect
来设置时区。
设置 hostname
将 /etc/hostname
的内容设置为喜欢的主机名。
安装引导程序
这里选择使用 systemd-boot
来完成 UEFI 引导:
bootctl install
同时,创建 /boot/loader/entries/arch.conf
引导条目:
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=06d1a377-976d-47db-a907-9bf03bb8519b rootfstype=ext4 rw pcie_aspm=force i915.enable_rc6=7
其中 PARTUUID 可通过 blkid
获得。
另外,/boot/loader/loader.conf
包含内容为:
timeout 3
default arch
设置 root 密码
使用 passwd
来设置 root 密码。
重启
执行 exit
退出 chroot 环境,同时卸载分区并重启系统:
umount -R /mnt
reboot
安装其它包及配置环境
为了避免手动操作,我利用 Ansible 将安装各种常用软件及配置环境的过程自动化,只需执行:
ansible-playbook site.yml
可通过 GitHub 获取 archstrap。