我已经将所有内容总结成一篇博客文章
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上写一篇文章详细介绍这个过程!