Почему ядро ​​Linux не загружается на моем новом процессоре Intel i7-6500U?

9

Я знаю, что трудно изолировать процессор, но ошибки, которые я вижу, наводят на мысль, что это проблема.

Это определенно не является неисправной / сломанной аппаратной проблемой . Последние несколько дней я работал под управлением Windows 10, и эта штука работает быстро! Нет сбоя. Что еще более важно, я запустил проверку памяти Windows. Память все хорошо.

технические характеристики машины

Машина новенького Lenovo Yoga 710 15 "

x64
Intel i7-6500 CPU @ 2.50 GHz, 2601 Mhz, 2 Cores, 4 Logical Processors
SMBIOS Version 2.8
BIOS Mode UEFI
16.0 GB DDR4 Ram
256 MB SSD

изоляция к ядру Linux (?)

Я видел одинаковые проблемы на обоих

  • Archlinux-2016.08.01-dual.iso
  • убунт-гном-16.04.1-настольный amd64.iso

Для Arch - проблема возникала только периодически при загрузке с флешки. Мне удалось установить Arch на раздел ext4 объемом 100 ГБ на диске. Эта установка имеет ту же проблему периодически (например, 90% времени) во время загрузки. Если я прошёл загрузку, то проблема появляется случайно после первой пары команд терминала, которые я выполняю, что в итоге приводит к полной тупиковой ситуации.

Для Ubuntu - флешка даже не загружается. Меня сразу же остановили эти самые ошибки. Тупик ...

Так много ошибок ...

