Manjaro-Nvidia独显解决方案(外接显示器修复)
Manjaro独显外接显示器解决方案
针对问题:
①无法使用Nvidia独显驱动
②无法使用外接显示器
③可以使用外接显示器,但是当没有外接时,笔记本开机黑屏。
-
安装开源驱动
更新系统。
$ sudo pacman -Syyu
在
Manjaro Setting Manager
中(此配置项可以在系统设置里面找到),安装Nvidia显卡开源驱动video-nvidia-430xx
,并卸载掉其它显卡驱动。(此时重启将黑屏,无法进入桌面,所以请进行第2步操作再重启) -
删除nvidia默认配置文件
删除
/etc/X11/mhwd.d/nvidia.conf
。(重启生效)命令行输入
nvidia-smi
,查看显卡驱动是否生效。(此时Nvidia独显驱动已经生效了,如果需要外接显示器的童鞋可以继续后面的操作,如果是手残党,请小心操作,不要打错命令,不然后果很麻烦。) -
设置外接显示器检测
将参数
nvidia-drm.modeset=1
加入到/etc/default/grub
文件中的GRUB_CMDLINE_LINUX_DEFAULT
末尾,如下,命令一定不要输错了,不然无法开机,如果出现无法开机的情况,请用启动盘启动将修改的文件还原。GRUB_CMDLINE_LINUX_DEFAULT="quiet apparmor=1 security=apparmor udev.log_priority=3 nvidia-drm.modeset=1"
命令行输入(系统管理员模式)
# grub-mkconfig > /boot/grub/grub.cfg
(重启生效)
-
将DM登录窗口设置到笔记本显示器上
当外接显示器时,登录窗口通过HDMI定向到外界显示器上。
当没有外接显示器时,开机笔记本将黑屏,不会显示登录窗口。系统默认还是将DM登录窗口通过HDMI输出到外接显示器,由于没有外接显示器,用户开机将无法查看登录界面。LigntDM-archlinuxwiki
系统设置中的登录窗口设置无效,需要修改配置文件。将DM登录时的屏幕设置为扩展屏幕。
-
下载randr
$ sudo pacman -S arandr
-
配置扩展屏幕
打开ARANDR,将笔记本显示器(
eDP-1-1
)设置为主显示器,然后保存配置文件到.sh
文件中,将脚本中的命令复制下来。xrandr --output DP-0 --off --output DP-1 --off --output HDMI-0 --mode 1920x1080 --pos 1920x0 --rotate normal --output DP-2 --off --output DP-3 --off --output eDP-1-1 --primary --mode 1920x1080 --pos 0x0 --rotate normal
编写脚本,开机进行设备检测,将LightDM的登录窗口输出到笔记本显示器上。上述命令信息代表系统检测到的所有的输出口,其中
HDMI-0
和eDP-1-1
为已连接的登录窗口的显示输出设备,--pos 1920x0
代表显示器扩展,--pos 0x0
代表主显示器。脚本内容如下:
#!/bin/sh xrandrcmd="--output eDP-1-1 --primary --mode 1920x1080 --pos 0x0 --rotate normal" devname=$(xrandr |grep -e "HDMI"| grep -e " connected" |awk '{print$1}') for m in ${devname} do xrandrcmd="${xrandrcmd} --output ${m} --mode 1920x1080 --pos 1920x0 --rotate normal" done devname=$(xrandr |grep "disconnected" |awk '{print$1}') unset m for m in ${devname} do xrandrcmd="${xrandrcmd} --output ${m} --off" done unset m #echo ${xrandrcmd} xrandr ${xrandrcmd} unset xrandrcmd
笔记本为主显示器设置为默认设置,然后检测连接的显示器,当没有其它外接显示器时,只配置笔记本显示器,其它关闭。当检测到有外接显示器时,进行配置,通过参数
--pos 1920x0
配置为笔记本的扩展显示器。(也可以通过--pos 0x0
参数配置,将外接显示器配置为笔记本显示的镜像。或者使用arandr进行镜像配置) -
添加LightDM的启动配置文件
将上述脚本放入到
/usr/local/bin/
目录下,这里使用的名称是setmonitor.sh
。然后打开的LightDM的配置文件,/etc/lightdm/lightdm.conf
。取消[Seat:*]
选项中的display-setup-scriup=
的注释,然后将上述脚本设置为该变量的值。display-setup-script=/usr/local/bin/setmonitor.sh
(如果只需要将登录窗口显示到笔记本屏幕上的话,则只需要将上述选项设置为
display-setup-script=xrandr --output eDP-1-1 --primary --mode 1920x1080 --pos 0x0 --rotate normal
)````
如果不是LightDM的,可以搜索一下其它显示管理器的display-setup-script
这个参数是在哪个文件中,同样的方式修改就行了。(简单点的方法是不用这个脚本,直接把arandr生成的命令粘贴到这个参数后面,注意不要有空格,也有同样的效果)
-
大家有问题的话可以联系我,或者是有更好的意见或者建议,也可以一起分享交流。实践有用的话可以给个赞哦!