Dell XPS 13 9350 安装 Arch Linux
拿到一台 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。