尝试在Dell XPS 15 (9570)上安装Ubuntu。

我一直在尝试在我的新笔记本电脑上安装Ubuntu:
- Dell XPS 15 (9570) - Windows 10 Home 64位英文版 - 第8代Intel(R) Core(TM) i7-8750H处理器(9M缓存,最高可达4.1 GHz,6核心) - 16GB,2x8GB,DDR4,2666MHz - 256GB M.2 2280 PCIe固态硬盘 - NVIDIA(R) GeForce(R) GTX 1050Ti,搭载4GB GDDR5显存
我开始尝试使用一个8GB的USB驱动器安装Ubuntu 18.04 LTS。我遇到的第一个问题是在启动屏幕上的第四个点上卡住了。尝试了几次后,我插入了我的显示器(通过HDMI),突然之间就不再卡住了。
接下来,我试图进行安装,当我点击立即重启时,我的电脑卡住了,我不得不手动关闭然后重新启动。此时,我成功进入登录界面并登录,但在输入密码后,屏幕变为紫色且鼠标指针(同时被冻结)无法移动。此时,我能够通过按下ctrl+alt+f4进入shell,并尝试运行sudo apt-get install nvidia-390,但在运行到building initial module for 4.15.0-22-generic时卡住了,重启后我不得不运行sudo dpkg --remove -a
我无法解决这个问题,所以我尝试安装Ubuntu 16.04,只有通过将acpi=off添加到引导配置中才能成功(顺便说一下,由于GRUB通常会闪现然后立即消失,我很难找到引导配置,只有偶尔它才能停留足够长的时间让我使用)。但是,当我尝试启动时,我永远无法达到带有五个点的屏幕,而是立即卡在了一个紫色的屏幕上(没有鼠标指针)。
我重新安装了Ubuntu 18.04,现在又卡在登录界面上了。
我该怎么办?

你更新了戴尔的UEFI吗?即使是新电脑,可能还有更新的UEFI版本。你关掉了RAID并将驱动器改为AHCI了吗?但是一定要先在Windows中添加AHCI驱动程序。同时,在UEFI中关闭快速启动,这样在启动时你就有时间按键。在安装最新的nVidia驱动程序之前,你需要使用nomodeset来启动。不要从戴尔下载,而是使用ppa。戴尔XPS 13 9360在nvme固件和BIOS更新后可以正常工作,但16.10版本无法,需要新的rEFInd来支持NVMe。 http://askubuntu.com/questions/884991/ubuntu-16-10-dual-boot-error-grub-efi-amd64-signed-package-failed-to-install - oldfred
我已经关闭了RAID并改为AHCI。我找不到快速启动选项,也不知道在Windows被擦除后是否可以更新UEFI。我确实使用了ppa。 - Nadav Kohen
我的三年前的Dell SFF(小型桌面电脑)可以直接从UEFI更新。我必须将更新文件保存到ESP或另一个FAT32分区,以便UEFI能够读取它。不记得Dell是否与我其他使用"Windows"和"Other"的系统类似,其中你必须在Windows 7上使用"Other",因为Windows 7不支持UEFI安全启动。或者那真的是UEFI安全启动设置,请查看您的手册以获取详细信息,通常UEFI会在设置中有简短的描述。 - oldfred
你确定Nvidia驱动程序安装真的卡住了吗?在我的机器上,从源代码构建内核模块需要一些时间,这就是在所提到的步骤中发生的事情。 - David Foerster
6个回答

我已经将所有内容总结成一篇博客文章https://medium.com/@pwaterz/how-to-dual-boot-windows-10-and-ubuntu-18-04-on-the-15-inch-dell-xps-9570-with-nvidia-1050ti-gpu-4b9a2901493d
我也曾为此苦苦挣扎。最终,以下方法对我有效,注意我安装的是Ubuntu 18.04:
按照这份文档的第一部分 - https://github.com/rcasero/doc/wiki/Ubuntu-linux-on-Dell-XPS-15-(9560),关于BIOS设置和将Windows分区从RAID更改为AHCI。这将允许您启动Live CD。请注意,我最终不得不输入我的Windows密钥来解锁驱动器,以便重新进入Windows。
正常安装Ubuntu。
JackJack96在这里https://github.com/JackHack96/dell-xps-9570-ubuntu-respin做了出色的工作,编写了所有设置和软件包安装步骤的脚本。这些脚本的主要目的是生成一个已经安装了软件包的镜像,但他也提供了一个脚本来在现有安装上进行设置。第一次启动后,打开终端并运行以下命令:
sudo apt install curl sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/JackHack96/dell-xps-9570-ubuntu-respin/master/xps-tweaks.sh)" sudo prime-select intel
这将强制使用英特尔集成显卡,无需浪费电池。我还没有测试过运行NVIDIA显卡。如果你想要的话,可以运行以下命令:
sudo prime-select nvidia

