admin 管理员组

文章数量: 887007

笔记本双显卡 EFI 启动安装 ArchLinux

推荐准备一个 ≥ 4G 的U盘,用U盘安装系统,并且在操作错误的时候能再次通过U盘启动拯救系统。建议手里有两台电脑或一个 Pad 用于浏览本文和官方 WiKi 爬坑。手机…估计看起来很累

  这里以当前系统为 Windows 系统举例安装,国内镜像下载地址:163。打开后选择最新的日期,截止博文日期最新为:2017.02.01/。下载那个 archlinux-20xx.xx.xx-*.iso 就行。然后下载 Win32 Disk Imager,用于写入镜像到U盘,操作非常简单,浏览的时候右下角的文件过滤选择 *.*,然后选择下载好的 ISO 镜像并选择正确的U盘盘符即可写入。

需要注意一点,首先你得清楚你当前系统的启动方式是 MBR 还是 EFI
不过问题不大,从U盘启动的时候,如果是 EFI,ArchLinux 会显示 EFI 字样。

准备工作

  除了U盘的工作需要提前准备外,另一个就是建议准备好 Free Space,提前划分一部分空闲的空间出来,假设现在是 500G 的机械硬盘,3个分区 C、D、E,我们利用 Windows 中的【计算机管理 - 磁盘管理 - 压缩卷】功能来得到一部分空间用于 ArchLinux,例如在磁盘管理中对着 E 盘右键选择“压缩卷”,然后会让你输入需要压缩的空间大小,计算一下,如果你准备给 Linux 50G 的空间,就是 50 × 1024M = 51200M。当然如果内存偏小的用户建议在安装的时候留一部分空间用来做 Swap 分区,这个后面会说到。这里就先得到一部分空间,注意不要格式化!

从U盘启动

  启动后选择第一个选项进入 ArchLinux 安装,稍等一会儿,屏幕上会有一堆绿色的 [ OK ],之后进入到命令行界面,大致如下:

Arch Linux 4.x.x-1-ARCH (tty1)

archiso login: root (automatic login)
root@archiso ~ #_

ArchLinux 分区工作

熟练分区请跳过这里,新手建议仔细阅读

  首先通过命令 fdisk -l 查看当前各个分区设备号,记下 EFI System 的 Device 部分,例如我的显示为 /dev/sda1,然后输入命令 cfdisk【新手必备】,可以看到下方有一个绿色的行,Device 显示为 Free Space,Size Type 显示为 50G(我留下的空间大小是 50G),通过 键移动到这一行,屏幕最下方通过 ← → 选择到 [ New ] 上并回车,提示输入分区大小。前文说过内存小的用户建议在这里预留 Swap 分区,例如我总共剩余空间为 50G,这里可以分配 45G,剩下 5G 创建 Swap 分区。所以这里我输入 45G 并回车。接着下面剩下的 5G 也 New 一个,分区大小直接回车。
  最后记得把 5G 这个小分区的分区类型修改为 Swap,移动到 5G 分区,下方选择 [ Type ] 回车,出现分区类型表,选择 Linux swap 即可。至此 45G 分区类型应该为 Linux filesystem,5G 分区类型为 Linux swap。不要忘记写入分区修改,下方选择 [ Write ] 并输入 yes 写入分区表完成分区工作。
  选择 [ Quit ] 退出分区工具 cfdisk

格式化分区

这部分比较简单
  • 首先 fdisk -l 查看新的分区情况,记下 Linux filesystemLinux swap 两个类型的 Device 部分,例如 /dev/sda6/dev/sda7

  • 通过 mkfs.ext4 /dev/sdaN 格式化 Linux filesystem 分区【此处的 N 替换为你刚刚查看的 Linux filesystem 设备号,例如我的是 6,则这里应该输入命令 mkfs.ext4 /dev/sda6】。如果有提示输入 y 继续则输入后回车。

  • 通过 mkswap /dev/sdaN 格式化 Linux swap 分区,同上 N 替换为你的 Linux swap 设备号,如果没有创建 swap 分区请忽略此步骤。

挂载分区并安装基本系统

请一定记得替换 N 为你的设备号

首先挂载你的 Linux filesystem/mnt

mount /dev/sdaN /mnt

因为使用的 EFI 引导,所以得先做一个准备工作【☆重要】

mkdir -p /mnt/boot/efi

挂载 EFI System 分区到 /mnt/boot/efi。如果忘记了随时 fdisk -l 查看。