Журнал заполнен ошибками, связанными с памятью, когда это происходит, но я вижу следующие ключевые ошибки:

  • General protection fault 0000[#1] PREEMPT SMP
  • RIP kmem_cache_alloc
  • RIP kmem_cache_alloc_trace

Я видел несколько одинаковых трассировок стека несколько раз для этих ошибок:

rbt_memtype_copy_nth_element
on_each_cpu
flusH_tbl_kernel_range
__purge_umap_area_lazy
um_unmam_aliases
change_page_attr_set_clr
set_memory_ro
frob_text.isra
module_enable_ro

kobject_create
kobject_create_and_add
load_module
__symbol_put
kernel_read
sys_finit_module
entry_SYSCALL_64_fastpath

kmem_cache_alloc_trace
allocate_cgrp_cset_links
...
sys_write
entry_SYSCALL-64_fastpath

Linux также продолжает обещать, что это решает проблему

Исправление рекурсивной ошибки, но необходима перезагрузка!

Хотелось бы..

Intel Ucode

Я также попытался установить intel-ucodeпакет в моей установке Arch. Я видел в dmesgжурналах, что микрокоды были обновлены, но это, к сожалению, не решило мою проблему.

В чем может быть проблема? Как это можно исправить?


РЕДАКТИРОВАТЬ

Дополнительное примечание.

Сообщения об ошибках общей защиты и сообщения типа «обнаружение блокировки» обычно ссылаются на ЦП. Я видел CPU0, CPU1, CPU2и CPU3в этих сообщениях. Кажется, что что-то заставляет процессоры не ладить, как будто они все в тупике, пытаясь очистить кеш-память или что-то в этом роде.


EDIT2

BIOS упоминается по ошибке

Я вижу эту информацию в некоторых ошибках:

LENOVO 80U01LENOVO YOGA710-1 BIOS OGCN20WW(v1.04) 6/30/2016

Не уверен, что это поможет профессионалу понять проблему ...


EDIT3

maxcpus = 1

Я искал варианты отладки в документации параметров ядра и нашелmaxcpus

Если я установлю максимальное число процессоров равным 1, то проблема исчезнет. Так что может показаться, что проблема в каком-то нарушении общей кеш-памяти.


EDIT3

maxcpus = 1 + Gnome = снова сломан

Хотя maxcpus=1казалось, что система работает только с одним процессором, я установил gnome и запустилsystemctl enable gdm.service

Теперь, когда я перезагружаюсь, я снова получаю все свои ошибки, но на этот раз они все происходят на CPU0

Таким образом, кажется, что что-то все еще вызывает нарушение памяти даже с 1 CPU.


EDIT4

nolapic

Таким образом, используя, nolapicкажется, получить все "работает"

НО, используя nolapic, я эффективно отключаю свой другой ЦП и всю многопоточность в 1 работающем ЦП.

Я пытаюсь использовать это для OpenMP, и после загрузки с nolapicOpenMP и ядром Linux можно найти только 1 поток, 1 процессор. Это отстой!

Я тоже пробовал intel_idle.max_cstate=0и 1, 2и т. Д. Но это не решает проблему загрузки.

Что еще может заставить ядро ​​не использовать мою многоядерную машину?

tmsimont
источник
Вы пытались установить драйвер nvidia для NVIDIA GeForce 940MX?
Пол Нордин
Нет, у меня нет - возможно, я смогу снова загрузить USB-флешку Arch, но это довольно сложно. Есть ли способ передать параметр ядра в сценарии загрузки, чтобы временно отключить gpu, чтобы проверить это? (Я попробовал nomodesetи nouveau.mode=0- не уверен, что это похоже)
tmsimont
хм, я посмотрел документы по параметрам ядра Linux и нашел maxcpus- я установил его на 1, и проблема исчезла ... Но теперь я могу использовать только один процессор? :(
tmsimont
Это странно. Я все еще подозреваю, что основная проблема связана с нуво. Попробуйте параметры nomodeset nouveau.modeset=0вместе, и если это не сработает, попробуйтеnomodeset i915.modeset=0 nouveau.modeset=0
Paul Nordin
1
Я бы попробовал снова загрузить Ubuntu, чтобы добавить другую версию ядра. Сначала убедитесь, что вы включили устаревший режим в BIOS, или, по крайней мере, отключите безопасную загрузку и быструю загрузку или что-то подобное, если вы этого еще не сделали.
Пол Нордин

Ответы:

5

Оказывается, проблема была i2c_hid

Это похоже на драйвер тачпада. По некоторым причинам, когда я отключаю его, я все еще могу использовать свой тачпад. Возможно, сенсорный экран на ноутбуке тоже использует этот драйвер, потому что он не работает.

Во всяком случае, я не люблю испачкать экран ноутбука отпечатками пальцев ... Пока, пока i2c_hid!

Я исправил это, добавив это к параметрам ядра: modprobe.blacklist=i2c_hid

Хотя nolapicи работал, он отключил все, кроме 1 ядра в процессорах.

Я очень рекомендую кому-либо еще не использовать apci=offили nolapicпо этой причине.

Использование этих параметров является ядерным оружием, которое может заставить вашу машину работать, но вы потеряете много производительности и / или устройств ввода-вывода в качестве сопутствующего ущерба. Это хорошая отправная точка для загрузки, а затем вы можете залить журнал, как я, чтобы проанализировать неудачные загрузки.

Удачи тем, кто найдет это.

tmsimont
источник
3
Большое спасибо за то, что вы поделились своими находками! На основании вашей информации я обнаружил, что отключение hid_sensor_hubдостаточно и сенсорный экран также можно использовать (см. Мой ответ ниже для более подробной информации).
Цзякай
2

Все эти ошибки похожи на те, которые я видел с плохими модулями ядра.

На ubuntuforums есть кто-то, кто утверждает, что загрузил Ubuntu на 710-14ISK, отключив acpi (добавьте acpi=offв настройки ядра). https://ubuntuforums.org/showthread.php?t=2329448

Другой клиент на форумах lenovo сказал, что у него возникли проблемы с загрузкой fedora 24, и проследил проблему до прошивки Broadcom: https://forums.lenovo.com/t5/Linux-Discussion/Yoga-710-How-to-install-Linux / TD-п / 3361544

Попробуйте внести в черный список модули broadcom и nouveau (оставьте их невостребованными) и загрузитесь с выключенным acpi. У меня были похожие журналы, когда у меня в старом acer был плохо функционирующий модуль ralink: внесение в черный список модуля позволило мне загрузиться и остановило панику ядра, но оставило меня без Wi-Fi.

PS. Я бы добавил все это в комментарии, но у меня недостаточно репутации, чтобы комментировать (извините).

Schives
источник
Я думаю, что вы к чему-то. acpi=offсделал ошибку исчезла, но это также отключает мою клавиатуру. Похоже, что с acpi есть более детальные опции, поэтому я посмотрю, смогу ли я остановить ошибки при сохранении клавиатуры :)
tmsimont
1
хм, может быть, просто отключить некоторые части Acpi это путь. Вариантов довольно много, но я бы попробовал acpi=htсначала. help.ubuntu.com/community/BootOptions (смотрите в разделе «Общие параметры ядра») или для более полного списка: kernel.org/doc/Documentation/kernel-parameters.txt
Schives
nolapicработал для меня, и я могу загрузить, но тогда я могу получить доступ только к одному из моих процессоров. Я пытаюсь использовать этот ноутбук для разработки программ OpenMP, поэтому не работает только один процессор. Кажется, что в том, как ядро ​​пытается использовать мои несколько процессоров, просто что-то не так. Тот факт, что nolapic«исправляет» загрузку, может быть совпадением только из-за того, что она ограничивает ядро ​​до 1 ЦП
tmsimont
Еще одно замечание - это хорошо работает в Windows 10. Могу ли я что-нибудь сделать в Windows, чтобы узнать больше обо всем, что ядро ​​Windows делает с процессорами, которые я мог бы реплицировать в Linux?
tmsimont
2

У меня были похожие проблемы с последними ядрами (4.7.x до 4.8.2) на моем yoga710 с i5-6200U. Отключение i2c_h2d работает для меня. Я также обнаружил, что linux-lts (в настоящее время 4.4.25), кажется, работает хорошо, включая сенсорную панель и сенсорный экран.

Изменить: экспериментируя с кодом драйвера, я обнаружил, что это действительно вызвано hid_sensor_hubдрайвером, поэтому внесение в черный список решает проблему, и сенсорный экран также можно использовать. Безусловно, отключение делает датчики (например, акселерометр) нераспознанными. Я пытался исправить драйвер; Однако я еще не нашел способ.

Jiakai
источник
0

Для поддержки Skylake вам нужно ядро ​​Linux версии 4.4 или выше. Проверьте следующую ссылку в Arch Linux wiki. https://wiki.archlinux.org/index.php/intel_graphics#Skylake_support

Петр Скарпетис
источник
archlinux-2016.08.01-dual.iso содержит 4.6.4, так что должно работать
maxf
Это глупый вопрос, но вы запустили memtest на своем компьютере? memtest.org
Питер Скарпетис
1
@ Питер Не глупый, и да, я сделал. Нет проблем с памятью. Также да, maxf прав, у меня есть 4.6.4
tmsimont