最后一个问题是屏幕开始闪烁。我通过将分辨率更改为2048 x 1152并将刷新率设置为59.91来解决了这个问题。起初,我将其设置为3840 x 1152,并降低了刷新率,但仍然有点不稳定,所以我降低了分辨率。基本上就像运行4k并将其放大到250%一样-这是默认设置。顺便说一句,10年前我拥有过一台XPS,也遇到了同样的问题...为什么现在还会发生呢?
我已经使用这个设置运行了几天,大部分时间都正常工作。当我插入电源时,屏幕偶尔会出现问题,我还需要解决这个。
最后,一个很棒的调整是安装https://github.com/bulletmark/libinput-gestures
最后但同样重要的是,备份您的镜像,这样如果出现问题,您可以恢复它。
sudo dd if=/dev/nvme0n1p2 conv=sync,noerror bs=64K status=progress |  gzip -c  > backup.img.gz

确保将 nvme0n1p2 替换为正确的分区。您可以通过运行以下命令来检查:
df -h  

我的建议是在全新安装上进行此操作。当试图使一切正常工作时,你会安装和配置许多不同的东西,这将确保你没有任何问题。
更新1:
屏幕闪烁/崩溃问题持续存在。我进行了一些调查,发现这似乎是Linux内核的一个错误。我通过以下方式将内核更新到了4.17.12-041712-generic版本:
git clone git@github.com:mtompkins/linux-kernel-utilities.git
cd linux-kernel-utilities
sudo ./update_ubuntu_kernel.sh --latest

