⚡️注意:
保证网络连接正常
检查系统镜像选择国内速度快的,推荐清华的镜像
开启 archlinuxcn 与 multilib,清华源为例
添加 multilib
编辑 /etc/pacman.conf
,取消下面内容的注释:
[multilib]
Include=/etc/pacman.d/mirrorlist
添加 archlinuxcn
在 /etc/pacman.conf 文件末尾添加以下两行:
[archlinuxcn]
Server=https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
之后安装 archlinuxcn-keyring
包导入 GPG key。
# pacman -Syy archlinuxcn-keyring
推荐先安装 vim
文档编辑器(个人喜好?),之后编辑中会用到
# pacman -S vim
拥有一个普通用户,因为 KDE 桌面默认不会显示 root(超级管理员) 登录用户选项
由于我使用的是 NVIDIA 的独显与 Inter 的集显双显卡笔记本,而 NVIDIA 的显卡特别难装,优先安装 NVIDIA 的显卡驱动。关于双显卡切换的问题之后再补充。
**提示:**最好是使用ArchLinux的 pacman
来安装驱动,而不是直接到英伟达官网去下载驱动,因为这样会在更新系统时同时更新。
推荐使用官方源提供的 NVIDIA 的闭源显卡驱动,而不是下载官方的驱动程序安装,很野蛮粗暴,也会有很多问题。官方驱动下载,国内驱动下载。
如果你不知道显卡情况,可运行以下命令获知:
# lspci -k | grep -A 2 -E "(VGA|3D)"
要充分发挥显卡性能,请按下表安装驱动程序。推荐先使用开源驱动,这些驱动出问题的可能性较小。
nvidia {-173xx,-96xx}-utils
包会跟 libgl
冲突,所以安装的时候,如果 pacman
询问您移除 libgl
并且因为依赖无法移除,您可以使用 # pacman -Rdd libgl
移除 libgl
。厂商 | 类型 | 驱动 | OpenGL | OpenGL (Multilib) |
---|---|---|---|---|
AMD / ATI | 开源 | xf86-video-amdgpu | mesa | lib32-mesa |
AMD / ATI | 开源 | xf86-video-ati | mesa | lib32-mesa |
AMD / ATI | 非开源 | catalystAUR | catalyst-libglAUR | lib32-catalyst-libglAUR |
Intel | 开源 | xf86-video-intel | mesa | lib32-mesa |
NVIDIA | 开源 | xf86-video-nouveau | mesa | lib32-mesa |
NVIDIA | 非开源 | nvidia | nvidia-utils | lib32-nvidia-utils |
NVIDIA | 非开源 | nvidia-340xx | nvidia-340xx-utils | lib32-nvidia-340xx-utils |
NVIDIA | 非开源 | nvidia-304xx[broken link: package not found] | nvidia-304xx-utils[broken link: package not found] | lib32-nvidia-304xx-utils[broken link: package not found] |
我的是 nvidia
驱动包,安装这个包
# pacman -S nvidia
安装 OpenGL 的包
# pacman -S nvidia-utils
检查有没有安装 nvidia-settings
,没有的话安装它。它是一个 NVIDIA 的管理程序。
⚡️注意:虽然安装了,但是并没有什么用,之后没用到,所以,之所以官方没有集成到 nvidia 包可能就是它没啥用吧。
# pacman -S nvidia-settings
注意:
/usr/share/X11/xorg.conf.d
的默认配置文件。通常情况下,用户无需进行额外的配置与修改即可正常使用。/etc/X11/xorg.conf
或/etc/xorg.conf
和位于 /etc/X11/xorg.conf.d/
的配置文件配置。nvidia-xconfig
,ATI 提供了 aticonfig
。/etc/X11/xorg.conf.d/
目录保存主机特有设置,用户可以创建自己的配置文件,需要以 XX-
开头(XX
是数字)并以 .conf
结尾(例如 10 在 20 之前读取) .X
服务器启动是会解析这些文件,将其视为 xorg.conf
的一部分进行处理。如果配置之间有冲突,将会使用最后被处理的文件。所以通用的设置应该放到前面。最后会解析 xorg.conf
文件。**注意:**关于 xorg.conf
文件的配置,我们安装完 xorg-server
之后再配置!!!
以上已经安装好了 NVIDIA 的闭源显卡程序,接着,我们完成桌面的安装。
安装 xorg-server 服务
# pacman -S xorg-server
注意:
若之后桌面安装完成重启,没有出现桌面,可以尝试安装完整的 xorg 包
# pacman -S xorg
由于使用命令行启动的话,需要安装 xinit 去管理 X 桌面的启动,但是,使用登录管理器理论上来说,可以不用安装,但是推荐安装(没试过,反正我装 最后尝试了,不用装?,参考文档)
# pacman -S xorg-xinit
使用 xrandr 去管理显示的分辨率等问题,也用来配置多显卡与多显示器。具体设置参考文档
# pacman -S xorg-xrandr
官方提供了好多的登录管理器,我们选用 SDDM 与 KDE 的 Plasma5 搭建桌面。SDDM 替代了 KDE4 的 KDM。
安装 SDDM
# pacman -S sddm
加载显示管理器
通过启动登录管理器(或称显示管理器),即可进行图形界面登录。以 SDDM 为例,配置开机启动:
# systemctl enable sddm.service
许多显示管理器都查询配置文件 /etc/xprofile
, ~/.xprofile
和 /etc/X11/xinit/xinitrc.d/
。所以,我们之后配置中文输入法要在桌面上正常使用,需要将配置写在 ~/.xprofile
中,以便在启动桌面之前配置,否则的话,如果写在 ~/.bashrc
或者 ~/.zshrc
会在桌面中无法输入中文。
**注意:**其它显示管理器,请参考官方配置文档
官方提供了许多的桌面环境,我们推荐选用 KDE Plasma 桌面环境。具体的桌面环境列表请参考文档。
安装 plasma-meta(完整安装) 元软件包或者 plasma(只包含桌面应用) 组。若要最小化安装 Plasma,可以安装 plasma-desktop 包。KDE应用的大部分配置被储存在 ~/.config
。
安装最基本的桌面,之后需要的配置,等桌面安装完成之后,按需安装。
安装 plasma-desktop 包
# pacman -S plasma-desktop
检查 /etc/X11/xorg.conf
文件是否存在,不管存在与否,执行下列语句:
# nvidia-xconfig
当 Xorg 的配置文件 xorg.conf
不存在时,这条命令会自动检测您的硬件,并创建文件 /etc/X11/xorg.conf
。假如配置文件已经存在的话,它会进行一些编辑,以方便在 Xorg 运行时能成功载入英伟达的专有驱动。
注意: 再一次检查您的配置文件/etc/X11/xorg.conf
中的默认色深,水平同步,垂直刷新和分辨率是否正确,不正确的配置可能会损害您的硬件,请仔细进行检查。
设置 NVIDIA
闭源 NVIDIA 驱动并不像 nouveau 驱动一样支持动态切换 (意味着它只能使用 NVIDIA 设备). 它还有一些已被 NVIDIA 承认但仍未修复的显著问题,然而,它使用独立显卡并 (自2013年10月) 在性能上相比 nouveau 驱动有显著优势。这项配置同时也是为使用双显卡切换做准备。
获取 NVIDIA 的 PCI 地址:
# lspci | grep -E "VGA|3D"
PCI 地址是提到 NVIDIA 的输出行的前7个字符,看起来像 01:00.0
. 在 xorg.conf 中,需转换为 #:#:#
格式;例如 01:00.0
应该写成 1:0:0
.
然后配置之前创建的 /etc/X11/xorg.conf
文件:
添加如下几行:
Section "Module"
Load "modesetting"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:#:#:#" # 添加
Option "AllowEmptyInitialConfiguration" # 添加
EndSection
提示: 假如您已经预先安装了开源驱动nouveau,请确定已经从/etc/mkinitcpio.conf
里面去除"nouveau"。您也可以通过使用这些脚本来在开源和闭源驱动之间进行切换。
配置登录管理器
如果使用 startx
启动,即需要安装 xorg-xinit
,在 ~/.xinitrc
中添加以下几行;若使用 SDDM 启动,无须安装 Xorg-xinit
,在 /usr/share/sddm/scripts/Xsetup
中添加以下几行。具体请参考文档。
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
完成以上过程之后,重启你的电脑,然后等待桌面的出现。如果不出意外,恭喜你,你会看到你的电脑终于出现桌面了。?(当然,这是没有意外?)
关闭启动时的 logo
添加"NoLogo"
选项到Device
节里:
Option "NoLogo" "1"
启用三重缓存(不推荐,因为我不玩游戏?)
您可以在Device
节下面添加"TripleBuffer"
选项来启用三重缓存:
Option "TripleBuffer" "1"
假如您的显卡有充足的显存(128MB或者更多)的话,建议您启用该选项。这个只有在垂直同步(nvidia-settings中的一个特性)启用的时候才会生效。
注意: 此选项可能会引致全屏花屏和降低性能。
启用省电功能
在Monitor
节下添加:
Option "DPMS" "1"
启用亮度控制
在Device
节下添加:
BoardName "Quadro NVS 3100M"
Option "RegistryDwords" "EnableBrightnessControl=1"
若不能工作,请安装 nvidia-bl
让GPU根据温度来设置自己的性能水平
Option "RegistryDwords" "PerfLevelSrc=0x3333"
禁用vblank中断(适用于笔记本)
当运行中断检测的实用工具powertop
, When running the interrupt detection utility powertop
,它可以观察到英伟达驱动将会为每个vblank产生一个中断。在Device
节下放置以下选项来禁用,这将减少约一或两个每秒的中断。
Option "OnDemandVBlankInterrupts" "1"
通过XRandR启用屏幕旋转(不需要)
把下面的行添加到Device
节里面:
Option "RandRRotation" "True"
重新启动Xorg后可以用旋转屏幕:
$ xrandr -o left
可以用下面的方法恢复默认:
$ xrandr -o normal
注意: 可能您不需要编辑xorg.conf
来启用屏幕旋转,因为它已经被默认被启用来。最好是使用各自桌面环境的工具,例如KDE的系统设置工具。
在nvidia和nouveau之间切换
参考文档
当你发现有了桌面之后,你很兴奋,但是怎么觉得这个分辨率有点怪呢。你想,进去之后再设置呗,怕啥,然后,进去之后,很悲催的发现,TMD 这就是最大分辨率,再找不到其他分辨率,那个调分辨率的按钮还是灰色的????WTF??????恭喜你,你还要继续…?
使用 xrandr 修改添加
注意: 通过 xrandr 作出的改变只在本次会话中有效
首先,运行gtf
或者cvt
,查询某分辨率的有效扫描频率。
$ cvt 1280 1024
# 1280x1024 59.89 Hz (CVT 1.31M4) hsync: 63.67 kHz; pclk: 109.00 MHz
Modeline "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
然后通过–newmode参数新建一种xrandr模式,输入上面所得到的查询结果,其中Modeline关键词自然需要被省略。
xrandr --newmode "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
新建模式后,我们需要把这模式添加到当前的输出设备(假定为VGA1)上。由于一些参数已经事先设置,只需输入模式名称即可,即1280x1024_60.00。
xrandr --addmode VGA1 1280x1024_60.00
注意,以上设置同样地只能在当前会话暂时生效。
如果您对所要添加的某分辨率感到不放心,您可以追加新命令“sleep 5”以及一条切换到已有有效分辨率的命令,以保证不会被困在实际无效的分辨率,示例:
xrandr --output VGA1 --mode 1280x1024_60.00 && sleep 5 && xrandr --newmode "1024x768-safe" 65.00 1024 1048 1184 1344 768 771 777 806 -HSync -VSync && xrandr --addmode VGA1 1024x768-safe && xrandr --output VGA1 --mode 1024x768-safe
将新的分辨率永久保存到文件中,永久生效
经过上面的过程检验,如果陈国的话,将xrandr定制保存到文件。使xrandr定制永久生效的方案有:
xorg.conf
(推荐,请查看后面文档修改).xprofile
使用后面两个很大程度在启动桌面的时候设置会失败。
当然,除了在 xorg.conf
文件配置,你还可以创建 /etc/X11/xorg.conf.d/10-monitor.conf
文件来配置(个人使用):
Section "Monitor"
Identifier "Monitor1"
Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
Option "PreferredMode" "1280x1024_60.00"
EndSection
接着将 /etc/X11/xorg.conf
文件中使用 Screen
选项的 Monitor0
的配置改为 Monitor1
,重启即可。
可以参考我的配置文档1
更多显示器配置问题,请参考文档 xorg 与 xrandr
注意: 新的 Xorg 版本会自动配置显示器,无需额外配置。
多显示器的配置请参考文档NVIDIA 与 Xorg下面的多个显示器与多于一个显卡的配置示例。
安装 Intel 显卡驱动(可选)
由于 Intel 显卡在安装的时候驱动默认就安上了,基本就是开箱即用,所以可以不用管,不放心的话可以安装开源驱动包。其它配置,参考文档
# pacman -S xf86-video-intel mesa
配置双显卡
创建 /etc/X11/xorg.conf.d/20-intel.conf
文件来配置(个人使用):
Section "Device"
Identifier "intel"
Driver "modesetting" # 这里也可以是 "intel"
BusID "PCI:0:2:0" # PCI 查看 lspci | grep -E "VGA|3D"
Option "AccelMethod" "sna"
EndSection
# 查看 PCI
# lspci | grep -E "VGA|3D"
# 具体信息
# lspci -k | grep -A 2 -E "(VGA|3D)"
切换
编辑文件 /etc/X11/xorg.conf.d/20-intel.conf
中的 Screen
选项中的 Device
配置改为 intel
即可。然后重启,就会使用 intel 显卡。
恭喜你,从此刻开始,你可以手动修改显卡了?。当然,你也可以写一个脚本,执行命令,然后配置,没问题。接下来看,我们配置简单的切换方式。
注意: 先切换到使用 Inter 显卡
安装护进程以及程序的主要安装包。
# pacman -S bumblebee
安装开源的 OpenGL 标准实现。
# pacman -S mesa
对于32位程序 (必须启用 Multilib )在64位机器上的支持,安装(可选⚡️):
lib32-virtualgl
要使用 Bumblebee,请确保添加你的用户到 bumblebee
组:
# gpasswd -a user bumblebee
启用服务,然后重启系统
# systemctl enable bumblebeed.service
注意,服务名 bumblebeed.service
安装 mesa-demos并使用 glxgears
测试 Bumblebee 是否工作:
⚡️注意: mesa-demos 包可以不用先安装,先按下列方式测试,如果提示没有这个测试包,再进行安装,一般来说, mesa 中带了测试的包,不用安装。
使用如下命令测试:
# optirun glxgears -info
如果失败,尝试下列命令:
64位系统:
# optirun glxspheres64
32位系统:
# optirun glxspheres32
如果一个内有动画的窗口出现,那么 Optimus 和 Bumblebee 正在工作。注意: 如果 glxgears
失败但 glxspheresXX
有效,替换所有 “glxgears
” 为 “glxspheresXX
”。
**⚡️注意:**你可以按需配置 Bumblebee 的行为,可以通过 /etc/bumblebee/bumblebee.conf
来调节诸如优化,电源管理,以及其他任务。
配置 bumblebee,指定驱动
将 Driver=
修改成了 Driver=nvidia
,因为默认的不写,是自己自动选择使用 nvidia
还是 nouvean
!!!不过后面的配置在前面驱动为空时,默认选择 nvidia
。
Driver=nvidia
使用方法:
一般用法
$ optirun [options] application [application-parameters]
这个命令使用时候,就会使用 NVIDIA 的显卡来执行 application。可以使用另一个终端来显示显卡的使用情况,以下命令的 3 表示每 3 秒刷新一次,使用 Contrl+C
退出监控。当使用 Intel 的显卡执行的时候,不会显示在这个 nvidia-smi 监控中。
watch -n 3 nvidia-smi
用 Optimus 启动 Windows 程序:
$ optirun wine application.exe
用 Optimus 打开 NVIDIA 设置面板:
$ optirun -b none nvidia-settings -c :8
用 Optimus 启动 glxspheres64 测试程序:
$ optirun glxspheres64
速度优化有两种方式:使用 VirtualGL 作为桥接或者 Primusrun 作为桥接。默认为 VirtualGL,我们选择 Primusrun 尝试,然后失败。。。。。只能选了默认的,看了配置文件 /etc/bumblebee/bumblebee.conf
,里面设置的方式是 auto
。所以我就没动这个加速的。具体配置参考文档
电源管理的目的是为了自动关闭 bumblebee 不再使用的 NVIDIA 显卡。 如果已安装 bbswitch,Bumblebee 守护进程启动时会自动检测到,不需要特别设置。
**注意:**没有安装电源管理之前,当你使用 nvidia-smi
时会显示信息,这是因为 bumblebee 默认是一直给 NVIDIA 显卡供电的,同时,lspci -k | grep -A 2 -E "(VGA|3D)"
执行之后显示的结果是 Kernel driver in use: nvidia
,这就造成浪费。所以安装电源管理。安装电源管理之后重启,不启用 NVIDIA 显卡的情况下,运行 nvidia-smi
会报错,且 lspci -k | grep -A 2 -E "(VGA|3D)
显示的是可用模块,即会在不使用的时候关闭电源,节省电量。
**⚡️注意:**如果上次关机时关闭了NVIDIA显卡的电源,NVIDIA显卡可能会在下一次启动时初始化异常。所以,我们需要关机时启用NVIDIA显卡,办法是在 /etc/bumblebee/bumblebee.conf
里设置 TurnCardOffAtExit=false
, 然而这么做会导致每次停止bumblebee守护进程时启用NVIDIA显卡,就算是手动停止也是一样。其它方式参考文档
安装
# pacman -S bbswitch
配置电源管理
编辑 /etc/bumblebee/bumblebee.conf
文件指定电源管理,默认使用的 auto
,自己选择。
[driver-nvidia]
PMMethod=bbswitch
重启之后就可以
使用:
可以按原来使用 Bumblebee 的方式使用
$ optirun [options] application [application-parameters]
可以不依赖Bumblebee来使用CUDA,只需确保你的NVIDIA显卡是开启的:
# 运行:
# tee /proc/acpi/bbswitch <<< ON
# 停止
# rmmod nvidia_uvm
# rmmod nvidia
# tee /proc/acpi/bbswitch <<< OFF
xorg.conf:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 418.56
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
EndSection
Section "Module"
Load "modesetting"
Load "glx"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Screen"
Identifier "Screen0"
Device "intel"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Modes "1920x1080_60.00"
Depth 24
EndSubSection
EndSection
xorg.conf.d/10-monitor.conf:
Section "Monitor"
Identifier "Monitor1"
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
Option "PreferredMode" "1920x1080_60.00"
EndSection
xorg.conf.d/20-intel.conf:
Section "Device"
Identifier "intel"
Driver "modesetting"
BusID "PCI:0:2:0"
Option "AccelMethod" "sna"
EndSection
具体文件如下: ↩︎