Windless
订阅/Feed
稗田千秋(i@wind.moe)

XPS15 下 Arch Liunx 安装/踩坑合集

稗田千秋
Jun.23 2017 daily

我曾在前文中写过一篇 Arch Linux 安装手札,不过由于装的时候各项硬件都是久经考验的,因此也没出现一些大的问题,但是今日在 XPS15 9560 上却因为硬件等问题导致安装过程问题频出,甚至产生了投奔 OpenSUSE 的想法(,最后在 IRC #archlinux-cn 频道里菊苣们的帮助下成功解决兼容性问题,特此记录下来。

本篇涉及内容:

  • 常规 Arch Linux 安装
  • 安装 Nvidia 驱动
  • 修复引导

本篇可能解决的问题:

  • 引导安装时 reboot,poweroff 等指令阻塞
  • 开启系统时死机
  • 正常使用终端时指令阻塞或间歇性死机
  • dmesg 里可以看到 PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=00e8(Receiver ID) 在内的数行错误

本篇尚未解决的问题:

  • 桌面环境启动后短时会有数次闪屏
  • dmesg 里 psmouse 相关的 Unable to initialize device. (自行Google屏蔽即可,不影响日常使用)

下面就开始进入正题吧,本文假设遇到这些问题的读者已经有相当的 Linux 使用基础。

安装 Arch Linux

XPS的预先设置

首先硬盘模式需要改为 AHCI,详情请看前一篇博客最后部分。

然后划出一个分区,这里我是在那个原装 SSD 里划出来100G未分配空间,因为有原来 Win 10 现成的 EFI 分区,之后只需要修复一下即可。

关闭 Windows 的快速启动(在旧机子上完全不影响 Grub 引导,此处求个安心)

刻录

Windows 下使用 Rufus 刻录镜像,镜像 ISO 可在 TUNA 镜像源 下载,分区方案选择 “用于 UEFI 计算机的 GPT 分区方案”,其他默认即可,点击开始,选择 DD 模式刻录(必须,ISO 模式 UEFI 无法看到 U 盘引导,只能看到原 SSD 里的 EFI 分区,原因不明)

引导

重启电脑,摁下 F12,选择 Change Boot Mode Settings 选项,选择 UEFI ,并且 Secure Boot 要设为 OFF

返回上一界面,看到此时 LEGACY BOOT 下方出现新的 UEFI BOOT 引导选项,选择相应 U 盘,接着选择 Arch Linux archiso x86_64 UEFI USB 开始正式安装。

联网

现在应该看到终端里就一行

root@archiso ~ #

我们当作没有网线来处理,输入

# wifi-menu

选择相应网络并输入密码,接着 Ping 一下任意网站看看是否网络畅通

格式化分区

请 Google cgdisk 来给之前的未分配空间分区,此处按下不表。

# lsblk -f
此处应有结果

此处 /dev/nvme0n1p6 是我要装 Arch 的分区,于是格式化这个分区

# mkfs.ext4 /dev/nvme0n1p6    //不要照着打!

接着挂载分区

# mount /dev/nvme0n1p6 /mnt

建立并挂载 EFI 分区

# mkdir -p /mnt/boot/efi
# mount /dev/nvme0n1p1 /mnt/boot/efi

到这里前提工作基本就完成了,下面接着安装

安装基本包

为了节省时间选择一个优秀的镜像地址是很重要的,选择一个简单的编辑器

# nano /etc/pacman.d/mirrorlist

选择自己速度较快的源,依旧推荐上面的 ustc 和 tuna 镜像源(如下),ctrl+k逐行删除即可

# USTC
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
# TUNA
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch

接着安装基本系统

# pacstrap -i /mnt base base-devel

编辑fstab

# genfstab -U -p /mnt >> /mnt/etc/fstab

使用 cat 检察一下 fstab 是否正常生成,可以将EFI所在行最后一个数字改为0,跳过每次开机的fsck检查。

相关设置

将 /mnt 作为新的根目录

# arch-chroot /mnt

设置时区和编码,打开locale.gen

# nano /etc/locale.gen

将 en_US.UTF-8,zh_CN.UTF-8,zh_TW.UTF-8 前面的#去掉,然后重建编码表并将系统 locale 设为 en_US.UTF-8,若使用中文,会导致 tty 里报错信息全是实心小方块。。。排查错误就会变得很困难

# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf

设置时区

# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

调整系统时间为本地时间,这一步方法众多

# hwclock -localtime  或者 timedatectl set-ntp true

设置主机名,HostName为你想要的主机名,随意

# echo HostName > /etc/hostname

设置 root 用户密码

# passwd

然后创建一个普通用户日常使用,username为想要用户名

# useradd -m -g users -G wheel  username
# passwd username

安装GRUB引导,UEFI 需要grub-efi-x86_64、efibootmgr,os-prober 是为了之后方便的找到 win 10 引导

# pacman -S grub-efi-x86_64 efibootmgr os-prober

然后将GRUB装至EFI分区

# grub-install --efi-directory=/boot/efi --bootloader-id=arch-grub --recheck

复制语言文件

# cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale.en.mo

生成GRUB配置文件

# grub-mkconfig -o /boot/grub/grub.cfg

然后,因为是笔记本需要无线网卡连接,需要安装相关包

# pacman -S iw dialog netctl wpa_supplicant networkmanager

安装桌面环境 GNOME 和 显卡驱动

之前的教程做到这里就可以了,但是本篇从这里开始才是重点,并且顺序不可调换, 我只实验了 GNOME , KDE 在半夜尝试了一下卡在启动界面,原因未知。

先是常规的安装 Xorg 和 GNOME

# pacman -S xorg
# pacman -S gnome
...
# systemctl enable gdm
# systemctl enable NetworkManager

接着安装 Bumblebee

# pacman -S bumblebee bbswitch

将日常使用的用户添加进 bumblebee

# gpasswd -a chiaki bumblebee

开启bumblebeed.service服务

# systemctl enable bumblebeed.service

安装相关包,注意顺序,这里的 nvidia 据说会自动屏蔽 nouveau (一切的罪魁祸首) ,此处没有选择安装 lib32 相关的包,因为我尝试了三次,只要安装 lib32 相关包就会卡在开机的 tty 处,暂时无解。

pacman -S bumblebee nvidia nvidia-utils mesa xf86-video-intel

然后配置 bumblebee

# nano /etc/bumblebee/bumblebee.conf

将文件里的 Driver= 改为 Driver=nvidia 再讲下方的电源管理 PMMethod=auto 改为 PMMethod=bbswitch

最终解决

如果,在执行上述步骤后还是遇到开机不能的问题,那么只能忍痛放弃独立显卡了,此方法是从 openSUSE 的安装文件中找到的灵感,我们直接修改grub启动参数为 nouveau.modeset=0 splash=silent showopts 即可正常使用。

结束安装

退出chroot,卸载分区,然后重启

# exit
# umount /mnt/boot/efi
# umount /mnt
# reboot

这时,重启后就能看见 GRUB 的菜单了,选择 Arch Linux 进入系统,便能看到 GNOME 的登陆界面了,虽然开机还是能看见 “ACPI Error: [_SB.PCI0.XHC.RHUB.HS11] Namespace lookup failure” 数行错误,但是已经不影响使用了。

修复 Win 10 引导

使用 ctrl + alt + f3 进入 tty,使用 root 帐号登陆,执行

# grub-mkconfig -o /boot/grub/grub.cfg

便会自动找到已有的 Win 10 分区并添加至 GRUB 启动菜单。

--END--
文章创建于 2017-06-23 11:33:35,最后更新 2017-06-23 11:33:35
Comment
尝试加载Disqus评论, 失败则会使用基础模式.
    • play_arrow

    About this site

    version:1.02 Alpha
    博客主题: Lime
    联系方式: i@wind.moe
    写作语言: zh_CN & en_US
    博客遵循 CC BY-NC-SA 4.0许可进行创作

    此外,本博客会基于访客的Request Headers记录部分匿名数据用于统计(Logger的源码见Github),包含Referer, User-Agent & IP Address.个人绝不会主动将数据泄露给第三方