mount /dev/sdaN /mnt/boot/efi

激活 Linux swap 分区。(如果没有请忽略

swapon /dev/sdaN

选择镜像源

通过访问 Arch Linux - Pacman China Mirrors 获得最新的可用镜像,个人推荐 163。

替换镜像为国内

cd /etc/pacman.d
mv ./mirrorlist ./mirrorlist.bak
nano ./mirrorlist

(也可以用vim)在弹出的 nano 编辑器中输入国内的地址然后 Ctrl+O 保存,Ctrl+X 退出。
【不要问我为什么我也不想,2月这个镜像的 mirrorlist 里面全是没有打 # 号的,难不成要一个一个添加只保留 China 那个…我认了,自动选择太费时…我多输了几次已经背下了下面的 163 地址…泪目】

编辑 mirrorlist 的时候按下方格式输入

Server = http://mirrors.163/archlinux/$repo/os/$arch

连接网络

如果是有线连接,直接插上线后就可以了 dhcpcd 是默认启用的

如果是无线连接,输入命令 wifi-menu 选择你的 WiFi,输入密码回车稍等就连接啦。

测试一下:ping -c 3 www.baidu 看看通了没,

更新系统时间

直接 timedatectl set-ntp true
时差问题先不用理会。

安装基本系统

先刷新本地数据库

pacman -Syy

接着安装

pacstrap -i /mnt base base-devel

输入后需要按两次回车再输个 y,然后抽根烟喝杯茶冷静冷静…

配置系统

生成 fstab 文件

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

检查一下,可以看到 EFI、ext4、swap 等分区卷标信息

cat /mnt/etc/fstab

切换到已安装的 ArchLinux 系统

arch-chroot /mnt

切换后左边变成了

[root@archiso /]# _

设置时区

等同于北京

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

然后 UTC 时间

hwclock --systohc --utc

本地化

nano /etc/locale.gen

移除下方 4 个前的 # 保存即可

#en_US.UTF-8 UTF-8
#zh_CN.GBK GBK
#zh_CN.UTF-8 UTF-8
#zh_CN.GB2312

执行 locale-gen 生成

官方建议: 将系统 locale 设置为 en_US.UTF-8,系统的 Log 会以英文显示,这样更容易判断问题和处理。

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

主机名

myhostname 为你的主机名称,可以设置电脑名,例如 ASUS-ArchLinux-Notebook

echo myhostname > /etc/hostname

添加对应信息到 /etc/hosts

127.0.0.1	localhost.localdomain	localhost
::1			localhost.localdomain	localhost
127.0.1.1	myhostname.localdomain	myhostname
# 例如 127.0.1.1	ASUS-ArchLinux-Notebook.localdomain	ASUS-ArchLinux-Notebook

无线网络

不安装进系统可是没法联网的【☆重要】

pacman -S iw wpa_supplicant dialog

安装引导工具

不安装你从哪儿启动系统呢?【☆重要】

EFI 和 BIOS Legacy 不一样(过滤我这句话)

第二行 --bootloader-id 的值是可以自定义的,影响你开机选择所显示内容,如果想好看一点可以设置为 --bootloader-id=ArchLinux

pacman -S dosfstools grub efibootmgr os-prober
grub-install --efi-directory=/boot/efi --bootloader-id=grub --recheck
grub-mkconfig -o /boot/grub/grub.cfg

忽略执行 grub-mkconfig 下方的错误,前几行包含 Found XXX.img 就行。

后续部分

引导安装完成后执行

exit
reboot

开机时打开 Boot Menu,可以看到 grubArchLinux 选项,选择 grubArchLinux 进入。
【如果 grub 引导失败,没有执行到让你输入用户名登录的界面,请插上U盘并从U盘启动后重新安装引导和配置】

进入 ArchLinux 系统

假设已经进入到登录界面,输入用户名 root【无密码】回车进入1

为 root 用户设置密码

passwd root

添加普通用户

替换 username 为你的用户名,例如 maxsky

-m 创建用户 home 目录
-g 指定用户组,这里添加为 users
-s 登录新账户的 SHELL 
useradd -m -g users -s /bin/bash username

为新用户设置密码

passwd username

设置新用户 root 权限

nano /etc/sudoers

root ALL=(ALL) 下方添加例如 maxsky ALL=(ALL)

设置 wheel 组权限

去掉 #%wheel ALL=(ALL) ALL 前的 #

安装字体

pacman -S ttf-dejavu wqy-microhei wqy-zenhei

音频

pacman -S alsa-utils

显卡驱动

确定显卡型号,记下左边的 BusID,类似 00:02.0 VGA…
Intel 和 NVIDIA 的话,两个都要记下

lspci | grep VGA

双显卡是非常尴尬的,先装一个 Intel 驱动吧

pacman -S xf86-video-intel

Intel + NVIDIA 参阅文档:NVIDIA Optimus【中文文档长时间未翻译,还是看英文原版】

需要安装这些

pacman -S nvidia nvidia-libgl xorg-xrandr

完成后生成一份 N 卡配置,位于 /etc/X11/xorg.conf

nvidia-xconfig

修改这个文件

nano /etc/X11/xorg.conf

多余部分删掉,参照下方内容配置 N 卡,BusID 那里 N 卡一般是 BusID "PCI:1:0:0"
【注意格式,00:02.0 这种形式需要转换成 0:2:0

Section "Module"
    Load "modesetting"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:NVIDIA 的 BusID"
    Option "AllowEmptyInitialConfiguration"
EndSection

完成后保存并进入 /etc/X11/xorg.conf.d 目录

cd /etc/X11/xorg.conf.d

新建文件并编辑

nano 20-intel.conf

内容如下,Intel 的 BusID 一般是 BusID "PCI:0:2:0"

Section "Device"
    Identifier "intel"
    Driver "modesetting"
    BusID "PCI:Intel 的 BusID"
EndSection

完成后保存进入下一节

安装桌面环境

自选桌面环境,这里以 plasma 举例,第二个是触摸板支持

pacman -S plasma kdebase kde-l10n-zh_cn
pacman -S xf86-input-synaptics

需要注意一点,所选的桌面环境不同,启动显卡的配置也不同
建议仔细阅读:Display Managers

下表如无特殊备注,均在第二列的添加位置内添加如下内容

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
显示管理器配置添加位置备注
LightDM/etc/lightdm/display_setup.sh记得 chmod 添加 x 权限。
/etc/lightdm/lightdm.conf[Seat:*]里添加 display-setup-script=/etc/lightdm/display_setup.sh
SDDM/usr/share/sddm/scripts/Xsetup
GDM/usr/share/gdm/greeter/autostart/optimus.desktop创建此文件,文件内容参考2
/etc/xdg/autostart/optimus.desktop创建此文件,文件内容同上
KDM/usr/share/config/kdm/Xsetup

添加后重启

进入桌面系统

重启后还是回到了命令行登录界面,保险起见,我们没有开机自启桌面
因为如果显卡没有配置正确,会卡在黑屏上,又得插上U盘慢慢折腾,所以小心为上我们一步步来

如果前面的配置没有问题,此时输入下面的命令稍后就会出现登录 UI 了
【如果安装的 gnome 这里应该的 sddm 应替换为 gdm,以此类推】

systemctl start sddm

桌面 WiFi 配置

选择用户(这里建议用新建的普通用户)输入密码进入系统,先把桌面系统的 WiFi 管理器弄上

sudo systemctl enable NetworkManager

一般来说是有的,如果没有这货先用 wifi-menu 连接 WiFi 后下载
【有个坑,有时候是 networkmanager,有时候又是 NetworkManager。自己尝试】

sudo pacman -S networkmanager

尾声

把桌面管理器设置自启

如果前一步能正常进入桌面UI,这里就可以设置桌面管理器的自启了。
注意把 sddm 替换成你所安装的桌面管理器

sudo systemctl enable sddm

如果 Windows 启动项没了看这里

EFI 引导一般不会丢,开机在 BIOS 通过笔记本的 F12 等键启动 Boot Menu,会发现有一个 Windows Boot Manager,这货就是用来启动 Windows 的。

保险起见还可以在进入 ArchLinux 桌面系统后,使用下面的命令重新生成 grub 配置,这样在开机启动 ArchLinux 时就有第三个选项了。

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

没什么内容了

此文针对 I + N 卡描述,A 卡需要自己爬官网 WiKi: ArchLinux - ATI。
WiKi 上基本都有中文的翻译,但是注意日期,部分页面过于陈旧请尽量阅读英文原文

[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer

  1. 建议在没有进入桌面系统前都使用 root 用户登录。 ↩︎

  2. 文件内容 ↩︎

本文标签: 显卡 笔记本 ArchLinux EFI