去年黑五入手了XPS 15 9560后一直在用随机自带的Win10系统,分出一部分硬盘安装ArchLinux。上周末抽空把win10和arch全部重新安装了一遍,安装过程其实很简单,也很顺利,与以前不同的是,这次是先安装的arch,后装的win10。
为什么选择Archlinux
Archlinux作为主系统使用已经有段时间了。之前我的主力系统则是Debian。我不怎么用windows,但还都是决定留它在我的笔记本上(除了Mac本)。Linux的发行版众多,我最熟悉的是Debian,CentOS和Arch。几乎所有的虚拟主机提供商都提供默认安装CentOS或/和Debian,之前的买的VPS(用途你懂的)都是用的Debian,工作主要用Mac OSX,Archlinux是作为备机存在。
选择Archlinux的主要原因有两点:
- 系统更新很快,软件几乎全是最新版本的。有人说这样更新很容易失败,特别是更新时间间隔比较大的时候。但根据我的使用经验,几个月甚至半年更新一次都没遇到过什么问题。反倒是Debian更新时,由于循环依赖导致过更新失败。
- Wiki详细且完备,几乎所有能遇到的问题在Wiki上都有介绍和解决方式,这在用Debian时也是不敢想象的。我选Archlinux,也是在给Mac Book Pro上安装一个Linux发行版时,Archlinux的Wiki是最简单明了的。
安装前准备
在安装linux前,有些BIOS选项需要修改下设置,开机按F2进入BIOS,
- Disable Secure Boot. BIOS > Secure Boot > Disabled
- Change RAID to ACHI. BIOS > System Configuration > SATA Operation > RAID to ACHI
第一项设置禁止安全启动,让Linux可以启动。第二项改硬盘模式为ACHI,让Linux能够检测到NVME SSD,据说修改后Win10会因为驱动出现问题,安装驱动后问题解决,不过我没遇到。
其他的准备工作就是下载安装文件,准备一个USB安装盘。现在用光驱的很少了吧。
Win10的安装文件可以在微软官方下载,根据自己需要选择版本和语言选项就好。我是用就MBP上的Arch系统下载的,制作USB启动盘时用了Woeusb。 Arch的镜像文件也是在arch官网的下载页面, 选一个离自己近的站点就好了,制作启动盘就直接dd就好。
硬盘分区及挂载
实际上上周末我重装了两次,第一次是先安装Win10,然后安装Arch。在安装Win10过程中,分区工具默认会有几个几百MiB的恢复分区,ESP分区却只有100M,一开始我没太在意。Win10安装完毕,继续安装Arch时,我决定删掉装好的Win10,用 GParted 重新分区,512M的ESP分区,200G给Arch,剩下的空白给Win10。原来以为win10还会自动生成几个恢复分区,也有点担心Win10的分区工具怎么处理512M的ESP分区。结果Win10识别出了512M的ESP分区,理所应当,但没有继续划分恢复分区。另外,Linux和Win10分区间要留一定的空白,Win10的分区工具会自动处理这一点,我很满意,恩。
关于ESP分区,可以参考这里
插入USB启动盘,开机,启动时按F12(不是F2),选择USB盘启动。启动后会进入命令行模式。分区命令如下
# parted /dev/nvme0n1
进入parted交互模式, 首先确保分区表格式为GPT,然后划分512M的ESP分区,并设置为可启动。划分200G的ext4分区给Arch,剩下的不动给Win10。
(parted) mklabel gpt
(parted) mkpart ESP fat32 1MiB 513MiB
(parted) set 1 boot on
(parted) mkpart primary ext4 513MiB 200.5GiB
格式化ESP和Ext4分区
# mkfs.fat -F32 /dev/nvme0n1p1
# mkfs.ext4 /dev/nvme0n1p2
安装完win10后的硬盘分区图如图
关于ESP分区的挂载点有几种方式,我选择挂载到/boot/efi,这种方式最简单,问题最少。
挂载命令如下
# mount /dev/nvme0n1p2 /mnt
# mkdir -p /mnt/boot/efi
# mount /dev/nvme0n1p1 /mnt/boot/efi
连接到网络
由于xps没有有线接口,联网设置比较麻烦。archiso自带了wpa_supplicant工具。由于我的wifi设置为隐藏ssid,配置选项更多一些, 如下,也可以下载这个gist
update_config=1
ap_scan=2
ctrl_interface=/var/run/wpa_supplicant
network={
mode=0
scan_ssid=1
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
ssid=""
psk=""
}
默认的无线设备名为 wlp2s0
, 可以通过iw dev
确定。无误后运行wpa_supplicant -iwlp2s0-Dwext -c wpa_supplicant.conf -d
,如果没有什么报错,运行wpa_supplicant -iwlp2s0 -Dwext -c wpa_supplicant/wpa_supplicant.conf -B
进入后台运行。如果路由器为dhcp模式,运行dhcpcd就ok了 dhcpcd wlp2s0
。我的路由器为静态模式,后面要用ip
工具,具体请参考相关wiki页面
安装Archlinux
连接网络和挂载硬盘,两个没有先后。完成这两个步骤后就开始安装了。
- 选择安装镜像,163和sohu都不错
echo 'Server = http://mirrors.163.com/$repo/os/$arch\nServer = http://mirrors.sohu.com/$repo/os/$arch > /etc/pacman.d/mirrorlist
- 安装基本系统,
# pacstrap /mnt base
- 生成fstab
# genfstab -U /mnt >> /mnt/etc/fstab
- Change root
# arch-chroot /mnt
- 设置时区
# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
, Region/City可选Asia/Shanghai。然后执行hwclock --systohc
- 设置locale,编辑
/etc/locale.gen
文件,把需要的那行前面的注释#
去掉,我保留zh_CN.UTF-8
和en_US.UTF-8
,然后执行locale-gen
; 新建/etc/locale.conf
文件,echo 'LANG=en_US.UTF-8' > /etc/locale.conf
- 设置hostname和hosts,根据自己喜好设置
/etc/hostname
--------
xhorn.me
/etc/hosts
--------
127.0.0.1 localhost
::1 localhost
127.0.1.1 xhorn.me.localdomain xhorn.me
- 网络设置,复制之前的wpa_supplicant.conf文件即可,后面安装Gnome和NetworkManager,会有GUI设置工具。
- 设置root密码
安装系统引导工具
这一步骤其实是系统安装的一部分,单独列出来是因为它是安装双系统的关键。随着我在MBP上选择Arch代替Debian,系统引导工具也从Grub2换到了Refind。折腾过几次grub引导Mac OSX或Windows后,发现rEFInd是最简单,最无痛的,它能自动发现磁盘上的其他Mac或Win系统。
# pacman -S refind-efi
# refind-install
最重要的是配置文件/boot/refind_linux.conf
中的内核参数,一并贴到这里,以后会有详细介绍
/boot/refind_linux.conf
-------
"Boot with standard options" "root=UUID= rw quiet acpi_rev_override=1 initrd=/boot/initramfs-linux.img initrd=/boot/intel-ucode.img enable_psr=1 disable_power_well=0 nvme_core.default_ps_max_latency_us=130000"
"Boot to single-user mode" "root=UUID= rw quiet acpi_rev_override=1 single"
"Boot with minimal options" "ro root=/dev/"
安装完系统引导器之后就可以Ctrl+D
退出chroot环境,然后reboot
了,但是我遇到的情况是,arch关机失败,只能长按开机键强制关机。
安装windows 10
安装完Arch,如果开机能看到Refind的启动引导界面,并且可以进入到linux命令行登陆界面,恭喜你,Arch基本系统是安装好了。Arch系统后面还有很多工作要做,在那之前,先把Windows10安装好,双系统就搞定了。
根据这里的说明,我在安装前只下载了ssd的驱动, 链接f6flpy-x64.zip,wifi的驱动windows10自带的就能够工作(其实我下载的win10安装盘自带的SSD驱动能工作,只是预防性的照做了)。
插入制作好的Win10USB启动盘,开机按F12(不是F2),选择USB启动盘启动,启动后一个蓝色界面(不是蓝屏_),点安装,选择自定义安装(Custom Install Windows only (advanced)),再后面是选择硬盘界面,如果没有显示可选的硬盘,就需要加载驱动了,那么上面的SSD驱动就有用了,把上面的zip文件解压到另一个U盘,点那个加载驱动(Load Driver)按钮,找到另一个U盘上解压后的文件夹,安装好后就会显示可安装的硬盘了,把SSD剩下的磁盘空间格式化,开始安装,剩下的就是一路Next了。
最后设置
Windows10安装好以后,会在 UEFI NVRAM添加一个启动选项,优先于refind,这要去BIOS里去设置启动优先顺序(Setting>general>boot sequence)。把refind调整到Windows Boot Manager之上。(不要删掉Windows Boot Manager,启动win10之后,win10会自动添加回去,还在refind之上,所以只能调整启动顺序)如上说的,refind会自动发现windows10,其他什么设置也不用管,相比之前grub启动windows,简单不要太多。最后上图~