注意,当你运行这个程序时,可能会安装比我更新的内核版本。目前情况好像有所改善,但只过了几个小时而已。如果保持稳定,稍后会更新。
更新2: 整天使用电脑没有闪烁。内核更新似乎起到了作用。
更新3: 内核更新后仍然没有闪烁。我注意到在暂停笔记本电脑时出现了一个问题,它变得非常热,并且无法完全关闭。我追踪到这似乎是nouveau驱动程序中的一个错误。
Aug 08 19:20:26 hermes kernel: Hardware name: Dell Inc. XPS 15 
9570/02MJVY, BIOS 1.3.0 07/12/2018
Aug 08 19:20:26 hermes kernel: Workqueue: events_unbound async_run_entry_fn
Aug 08 19:20:26 hermes kernel: RIP: 0010:gf100_vmm_flush_+0x15c/0x1a0 [nouveau]
Aug 08 19:20:26 hermes kernel: RSP: 0018:ffffa9fc0782f5c8 EFLAGS: 00010282
Aug 08 19:20:26 hermes kernel: RAX: 0000000000000000 RBX: ffff969a575e0050 RCX: ffffffffaf061dc8
Aug 08 19:20:26 hermes kernel: RDX: 0000000000000000 RSI: 0000000000000096 RDI: 0000000000000246
Aug 08 19:20:26 hermes kernel: RBP: ffffa9fc0782f600 R08: 0000086da855788c R09: 000000000000001d
Aug 08 19:20:26 hermes kernel: R10: 0000000000000766 R11: 00000000000158a8 R12: ffff969a49d08c00
Aug 08 19:20:26 hermes kernel: R13: ffff969a2b5d0f00 R14: 000003cbc7bc6800 R15: ffff969a494a5000
Aug 08 19:20:26 hermes kernel: FS:  0000000000000000(0000) GS:ffff969a5bcc0000(0000) knlGS:0000000000000000
Aug 08 19:20:26 hermes kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Aug 08 19:20:26 hermes kernel: CR2: 00007f15f4007036 CR3: 00000001b960a004 CR4: 00000000003606e0
Aug 08 19:20:26 hermes kernel: Call Trace:
Aug 08 19:20:26 hermes kernel:  gp100_vmm_flush+0x17/0x20 [nouveau]
Aug 08 19:20:26 hermes kernel:  nvkm_vmm_iter.constprop.14+0x323/0x810 [nouveau]
Aug 08 19:20:26 hermes kernel:  ? gp100_vmm_pd0_pde+0x1a0/0x1a0 [nouveau]
Aug 08 19:20:26 hermes kernel:  ? __switch_to_asm+0x40/0x70
Aug 08 19:20:26 hermes kernel:  ? __switch_to_asm+0x40/0x70
Aug 08 19:20:26 hermes kernel:  ? native_sched_clock+0x37/0x90
Aug 08 19:20:26 hermes kernel:  nvkm_vmm_map+0x148/0x400 [nouveau]
Aug 08 19:20:26 hermes kernel:  ? gp100_vmm_pd0_pde+0x1a0/0x1a0 [nouveau]
Aug 08 19:20:26 hermes kernel:  ? __switch_to_asm+0x40/0x70
Aug 08 19:20:26 hermes kernel:  ? __switch_to_asm+0x34/0x70
Aug 08 19:20:26 hermes kernel:  nvkm_vram_map+0x57/0x80 [nouveau]
Aug 08 19:20:26 hermes kernel:  nvkm_uvmm_mthd+0x5ff/0x8d0 [nouveau]
Aug 08 19:20:26 hermes kernel:  nvkm_object_mthd+0x1a/0x30 [nouveau]
Aug 08 19:20:26 hermes kernel:  nvkm_ioctl_mthd+0x65/0x70 [nouveau]
Aug 08 19:20:26 hermes kernel:  nvkm_ioctl+0xe2/0x180 [nouveau]
Aug 08 19:20:26 hermes kernel:  nvkm_client_ioctl+0x12/0x20 [nouveau]
Aug 08 19:20:26 hermes kernel:  nvif_object_ioctl+0x47/0x50 [nouveau]
Aug 08 19:20:26 hermes kernel:  nvif_object_mthd+0x129/0x150 [nouveau]
Aug 08 19:20:26 hermes kernel:  ? _cond_resched+0x19/0x30
Aug 08 19:20:26 hermes kernel:  ? __kmalloc+0x19b/0x230
Aug 08 19:20:26 hermes kernel:  ? nvif_vmm_map+0x3f/0xb0 [nouveau]
Aug 08 19:20:26 hermes kernel:  nvif_vmm_map+0x88/0xb0 [nouveau]
Aug 08 19:20:26 hermes kernel:  nouveau_mem_map+0x82/0xf0 [nouveau]
Aug 08 19:20:26 hermes kernel:  nouveau_vma_map+0x48/0x70 [nouveau]
Aug 08 19:20:26 hermes kernel:  nouveau_bo_move_ntfy+0x77/0xe0 [nouveau]
Aug 08 19:20:26 hermes kernel:  ttm_bo_handle_move_mem+0x2d2/0x520 [ttm]
Aug 08 19:20:26 hermes kernel:  ttm_bo_evict+0x142/0x1c0 [ttm]
Aug 08 19:20:26 hermes kernel:  ? drm_edid_to_sad+0x194/0x1d0 [drm]
Aug 08 19:20:26 hermes kernel:  ttm_mem_evict_first+0x19a/0x220 [ttm]
Aug 08 19:20:26 hermes kernel:  ttm_bo_force_list_clean+0xa1/0x170 [ttm]
Aug 08 19:20:26 hermes kernel:  ttm_bo_evict_mm+0x2e/0x30 [ttm]
Aug 08 19:20:26 hermes kernel:  nouveau_do_suspend+0x85/0x2d0 [nouveau]
Aug 08 19:20:26 hermes kernel:  nouveau_pmops_suspend+0x39/0x80 [nouveau]
Aug 08 19:20:26 hermes kernel:  pci_pm_suspend+0x76/0x130
Aug 08 19:20:26 hermes kernel:  ? pci_pm_freeze+0xf0/0xf0
Aug 08 19:20:26 hermes kernel:  dpm_run_callback+0x5b/0x130
Aug 08 19:20:26 hermes kernel:  __device_suspend+0x109/0x450
Aug 08 19:20:26 hermes kernel:  async_suspend+0x1f/0x90
Aug 08 19:20:26 hermes kernel:  async_run_entry_fn+0x3c/0x150
Aug 08 19:20:26 hermes kernel:  process_one_work+0x1f5/0x3c0
Aug 08 19:20:26 hermes kernel:  worker_thread+0x32/0x400
Aug 08 19:20:26 hermes kernel:  kthread+0x120/0x140
Aug 08 19:20:26 hermes kernel:  ? pwq_unbound_release_workfn+0xd0/0xd0
Aug 08 19:20:26 hermes kernel:  ? kthread_bind+0x40/0x40
Aug 08 19:20:26 hermes kernel:  ret_from_fork+0x35/0x40
Aug 08 19:20:26 hermes kernel: Code: 41 5e 41 5f 5d c3 49 8b 7c 24 10 48 8b 5f 50 48 85 db 74 4d e8 56 4a 3c ed 48 89 da 48 c7 c7 9c a8 f9 c0 48 89 c6 e8 b6 79 de ec <0f> 0b eb bf 49 8b 7c 24 10 48 8b 5f 50 48 85 db 74 1e e8 2d 4a 
Aug 08 19:20:26 hermes kernel: ---[ end trace ff7d3fd86666433f ]---

