Это о моем успешном опыте создания Ubuntu 17.10 x86_64 на clang-built Linux 4.15.7 kernel (последняя стабильная версия на данный момент) и проприетарного Nvidia 390.25 (последнего по настоящее время) драйвера для моей видеокарты Nvidia GTX GeForce 860M .
Ядро Linux 4.15.7 было построено с использованием clang в качестве хост-и целевого компилятора и установлено вместе с модулями на основе по умолчанию Конфигурация ядра. Мне пришлось отключить модуль exofs, поскольку он имел нестандартные «VLA, встроенные в структуры», которые clang не поддерживает. Затем я также скомпилировал источник драйвера Nvidia 390.25 после извлечения его из своего утилизационного установщика - мне пришлось игнорировать несоответствие версии компилятора psuedo-warning, поскольку заголовки ядра включали модель потока, а также информацию о платформе, в то время как проверка скрипта драйвера Nvidia приводила только к версии ,
После установки встроенных модулей драйвера Nvidia я перезагрузил свою систему, загрузка Ubuntu 17.10 не завершилась - она застряла в Loading ... 4.15.7.
Чтобы дополнительно изолировать проблемы совместимости (если они есть) ядра с gcc / clang vs драйвер Nvidia с gcc / clang, ядро компиляции Linux 4.15.7 с драйверами gcc и Nvidia 390.25 с clang и наоборот. Во-первых, процесс загрузки прошел фазу Loading ... 4.15.7 и перешел на некоторую услугу systemd, но застрял там. Для второго, опять же, он снова застрял на фазе Loading ... 4.15.7. Система journalctl / logs не помогла.
этап 1: проработав с qemu/KVM в начале, я хотел заиметь фактически не дело в воспитании лязг-построены ядра вверх. Итак, я попытался поднять лязг-построен ядре Linux изображения 4.15.7 используя архитектуру x86_64 по умолчанию config, чтобы начать с, а также лязг-причине busybox x86_64 для корневой файловой системы (файловой), на qemu/KVM в архитектуру x86_64. Это сработало. У меня есть Shell и busybox утилиты работали и так далее.
этап 1:
$ strings -a defconfig-linux-4.15.7/linux-4.15.7/vmlinux | grep "clang version" | head -1
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #1 SMP Fri Mar 2 21:15:24 PST 2018
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 17.10
Release: 17.10
Codename: artful
$ clang -v
clang version 5.0.0-3 (tags/RELEASE_500/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
в эмуляторе qemu/KVM и оценки, 4.15.7 ядра Linux(x86_64 с defconfig)/busybox и 64-бит :
/ # cat /proc/version
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #1 SMP Fri Mar 2 21:15:24 PST 2018
/ #
/ # uname -arv
Linux (none) 4.15.7 #1 SMP Fri Mar 2 21:15:24 PST 2018 x86_64 GNU/Linux
/ #
/ #
/ # strings -a bin/busybox | grep "clang version"
clang version 5.0.0-3 (tags/RELEASE_500/final)
/ #
/ #
/ # dmesg | grep QEMU
[ 0.000000] DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
[ 0.024000] smpboot: CPU0: Intel QEMU Virtual CPU version 2.5+ (family: 0x6, model: 0x6, stepping: 0x3)
[ 0.337415] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
[ 0.339072] scsi 1:0:0:0: CD-ROM QEMU QEMU DVD-ROM 2.5+ PQ: 0 ANSI: 5
/ #
/ #
в эмуляторе qemu/KVM и оценки, 4.15.7 ядра Linux(x86_64 с defconfig)/busybox и 64-бит : с выше первоначального успеха с ядром defconfig, я взял хост в Ubuntu ядра 17.10 config и восстановлен ядром Linux изображения 4.15.7. С этим я все остальное busybox и том же и пытался вывести их на qemu/KVM как раньше - это не работает. В результате [F8] и [F9] и kernel panic. Я заглянул в дамп стека ядра.
я заметил, что первый выпуск был в пределах kernel irq work tick логика. Тогда следующий вопрос был с kernel live instruction update логика. Я работала на них обоих. Перестройка ядра. Попробовал еще раз с qemu/KVM-переключателей - есть оболочка, никакой паники на этот раз. Следующий шаг-установка модулей ядра и модулей драйвера nvidia. Я сделал это, но в этот раз, все модули ядра, модуль драйвера nvidia в Ubuntu и в qemu/KVM и показали некоторые цветные точки и застрял - в основном из-за разницы между аппаратной и виртуальной гостя. Итак, я хотел бы попробовать только с драйвер nvidia, так как он был больше всего беспокоит, как та, что я использую на моем хосте для графики. Так что я включил (не установить) модули драйверов NVIDIA в busybox и и файловой системы пытались воспитать в qemu/KVM как обычно - в этот раз, была некоторая паника ядра из-за файловой системы-не нашли, хотя было файловой системы.
Итак, я попытался сжать все драйвера nvidia модулей на молнию и включить его в образ rootfs. Но, когда я попытался извлечь zip С В qemu/KVM в гостях, там был [от f13]. Так, я пытался построить 10г виртуального диска qemu и установить образ rootfs в том, что диск, чтобы рассмотреть пространство озабоченности, но, через некоторое время мне позвонил этот, как я был больше заинтересован в получении лязг-встроенный драйвер для nvidia на реальной системе, скобяными, чем на эмулироваться в qemu/KVM в среду (я знаю, что это не имеет реального видеокарт NVIDIA доступен через GPU-сквозной, так что он может проверить лязг-встроенный в NVIDIA 390.25 водителя, прежде чем я мог попробовать, что на хозяина реальной системе аппаратно видеокартой но все равно дал ему шанс просто, чтобы увидеть, если лязг-встроенный драйвер nvidia проявляет каких-либо проблем в эмуляторе qemu/KVM и при загрузке).
в эмуляторе qemu/KVM и оценки, 4.15.7 ядра Linux(x86_64 с defconfig)/busybox и 64-бит :
/ # cat /proc/version
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #20 SMP Sat Mar 3 20:46:15 PST 2018
/ #
/ #
/ # uname -arv
Linux (none) 4.15.7 #20 SMP Sat Mar 3 20:46:15 PST 2018 x86_64 GNU/Linux
/ #
/ #
/ #
/ # dmesg | grep QEMU
[ 0.000000] DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
[ 0.024000] smpboot: CPU0: Intel QEMU Virtual CPU version 2.5+ (family: 0x6, model: 0x6, stepping: 0x3)
[ 0.340776] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
[ 0.343135] scsi 1:0:0:0: CD-ROM QEMU QEMU DVD-ROM 2.5+ PQ: 0 ANSI: 5
/ #
/ # strings -a bin/busybox | grep "clang version"
clang version 5.0.0-3 (tags/RELEASE_500/final)
/ #
в эмуляторе qemu/KVM и оценки, 4.15.7 ядра Linux(x86_64 с defconfig)/busybox и 64-бит : как мой основной и реальной целью был мой хозяин (убунту 17.10), я установил этот лязг-собранное ядро (с выше вопросы, работали по) и драйверы NVIDIA 390.25 на мой хост-системы непосредственно. Перезагружается моя система. БАМ! У меня в Ubuntu x86_64 с 17.10 и работает с лязгом построенный ядра 4.15.7 и clang-встроенный драйвер nvidia 390.25 без каких-либо проблем.
[dиода d17]на хост в Ubuntu x86_64 с 17.10 с лязгом построен ядре Linux 4.15.7 и clang-причине драйвер nvidia geforce для видеокарты GTX 860М 390.25 вещно - моя успешных исследований и опыт : [!dиода d17]$ dmesg | grep clang
[ 0.000000] Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #20 SMP Sat Mar 3 20:46:15 PST 2018
$ cat /proc/version
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #20 SMP Sat Mar 3 20:46:15 PST 2018
$ uname -arv
Linux exp 4.15.7 #20 SMP Sat Mar 3 20:46:15 PST 2018 x86_64 x86_64 x86_64 GNU/Linux
$ nvidia-smi
Sun Mar 4 18:15:39 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.25 Driver Version: 390.25 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 860M Off | 00000000:01:00.0 Off | N/A |
| N/A 54C P0 N/A / N/A | 370MiB / 4046MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
exp@exp:~$ dmesg | grep NVIDIA | grep 390.25
[ 17.643496] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 390.25 Wed Jan 24 20:02:43 PST 2018 (using threaded interrupts)
[ 17.689835] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 390.25 Wed Jan 24 19:29:37 PST 2018
$ lsmod | grep nvidia
nvidia_uvm 815104 0
nvidia_drm 24576 2
nvidia_modeset 1097728 5 nvidia_drm
nvidia 14352384 334 nvidia_uvm,nvidia_modeset
ipmi_msghandler 61440 2 nvidia,ipmi_devintf
drm 454656 6 nvidia_drm,i915,drm_kms_helper
# clang-built Linux kernel 4.15.7 image and Nvidia 390.25 driver modules having clang compiler specific
# metadata within them.
#
$ eclang /lib/modules/4.15.7/build/vmlinux | grep "Linux"
++ strings -a /lib/modules/4.15.7/build/vmlinux
++ grep clang
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #20 SMP Sat Mar 3 20:46:15 PST 2018
exp@exp:~$ eclang /lib/modules/4.15.7/kernel/drivers/video/nvidia.ko | head -1
++ strings -a /lib/modules/4.15.7/kernel/drivers/video/nvidia.ko
++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
$ eclang /lib/modules/4.15.7/kernel/drivers/video/nvidia-drm.ko | head -1
++ strings -a /lib/modules/4.15.7/kernel/drivers/video/nvidia-drm.ko
++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
$ eclang /lib/modules/4.15.7/kernel/drivers/video/nvidia-uvm.ko | head -1
++ strings -a /lib/modules/4.15.7/kernel/drivers/video/nvidia-uvm.ko
++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
$ eclang /lib/modules/4.15.7/kernel/drivers/video/nvidia-modeset.ko | head -1
++ strings -a /lib/modules/4.15.7/kernel/drivers/video/nvidia-modeset.ko
++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
# DMI specific hardware information - verifies and confirms the physical hardware used
# instead of QEMU or any other virtual platform for running clang-built kernel and
# Nvidia 390.25 driver.
#
$ sudo dmidecode -t bios | grep Vendor
Vendor: LENOVO
$ sudo dmidecode -t system | grep "Manufacturer:\|Version"
Manufacturer: LENOVO
Version: Lenovo Y50-70 Touch
$ sudo dmidecode -t processor | grep Version
Version: Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz
на хост в Ubuntu x86_64 с 17.10 с лязгом построен ядре Linux 4.15.7 и clang-причине драйвер nvidia geforce для видеокарты GTX 860М 390.25 вещно - моя успешных исследований и опыт : для всех подробные журналы (на каждом этапе), вы можете прочитать мой ответ для кода llvm-clang в/ядра Linux вопрос здесь :строение ядра Linux с помощью llvm/clang в.
Примечание 2: предупреждение лязгом более педантичны, чем GCC как я видел. Но на данный момент, чтобы получить драйвера ядра/Видеокарта NVIDIA и работает, я игнорировал их, чтобы увидеть, если они не серьезные (пока их нет).
Примечание 2: ради универсальности, я повторил выше с последующими версиями ядра (4.15.10 и [с f15], что последний по состоянию на середину марта 2018 года) и последние графические драйвера nvidia geforce для видеокарты GTX v390.42 что последний по состоянию на середину марта 2018 года - оба они построены с использованием clang как ранее после обновления ядра 4.15.11 код в прерывание работы тик логикой и видео инструкция по обновлению логики, как я сделал выше для 4.15.7, и, наконец, установлен на моей системе оборудования напрямую (не в qemu/KVM в экспериментах это время, так как ранее 4.15.7 ядра пришли успешно проработав на прерывание работы тик логикой и видео инструкция по обновлению логики). С этим, опять же, в Ubuntu x86_64 с 17.10 удачно подошел на мой аппаратная система, на clang-причине ядра 4.15.11 и clang-построен последний драйвер nvidia v390.42, как это делали в предыдущем случае 4.15.7 ядра и драйвера v390 от NVIDIA.25.
на хост в Ubuntu x86_64 с 17.10 с лязгом построен ядре Linux 4.15.7 и clang-причине драйвер nvidia geforce для видеокарты GTX 860М 390.25 вещно - моя успешных исследований и опыт :
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 17.10
Release: 17.10
Codename: artful
$ cat /proc/version
Linux version 4.15.11 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #2 SMP Tue Mar 20 05:37:06 PDT 2018
$ eclang /lib/modules/4.15.11/build/vmlinux | grep Linux
++ strings -a /lib/modules/4.15.11/build/vmlinux
++ grep clang
Linux version 4.15.11 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #2 SMP Tue Mar 20 05:37:06 PDT 2018
$ sudo dmidecode -t system | grep "Manufacturer:\|Version"
Manufacturer: LENOVO
Version: Lenovo Y50-70 Touch
$ dmesg | grep NVIDIA
[ 19.491452] nvidia: module license 'NVIDIA' taints kernel.
[ 19.499360] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 390.42 Sat Mar 3 04:10:22 PST 2018 (using threaded interrupts)
[ 19.542830] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 390.42 Sat Mar 3 03:30:48 PST 2018
$ nvidia-smi
Tue Mar 20 22:15:00 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.42 Driver Version: 390.42 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 860M Off | 00000000:01:00.0 Off | N/A |
| N/A 52C P8 N/A / N/A | 451MiB / 4046MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
$ glxinfo | grep NVIDIA
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
OpenGL core profile version string: 4.5.0 NVIDIA 390.42
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL version string: 4.6.0 NVIDIA 390.42
OpenGL shading language version string: 4.60 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 390.42
$ lsmod | grep nv
nvidia_uvm 815104 0
nvidia_drm 24576 2
nvidia_modeset 1105920 5 nvidia_drm
nvidia 14368768 334 nvidia_uvm,nvidia_modeset
ipmi_msghandler 61440 2 nvidia,ipmi_devintf
drm 454656 6 nvidia_drm,i915,drm_kms_helper
$ ~/nvidia-driver-compiler.sh
++ head -1
+++ uname -r
++ eclang /lib/modules/4.15.11/kernel/drivers/video/nvidia.ko
+++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia.ko
+++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
++ head -1
+++ uname -r
++ eclang /lib/modules/4.15.11/kernel/drivers/video/nvidia-drm.ko
+++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-drm.ko
+++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
+++ uname -r
++ head -1
++ eclang /lib/modules/4.15.11/kernel/drivers/video/nvidia-modeset.ko
+++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-modeset.ko
+++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
+++ uname -r
++ head -1
++ eclang /lib/modules/4.15.11/kernel/drivers/video/nvidia-uvm.ko
+++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-uvm.ko
+++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
$ ~/nvidia_driver_modules_version.sh
++ grep '^version='
+++ uname -r
++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia.ko
version=390.42
++ grep '^version='
+++ uname -r
++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-drm.ko
version=390.42
++ grep '^version='
+++ uname -r
++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-uvm.ko
+++ uname -r
++ grep '^version='
++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-modeset.ko
version=390.42
этап 1: проработав с qemu/KVM в начале, я хотел заиметь фактически не дело в воспитании лязг-построены ядра вверх. Итак, я попытался поднять лязг-построен ядре Linux изображения 4.15.7 используя архитектуру x86_64 по умолчанию config, чтобы начать с, а также лязг-причине busybox x86_64 для корневой файловой системы (файловой), на qemu/KVM в архитектуру x86_64. Это сработало. У меня есть Shell и busybox утилиты работали и так далее.
этап 1:
$ strings -a defconfig-linux-4.15.7/linux-4.15.7/vmlinux | grep "clang version" | head -1
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #1 SMP Fri Mar 2 21:15:24 PST 2018
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 17.10
Release: 17.10
Codename: artful
$ clang -v
clang version 5.0.0-3 (tags/RELEASE_500/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
в эмуляторе qemu/KVM и оценки, 4.15.7 ядра Linux(x86_64 с defconfig)/busybox и 64-бит :
/ # cat /proc/version
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #1 SMP Fri Mar 2 21:15:24 PST 2018
/ #
/ # uname -arv
Linux (none) 4.15.7 #1 SMP Fri Mar 2 21:15:24 PST 2018 x86_64 GNU/Linux
/ #
/ #
/ # strings -a bin/busybox | grep "clang version"
clang version 5.0.0-3 (tags/RELEASE_500/final)
/ #
/ #
/ # dmesg | grep QEMU
[ 0.000000] DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
[ 0.024000] smpboot: CPU0: Intel QEMU Virtual CPU version 2.5+ (family: 0x6, model: 0x6, stepping: 0x3)
[ 0.337415] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
[ 0.339072] scsi 1:0:0:0: CD-ROM QEMU QEMU DVD-ROM 2.5+ PQ: 0 ANSI: 5
/ #
/ #
в эмуляторе qemu/KVM и оценки, 4.15.7 ядра Linux(x86_64 с defconfig)/busybox и 64-бит : с выше первоначального успеха с ядром defconfig, я взял хост в Ubuntu ядра 17.10 config и восстановлен ядром Linux изображения 4.15.7. С этим я все остальное busybox и том же и пытался вывести их на qemu/KVM как раньше - это не работает. В результате [F8] и [F9] и kernel panic. Я заглянул в дамп стека ядра.
я заметил, что первый выпуск был в пределах kernel irq work tick логика. Тогда следующий вопрос был с kernel live instruction update логика. Я работала на них обоих. Перестройка ядра. Попробовал еще раз с qemu/KVM-переключателей - есть оболочка, никакой паники на этот раз. Следующий шаг-установка модулей ядра и модулей драйвера nvidia. Я сделал это, но в этот раз, все модули ядра, модуль драйвера nvidia в Ubuntu и в qemu/KVM и показали некоторые цветные точки и застрял - в основном из-за разницы между аппаратной и виртуальной гостя. Итак, я хотел бы попробовать только с драйвер nvidia, так как он был больше всего беспокоит, как та, что я использую на моем хосте для графики. Так что я включил (не установить) модули драйверов NVIDIA в busybox и и файловой системы пытались воспитать в qemu/KVM как обычно - в этот раз, была некоторая паника ядра из-за файловой системы-не нашли, хотя было файловой системы.
Итак, я попытался сжать все драйвера nvidia модулей на молнию и включить его в образ rootfs. Но, когда я попытался извлечь zip С В qemu/KVM в гостях, там был [от f13]. Так, я пытался построить 10г виртуального диска qemu и установить образ rootfs в том, что диск, чтобы рассмотреть пространство озабоченности, но, через некоторое время мне позвонил этот, как я был больше заинтересован в получении лязг-встроенный драйвер для nvidia на реальной системе, скобяными, чем на эмулироваться в qemu/KVM в среду (я знаю, что это не имеет реального видеокарт NVIDIA доступен через GPU-сквозной, так что он может проверить лязг-встроенный в NVIDIA 390.25 водителя, прежде чем я мог попробовать, что на хозяина реальной системе аппаратно видеокартой но все равно дал ему шанс просто, чтобы увидеть, если лязг-встроенный драйвер nvidia проявляет каких-либо проблем в эмуляторе qemu/KVM и при загрузке).
в эмуляторе qemu/KVM и оценки, 4.15.7 ядра Linux(x86_64 с defconfig)/busybox и 64-бит :
/ # cat /proc/version
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #20 SMP Sat Mar 3 20:46:15 PST 2018
/ #
/ #
/ # uname -arv
Linux (none) 4.15.7 #20 SMP Sat Mar 3 20:46:15 PST 2018 x86_64 GNU/Linux
/ #
/ #
/ #
/ # dmesg | grep QEMU
[ 0.000000] DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
[ 0.024000] smpboot: CPU0: Intel QEMU Virtual CPU version 2.5+ (family: 0x6, model: 0x6, stepping: 0x3)
[ 0.340776] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
[ 0.343135] scsi 1:0:0:0: CD-ROM QEMU QEMU DVD-ROM 2.5+ PQ: 0 ANSI: 5
/ #
/ # strings -a bin/busybox | grep "clang version"
clang version 5.0.0-3 (tags/RELEASE_500/final)
/ #
в эмуляторе qemu/KVM и оценки, 4.15.7 ядра Linux(x86_64 с defconfig)/busybox и 64-бит : как мой основной и реальной целью был мой хозяин (убунту 17.10), я установил этот лязг-собранное ядро (с выше вопросы, работали по) и драйверы NVIDIA 390.25 на мой хост-системы непосредственно. Перезагружается моя система. БАМ! У меня в Ubuntu x86_64 с 17.10 и работает с лязгом построенный ядра 4.15.7 и clang-встроенный драйвер nvidia 390.25 без каких-либо проблем.
[dиода d17]на хост в Ubuntu x86_64 с 17.10 с лязгом построен ядре Linux 4.15.7 и clang-причине драйвер nvidia geforce для видеокарты GTX 860М 390.25 вещно - моя успешных исследований и опыт : [!dиода d17]$ dmesg | grep clang
[ 0.000000] Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #20 SMP Sat Mar 3 20:46:15 PST 2018
$ cat /proc/version
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #20 SMP Sat Mar 3 20:46:15 PST 2018
$ uname -arv
Linux exp 4.15.7 #20 SMP Sat Mar 3 20:46:15 PST 2018 x86_64 x86_64 x86_64 GNU/Linux
$ nvidia-smi
Sun Mar 4 18:15:39 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.25 Driver Version: 390.25 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 860M Off | 00000000:01:00.0 Off | N/A |
| N/A 54C P0 N/A / N/A | 370MiB / 4046MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
exp@exp:~$ dmesg | grep NVIDIA | grep 390.25
[ 17.643496] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 390.25 Wed Jan 24 20:02:43 PST 2018 (using threaded interrupts)
[ 17.689835] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 390.25 Wed Jan 24 19:29:37 PST 2018
$ lsmod | grep nvidia
nvidia_uvm 815104 0
nvidia_drm 24576 2
nvidia_modeset 1097728 5 nvidia_drm
nvidia 14352384 334 nvidia_uvm,nvidia_modeset
ipmi_msghandler 61440 2 nvidia,ipmi_devintf
drm 454656 6 nvidia_drm,i915,drm_kms_helper
# clang-built Linux kernel 4.15.7 image and Nvidia 390.25 driver modules having clang compiler specific
# metadata within them.
#
$ eclang /lib/modules/4.15.7/build/vmlinux | grep "Linux"
++ strings -a /lib/modules/4.15.7/build/vmlinux
++ grep clang
Linux version 4.15.7 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #20 SMP Sat Mar 3 20:46:15 PST 2018
exp@exp:~$ eclang /lib/modules/4.15.7/kernel/drivers/video/nvidia.ko | head -1
++ strings -a /lib/modules/4.15.7/kernel/drivers/video/nvidia.ko
++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
$ eclang /lib/modules/4.15.7/kernel/drivers/video/nvidia-drm.ko | head -1
++ strings -a /lib/modules/4.15.7/kernel/drivers/video/nvidia-drm.ko
++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
$ eclang /lib/modules/4.15.7/kernel/drivers/video/nvidia-uvm.ko | head -1
++ strings -a /lib/modules/4.15.7/kernel/drivers/video/nvidia-uvm.ko
++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
$ eclang /lib/modules/4.15.7/kernel/drivers/video/nvidia-modeset.ko | head -1
++ strings -a /lib/modules/4.15.7/kernel/drivers/video/nvidia-modeset.ko
++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
# DMI specific hardware information - verifies and confirms the physical hardware used
# instead of QEMU or any other virtual platform for running clang-built kernel and
# Nvidia 390.25 driver.
#
$ sudo dmidecode -t bios | grep Vendor
Vendor: LENOVO
$ sudo dmidecode -t system | grep "Manufacturer:\|Version"
Manufacturer: LENOVO
Version: Lenovo Y50-70 Touch
$ sudo dmidecode -t processor | grep Version
Version: Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz
на хост в Ubuntu x86_64 с 17.10 с лязгом построен ядре Linux 4.15.7 и clang-причине драйвер nvidia geforce для видеокарты GTX 860М 390.25 вещно - моя успешных исследований и опыт : для всех подробные журналы (на каждом этапе), вы можете прочитать мой ответ для кода llvm-clang в/ядра Linux вопрос здесь :строение ядра Linux с помощью llvm/clang в.
Примечание 2: предупреждение лязгом более педантичны, чем GCC как я видел. Но на данный момент, чтобы получить драйвера ядра/Видеокарта NVIDIA и работает, я игнорировал их, чтобы увидеть, если они не серьезные (пока их нет).
Примечание 2: ради универсальности, я повторил выше с последующими версиями ядра (4.15.10 и [с f15], что последний по состоянию на середину марта 2018 года) и последние графические драйвера nvidia geforce для видеокарты GTX v390.42 что последний по состоянию на середину марта 2018 года - оба они построены с использованием clang как ранее после обновления ядра 4.15.11 код в прерывание работы тик логикой и видео инструкция по обновлению логики, как я сделал выше для 4.15.7, и, наконец, установлен на моей системе оборудования напрямую (не в qemu/KVM в экспериментах это время, так как ранее 4.15.7 ядра пришли успешно проработав на прерывание работы тик логикой и видео инструкция по обновлению логики). С этим, опять же, в Ubuntu x86_64 с 17.10 удачно подошел на мой аппаратная система, на clang-причине ядра 4.15.11 и clang-построен последний драйвер nvidia v390.42, как это делали в предыдущем случае 4.15.7 ядра и драйвера v390 от NVIDIA.25.
на хост в Ubuntu x86_64 с 17.10 с лязгом построен ядре Linux 4.15.7 и clang-причине драйвер nvidia geforce для видеокарты GTX 860М 390.25 вещно - моя успешных исследований и опыт :
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 17.10
Release: 17.10
Codename: artful
$ cat /proc/version
Linux version 4.15.11 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #2 SMP Tue Mar 20 05:37:06 PDT 2018
$ eclang /lib/modules/4.15.11/build/vmlinux | grep Linux
++ strings -a /lib/modules/4.15.11/build/vmlinux
++ grep clang
Linux version 4.15.11 (exp@exp) (clang version 5.0.0-3 (tags/RELEASE_500/final)) #2 SMP Tue Mar 20 05:37:06 PDT 2018
$ sudo dmidecode -t system | grep "Manufacturer:\|Version"
Manufacturer: LENOVO
Version: Lenovo Y50-70 Touch
$ dmesg | grep NVIDIA
[ 19.491452] nvidia: module license 'NVIDIA' taints kernel.
[ 19.499360] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 390.42 Sat Mar 3 04:10:22 PST 2018 (using threaded interrupts)
[ 19.542830] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 390.42 Sat Mar 3 03:30:48 PST 2018
$ nvidia-smi
Tue Mar 20 22:15:00 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.42 Driver Version: 390.42 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 860M Off | 00000000:01:00.0 Off | N/A |
| N/A 52C P8 N/A / N/A | 451MiB / 4046MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
$ glxinfo | grep NVIDIA
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
OpenGL core profile version string: 4.5.0 NVIDIA 390.42
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL version string: 4.6.0 NVIDIA 390.42
OpenGL shading language version string: 4.60 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 390.42
$ lsmod | grep nv
nvidia_uvm 815104 0
nvidia_drm 24576 2
nvidia_modeset 1105920 5 nvidia_drm
nvidia 14368768 334 nvidia_uvm,nvidia_modeset
ipmi_msghandler 61440 2 nvidia,ipmi_devintf
drm 454656 6 nvidia_drm,i915,drm_kms_helper
$ ~/nvidia-driver-compiler.sh
++ head -1
+++ uname -r
++ eclang /lib/modules/4.15.11/kernel/drivers/video/nvidia.ko
+++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia.ko
+++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
++ head -1
+++ uname -r
++ eclang /lib/modules/4.15.11/kernel/drivers/video/nvidia-drm.ko
+++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-drm.ko
+++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
+++ uname -r
++ head -1
++ eclang /lib/modules/4.15.11/kernel/drivers/video/nvidia-modeset.ko
+++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-modeset.ko
+++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
+++ uname -r
++ head -1
++ eclang /lib/modules/4.15.11/kernel/drivers/video/nvidia-uvm.ko
+++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-uvm.ko
+++ grep clang
clang version 5.0.0-3 (tags/RELEASE_500/final)
$ ~/nvidia_driver_modules_version.sh
++ grep '^version='
+++ uname -r
++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia.ko
version=390.42
++ grep '^version='
+++ uname -r
++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-drm.ko
version=390.42
++ grep '^version='
+++ uname -r
++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-uvm.ko
+++ uname -r
++ grep '^version='
++ strings -a /lib/modules/4.15.11/kernel/drivers/video/nvidia-modeset.ko
version=390.42