nvidia 内核配置

[*] Enable loadable module support --->
Processor type and features --->
   [*] MTRR (Memory Type Range Register) support
Device Drivers --->
   Graphics support --->
      [*] VGA Arbitration
Device Drivers --->
   Character devices --->
      [*] IPMI top-level message handler

framebuffer 会和 nvidia 冲突,所以去除一些内核选项。

Device Drivers --->
    Graphics support --->
        Frame buffer Devices --->
            <*> Support for frame buffer devices --->
            < >   nVidia Framebuffer Support
            < >   nVidia Riva support
Device Drivers  --->
    Graphics support  --->
        < > Nouveau (nVidia) cards

CONFIG_FB_EFI 使能时也会导致驱动有一些问题,所以需要配置如下:

Bus options (PCI etc.)  --->
   [*] Mark VGA/VBE/EFI FB as generic system framebuffer
Device Drivers --->
   Graphics support --->
        Frame buffer Devices --->
            [*] Simple framebuffer support

X 配置

  1. USE=“X” 写入 /etc/portage/make.conf.
  2. 配置内核
Device Drivers --->
  Input device support --->
  <*>  Event interface
Device Drivers --->
   Graphics support --->
      Frame Buffer Devices --->
         <*> Support for frame buffer devices --->
         ## (Disable all drivers, including VGA, Intel, NVIDIA, and ATI, except EFI-based Framebuffer Support, only if you are using UEFI)

      ## (Further down, enable basic console support. KMS uses this.)
      Console display driver support --->
         <*>  Framebuffer Console Support

注意: uefi framebuffer 也不能选择,参考 nvidia 部分,使用 simple framebuffer.

  1. VIDEO_CARDS="nvidia"INPUT_DEVICES="libinput synaptics" 写入到 /etc/portage/make.confportageq envvar INPUT_DEVICES 可以用来查看当前的输入设备。
  2. 安装 xorg emerge -av x11-base/xorg-drivers, emerge --ask x11-base/xorg-server。也可以把 xorg-server 替换为 x11-base/xorg-x11xorg-x11 这个包比 xorg-server大,多了很多字体和其他的一些东西,很多用不上,后面需要再专门安装缺少的。
  3. env-update 然后 source /etc/profile

安装 nvidia 驱动

  1. emerge -av x11-drivers/nvidia-drivers 确保 tools 开启,会自动安装 nvidia-settings。
  2. gpasswd -a xyz video, 把用户加入到 vidio 组里面。

startx

  1. 切换到普通用户,然后运行 startx,发现报错,文件找不到等等,具体信息可以在 ~/.local/share/xorg/Xorg.0.log 里面找到。
  2. 配置文件在 /etc/X11/xorg.conf.d/, 示例在 /usr/share/doc/xorg-server-${version}/xorg.conf.example.bz2
  3. /etc/X11/xorg.conf.d/nvidia.conf 里面写入:
    Section "Device"
    Identifier  "nvidia"
    Driver      "nvidia"
    EndSection
  4. 经过仔细搜索发现这是个比较久的问题。18年的时候,就已经出现了。本质的原因是 xorg-server 的 suid 这个 USE 的问题, suid 能够让使用者的权限提升到拥有者的权限,在以前, xorg-server 会默认带有 suid,这样普通用户也可以 startx。后来 xorg-server 增加了 elogind 这个 use, 可以使用 elogind 而不是 suid,这样 普通用户也可以使用 startx 了,而且因为 systemd 的出现,新的 kde 等桌面,要不依赖 systemd,要不依赖于 elogind.
  5. 在 make.conf 里面的 USE 里面增加 elogind,这样全局开启 elogind,然后 emerge -avuDN @world, 然后 emerge --depclean, `emerge
  6. rc-update add elogind boot 把 elogind 增加到 boot 启动里面,否则 pam_elogind 会遇到问题。 参考: https://wiki.gentoo.org/wiki/Non_root_Xorg
    https://wiki.gentoo.org/wiki/Elogind
  7. reboot, 然后 startx 就只是提示没有 xterm 和 twm 了。
  8. emerge -av xterm twm,然后再 startx 就ok 了。
  9. loginctl 后面接不同参数实现不同功能,poweroff reboot suspend hibernate hybrid-sleep 这几个里面休眠还不能用,需要进一步配置,但是关机和重启是可以用的。
  10. 如果希望休眠和恢复增加 hook,可以 写脚本放入 /lib64/elogind/system-sleep/,具体参考: https://wiki.gentoo.org/wiki/Elogind
  11. 可以安装 x11-apps/mesa-progs 来测试 nvidia 显卡。 startx 以后,输入 glxinfo | grep direct 可以查看结果。 还可以运行 glxgears 来查看 fps.
  12. 如果 nvidia 内核模块进行了修改,那么修改了 /etc/modprobe.d/nvidia.conf 之后,还需要 update-modules,然后重新加载模块 modprobe -r nvidia modprobe nvidia

旧系统配置文件

配置文件主要在 /etc/X11/xorg.conf.d/.xinitrc , /etc/X11/Sessions/ 这几个里面。

i3wm

  1. echo ">=x11-wm/i3-4.18 doc" > /etc/portage/package.use/i3 给 i3wm 增加 doc
  2. emerge -av i3 dmenu i3status i3lock 安装 i3wm 相关的软件,其中 i3status 可以用功能更强的 i3blocks 代替,i3bar 可以用 polybar 来代替。
  3. ~/.xinitrc 里面写入 exec dbus-launch --exit-with-session i3 表示使用 i3 作为窗口管理系统。
  4. startx 启动 i3wm,选择默认首次配置地址,选择 win 按键作为 modifier 按键。

双显卡

可以参考 https://wiki.gentoo.org/wiki/NVIDIA/Optimus

参考:

https://wiki.gentoo.org/wiki/Xorg/Guide
https://wiki.gentoo.org/wiki/Non_root_Xorg
https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers

标签: Gentoo

添加新评论