为了解决这个问题,我全时切换到了Nvidia显卡。
sudo prime-select nvidia

现在看起来悬浮和唤醒都更加顺畅了!

更新4: 我解决了使用英特尔显卡时无法休眠的问题。我只需要在我的grub中添加nouveau.modeset=0,现在一切都正常工作了!我打算很快在Medium上写一篇文章详细介绍这个过程!


我有一个非常相似的配置。XPS 15 9570- i7,32GB内存。 我成功地设置了Ubuntu 18.04和Windows 10的双启动。 我直接从戴尔安装了BIOS更新。 然后我按照Ramón Casero提供的这些说明进行操作。
希望对你有所帮助。

我在笔记本电脑上重新安装了Windows 10,这样我就可以从戴尔的网站上获取BIOS更新,然后我还获取了戴尔的nVidia驱动程序更新并安装了它。然后我重新安装了Ubuntu,并且只要在grub中的内核配置中保留nomodeset,现在它可以正常工作了! - Nadav Kohen


花了我一个星期的时间和一个更懂硬件的朋友(谢谢马丁!)的帮助,才让我的32Gb/1Tb GeForce 1050Ti正常工作。现在它运行得非常出色:电源管理、触摸板、声音等都正常工作。其中一个问题是由于我对UEFI的理解不足,并且这在我可靠的XPS13上从未成为问题,我简单地抹掉了磁盘上所有与W10有关的痕迹,包括EFI分区。BIOS参数非常关键,如果与UEFI结合使用时设置错误,成功引导Live USB就只是凭运气。然而,在我的朋友升级了BIOS并成功重新创建了EFI分区后,从Live USB引导变得可能。以下是BIOS设置: 版本:1.2.2

Boot Sequence:
V ubuntu  Field: ubuntu
Boot list option
X Legacy External Devices
V UEFI

Advanced Boot Options:
All disabled

UEFI Boot Path Security:
Always

System Configuration:
SATA Operation AHCI

Drives:
V SATA-1
V SATA-2 
V M.2 PCIe SSD-0 checked

USB Configuration:
V Enable USB Boot Support
V Enable External USB Port

