Manjaro-Nvidia独显解决方案(外接显示器修复)

Manjaro独显外接显示器解决方案

针对问题:
①无法使用Nvidia独显驱动

②无法使用外接显示器

③可以使用外接显示器,但是当没有外接时,笔记本开机黑屏。

  1. 安装开源驱动

    更新系统。

    $ sudo pacman -Syyu
    

    Manjaro Setting Manager中(此配置项可以在系统设置里面找到),安装Nvidia显卡开源驱动video-nvidia-430xx,并卸载掉其它显卡驱动。(此时重启将黑屏,无法进入桌面,所以请进行第2步操作再重启)

  2. 删除nvidia默认配置文件

    删除/etc/X11/mhwd.d/nvidia.conf。(重启生效)

    命令行输入nvidia-smi,查看显卡驱动是否生效。(此时Nvidia独显驱动已经生效了,如果需要外接显示器的童鞋可以继续后面的操作,如果是手残党,请小心操作,不要打错命令,不然后果很麻烦。)

  3. 设置外接显示器检测

    将参数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
    

    (重启生效)

  4. 将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-0eDP-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生成的命令粘贴到这个参数后面,注意不要有空格,也有同样的效果)


大家有问题的话可以联系我,或者是有更好的意见或者建议,也可以一起分享交流。实践有用的话可以给个赞哦!

你可能感兴趣的:(Manjaro-Nvidia独显解决方案(外接显示器修复))