You are not logged in.

#1 2024-08-21 13:35:13

paozaf
Member
Registered: 2012-11-29
Posts: 78

Nvidia on ThinkPAd p14s

Hi all,
I just installed arch (with gnome) on a ThinkPad p14s (intel CPU).

I am facing problems with the NVIDIA side:
without nvidia drivers GDM appeares and gnome runs (I am using it in this way right now), if I install nvidia driver I got a black screen after grub and I never get to gdm.

I would like to use nvidia-prime to use both video cards.
Of course I already read the wiki but I got lost (it was much simpler in the past dealing with nvidia driver).
Any suggestions is highly appreciated.

My configuration (6.10.6-arch1-1) is the following:

[root@swissarmyknife p4ol0]# lspci -k | grep -A 2 -E "(VGA|3D)"
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c)
	Subsystem: Lenovo Device 22ea
	Kernel driver in use: i915
--
03:00.0 3D controller: NVIDIA Corporation TU117GLM [T550 Laptop GPU] (rev a1)
	Subsystem: Lenovo Device 22ea
	Kernel driver in use: nouveau
[root@swissarmyknife p4ol0]# cat /etc/default/grub 
# GRUB boot loader configuration

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
GRUB_CMDLINE_LINUX=""

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `videoinfo'
GRUB_GFXMODE=auto

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"

# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"

# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT=true

# Uncomment to disable submenus in boot menu
#GRUB_DISABLE_SUBMENU=y

# Probing for other operating systems is disabled for security reasons. Read
# documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this
# functionality install os-prober and uncomment to detect and include other
# operating systems.
#GRUB_DISABLE_OS_PROBER=false
[root@swissarmyknife p4ol0]# cat /etc/mkinitcpio.conf
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(usbhid xhci_hcd)
MODULES=()

# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image.  This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.
FILES=()

# HOOKS
# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
##   This setup specifies all modules in the MODULES setting above.
##   No RAID, lvm2, or encrypted root is needed.
#    HOOKS=(base)
#
##   This setup will autodetect all modules for your system and should
##   work as a sane default
#    HOOKS=(base udev autodetect modconf block filesystems fsck)
#
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS=(base udev modconf block filesystems fsck)
#
##   This setup assembles a mdadm array with an encrypted root file system.
##   Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
#    HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
##   This setup loads an lvm2 volume group.
#    HOOKS=(base udev modconf block lvm2 filesystems fsck)
#
##   This will create a systemd based initramfs which loads an encrypted root filesystem.
#    HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole sd-encrypt block filesystems fsck)
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr and fsck hooks.
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck)

# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used for Linux ≥ 5.9 and gzip compression is used for Linux < 5.9.
# Use 'cat' to create an uncompressed image.
#COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"

# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()

# MODULES_DECOMPRESS
# Decompress loadable kernel modules and their firmware during initramfs
# creation. Switch (yes/no).
# Enable to allow further decreasing image size when using high compression
# (e.g. xz -9e or zstd --long --ultra -22) at the expense of increased RAM usage
# at early boot.
# Note that any compressed files will be placed in the uncompressed early CPIO
# to avoid double compression.
#MODULES_DECOMPRESS="no"

What I have to install/blacklist/edit?

Thanks a lot.

Paolo

Offline

#2 2024-08-22 14:55:33

paozaf
Member
Registered: 2012-11-29
Posts: 78

Re: Nvidia on ThinkPAd p14s

Hi,
I have some good news.
I didn't uderstand if the problem was the driver or gdm, so I disabled the gdm service and I installed the packages nvidia nvidia-utils nvidia-prime vulkan-tools.
Then I added the line

nvidia-drm.modeset=1

into the file /etc/default/grub, line GRUB_CMDLINE_LINUX_DEFAULT.

Then I ran

grub-mkconfig -o /boot/grub/grub.cfg
mkinitcpio -P

I rebooted and I got a shell (I disabled gdm).
I loged in and I got:

[root@swissarmyknife p4ol0]# lspci -k | grep -A 2 -E "(VGA|3D)"
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c)
	Subsystem: Lenovo Device 22ea
	Kernel driver in use: i915
--
03:00.0 3D controller: NVIDIA Corporation TU117GLM [T550 Laptop GPU] (rev a1)
	Subsystem: Lenovo Device 22ea
	Kernel driver in use: nvidia
[root@swissarmyknife p4ol0]# lspci -k | grep -A 2 -E "(VGA|3D)"
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c)
	Subsystem: Lenovo Device 22ea
	Kernel driver in use: i915
--
03:00.0 3D controller: NVIDIA Corporation TU117GLM [T550 Laptop GPU] (rev a1)
	Subsystem: Lenovo Device 22ea
	Kernel driver in use: nvidia

If I tried to start gdm always black screen.
So, I understood the problem was Wayland and gdm.
At this point I ran

ln -s /dev/null /etc/udev/rules.d/61-gdm.rules

and I added this lines into the /etc/environment file:

GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia

after the reboot I was able to get a shell and then start gdm!


Now I have just a question:

if I run

prime-run libreoffice

I do not see the libre office process in the nvidia-smi output.
Is the swithing between embedded and nvidia card not working properly?

Thnaks a lot.

Paolo

Offline

Board footer

Powered by FluxBB