Secure Boot:
X Secure Boot Enable
Secure Boot Mode (Deployed Mode (greyed)

POST Behavior:
All options greyed

下一个问题是,一旦登录提示出现并输入密码后,图形界面就会完全冻结。起初我以为整个系统都被冻结了,但后来发现可以通过虚拟终端(通过Fn+Alt+F2至F6或有时Ctrl+Alt+F2至F6访问,这似乎有所不同)进行登录。无线网络立即正常工作,因此很容易通过命令行安装软件。
一旦能够登录,我安装了以下Nvidia驱动程序和库文件:
ii  libcuda1-384                                  390.48-0ubuntu3                     amd64        Transitional package for nvidia-headless-390
ii  libnvidia-cfg1-390:amd64                      390.48-0ubuntu3                     amd64        NVIDIA binary OpenGL/GLX configuration library
ii  libnvidia-common-390                          390.48-0ubuntu3                     all          Shared files used by the NVIDIA libraries
ii  libnvidia-compute-390:amd64                   390.48-0ubuntu3                     amd64        NVIDIA libcompute package
ii  libnvidia-compute-390:i386                    390.48-0ubuntu3                     i386         NVIDIA libcompute package
ii  libnvidia-decode-390:amd64                    390.48-0ubuntu3                     amd64        NVIDIA Video Decoding runtime libraries
ii  libnvidia-decode-390:i386                     390.48-0ubuntu3                     i386         NVIDIA Video Decoding runtime libraries
ii  libnvidia-encode-390:amd64                    390.48-0ubuntu3                     amd64        NVENC Video Encoding runtime library
ii  libnvidia-encode-390:i386                     390.48-0ubuntu3                     i386         NVENC Video Encoding runtime library
ii  libnvidia-fbc1-390:amd64                      390.48-0ubuntu3                     amd64        NVIDIA OpenGL-based Framebuffer Capture runtime library
ii  libnvidia-fbc1-390:i386                       390.48-0ubuntu3                     i386         NVIDIA OpenGL-based Framebuffer Capture runtime library
ii  libnvidia-gl-390:amd64                        390.48-0ubuntu3                     amd64        NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii  libnvidia-gl-390:i386                         390.48-0ubuntu3                     i386         NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii  libnvidia-ifr1-390:amd64                      390.48-0ubuntu3                     amd64        NVIDIA OpenGL-based Inband Frame Readback runtime library
ii  libnvidia-ifr1-390:i386                       390.48-0ubuntu3                     i386         NVIDIA OpenGL-based Inband Frame Readback runtime library
ii  nvidia-compute-utils-390                      390.48-0ubuntu3                     amd64        NVIDIA compute utilities
ii  nvidia-dkms-390                               390.48-0ubuntu3                     amd64        NVIDIA DKMS package
ii  nvidia-driver-390                             390.48-0ubuntu3                     amd64        NVIDIA driver metapackage
ii  nvidia-headless-390                           390.48-0ubuntu3                     amd64        NVIDIA headless metapackage
ii  nvidia-headless-no-dkms-390                   390.48-0ubuntu3                     amd64        NVIDIA headless metapackage - no DKMS
ii  nvidia-kernel-common-390                      390.48-0ubuntu3                     amd64        Shared files used with the kernel module
ii  nvidia-kernel-source-390                      390.48-0ubuntu3                     amd64        NVIDIA kernel source package
ii  nvidia-libopencl1-384                         390.48-0ubuntu3                     amd64        Transitional package for nvidia-headless-390
ii  nvidia-opencl-icd-384                         390.48-0ubuntu3                     amd64        Transitional package for nvidia-headless-390
ii  nvidia-prime                                  0.8.8                               all          Tools to enable NVIDIA's Prime
ii  nvidia-settings                               390.42-0ubuntu1                     amd64        Tool for configuring the NVIDIA graphics driver
ii  nvidia-utils-390                              390.48-0ubuntu3                     amd64        NVIDIA driver support binaries
ii  xserver-xorg-video-nvidia-390                 390.48-0ubuntu3                     amd64        NVIDIA binary Xorg driver

在此之后,一切都正常运作了!
要做的事情:因为我专门购买了这个系统来进行视频编辑,所以我仍然需要找出如何充分发挥内置的英特尔和Nvidia两个GPU的最佳方法。

我也有一台搭载GTX 1050Ti的XPS 9570,最新的BIOS,并且安装了Ubuntu 18.04。我只能通过在grub中添加nomodeset来启动,但这会禁用背光控制。我还没有找到适用的NVIDIA驱动程序。如果有人拥有这款笔记本并成功安装了NVIDIA驱动程序,请告知具体的内核和NVIDIA驱动程序版本!

进入恢复模式,然后安装NVIDIA驱动程序对我来说起作用了(至少目前是这样^^)。
要安装NVIDIA驱动程序,请转到“软件和更新”->“附加驱动程序”,让它加载列表,然后选择NVIDIA驱动程序并点击“应用更改”。你可能不需要重新启动,但我还是这样做了。