Ещё один "установщик" archlinux [UKI] и какие есть "подводные камни" (kexec и др.)

Всё, что не по теме форума -- сюда
Ответить
beisic
Сообщения: 42
Зарегистрирован: 16.09.2022

#

Да, при использовании команды:
sudo kexec -l /boot/vmlinuz-linux --initrd=/boot/initramfs-linux.img --reuse-cmdline && sudo systemctl kexec
Сначала "ломается" выход звука через pavucontrol на колонки монитора через HDMI. Если запустить любой видеохостинг (youtube, rutube и т.д.) появляется "поток звука" и тогда в настройках его можно "установить", но при остановке или перезапуске видеохостинга всё "слетает", то есть настройки не сохраняются.
Затем при дальнейшем использовании kexec - пропал интернет - пишет "запустите device".
lsmodprobe | greb e1000e - его не находит. Да и, вообще, "пропало" очень много модулей ядра.
Переустановил систему ( с UKI -ядром). Работала нормально, пока опять не попробовал kexec.
А, поначалу думал "может где-то мой косяк", но теперь при первом же использовании kexec - опять "заморочки" со звуком - не сохраняется выход звука через HDMI. Но эта проблема решаема:
  $ pacmd list-sinks
2 sink(s) available.
  * index: 0
	name: <alsa_output.pci-0000_01_00.1.hdmi-stereo >
	driver: <module-alsa-card.c>
	flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
	state: SUSPENDED
	suspend cause: IDLE
	priority: 9030
	volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
	        balance 0.00
	base volume: 65536 / 100% / 0.00 dB
	volume steps: 65537
	muted: no
	current latency: 0.00 ms
	max request: 0 KiB
	max rewind: 0 KiB
	monitor source: 0
	sample spec: s16le 2-канальный 4410
	channel map: front-left,front-right
	             Стерео
	used by: 0
	linked by: 0
	configured latency: 0.00 ms; range is 0.50 .. 1999.82 ms
	card: 0 <alsa_card.pci-0000_01_00.1>
	module: 6
	properties:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "LG ULTRAWIDE"
		alsa.id = "HDMI 0"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "3"
		alsa.card = "1"
		alsa.card_name = "HDA ATI HDMI"
		alsa.long_card_name = "HDA ATI HDMI at 0xf7e60000 irq 138"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:01:00.1"
		sysfs.path = "/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1"
		device.bus = "pci"
		device.vendor.id = "1002"
		device.vendor.name = "Advanced Micro Devices, Inc. [AMD/ATI]"
		device.product.id = "aab0"
		device.product.name = "Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]"
		device.string = "hdmi:1"
		device.buffering.buffer_size = "352768"
		device.buffering.fragment_size = "176384"
		device.access_mode = "mmap+timer"
		device.profile.name = "hdmi-stereo"
		device.profile.description = "Digital Stereo (HDMI)"
		device.description = "Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series] Digital Stereo (HDMI)"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	ports:
		hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: yes)
			properties:
				device.icon_name = "video-display"
				device.product.name = "LG ULTRAWIDE"
	active port: <hdmi-output-0>
    index: 1
	name: <alsa_output.pci-0000_00_1f.3.iec958-stereo>
	driver: <module-alsa-card.c>
	flags: HARDWARE HW_MUTE_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
	state: SUSPENDED
	suspend cause: IDLE
	priority: 9037
	volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
	        balance 0.00
	base volume: 65536 / 100% / 0.00 dB
	volume steps: 65537
	muted: no
	current latency: 0.00 ms
	max request: 0 KiB
	max rewind: 0 KiB
	monitor source: 1
	sample spec: s16le 2-канальный 4410
	channel map: front-left,front-right
	             Стерео
	used by: 0
	linked by: 0
	configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
	card: 1 <alsa_card.pci-0000_00_1f.3>
	module: 7
	properties:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "ALC892 Digital"
		alsa.id = "ALC892 Digital"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "1"
		alsa.card = "0"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0xf7f40000 irq 137"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:00:1f.3"
		sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
		device.bus = "pci"
		device.vendor.id = "8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "a2f0"
		device.product.name = "200 Series PCH HD Audio"
		device.form_factor = "internal"
		device.string = "iec958:0"
		device.buffering.buffer_size = "352800"
		device.buffering.fragment_size = "176400"
		device.access_mode = "mmap+timer"
		device.profile.name = "iec958-stereo"
		device.profile.description = "Цифровой стерео (IEC958)"
		device.description = "Встроенное аудио Цифровой стерео (IEC958)"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	ports:
		iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
			properties:
				
	active port: <iec958-stereo-output>
У index: 0 с выходом на hdmi-stereo сейчас стоит звёздочка. Звездочка была на:
alsa_output.pci-0000_00_1f.3.iec958-stereo.
Для "исправления" в файле /etc/pulse/default.pa добавил строку :
set-default-sink alsa_output.pci-0000_01_00.1.hdmi-stereo
И звук "наладился".
И после kexec "посыпались" ошибки. Сейчас - после обновления и "нормального" reboot их стало меньше:
 $   systemctl --failed
  UNIT LOAD ACTIVE SUB DESCRIPTION

0 loaded units listed.
beisic ~ $   journalctl -b -p err
дек 27 10:49:13 pc kernel: x86/cpu: SGX disabled by BIOS.
дек 27 10:49:13 pc kernel: usb 1-3: device descriptor read/64, error -110 
Последний раз редактировалось beisic 05.01.2024 11:44, всего редактировалось 1 раз.
vasek
Сообщения: 455
Зарегистрирован: 31.08.2022

#

Нужно понимать для чего нужен kexec …. просто так он не используется.
kexec это механизм ядра, позволяющий загрузить ядро linux поверх уже запущенного. Но, главное, при этом пропускается выполнение аппаратной инициализации и передаётся управление новому ядру … а это значит, что некоторые устройства не полностью повторно инициализируются и возжны проблемы.
И в DOC прямо написано, что некоторые устройства могут не работать после того как kexec загрузит новое ядро.
И нужно понимать, что в обычных условиях kexec не исползуется. Как правило, kexec используется при
- аварийном восстановлении системы
- получения дампа упавшей системы
- обновление ядра без перезагрузки (например, на серверах)
- тестировании ядра
То есть kexec не является заменой для обычной перезагрузки системы, а является дополнительным инструментом для выполнения специфических задач.

Ошибки не исчезают с опытом - они просто умнеют

beisic
Сообщения: 42
Зарегистрирован: 16.09.2022

#

Всё верно: обновляется только ядро. А установленное оборудование и устройства не "проходят" инициализации. И грузится новое ядро на "старые фишки" не получивших обновления, заложенных в свежем ядре. Видимо ролинг-дистрибутивы для kexec не подходят, и про использовании для аварийного восстановления - сомневаюсь. Чего только не пробовал - даже "бубен" );. Только это было [UKI] ядро. И конечно "экспериментировал" на старом "железе".
Старый NVMe-диск "укочевал" на другую мать. Так сказать - без последствий.
Поэтому и "рекомендация", - на свой страх и риск.
И про ошибки: SGX disabled by BIOS - мать уже не поддерживает видеовыходы с платы, только видеокарта. device descriptor read/64, error -110 - комп на 5 минут выдернуть из сети (согласно многочисленным рекомендациям в инете).
vasek
Сообщения: 455
Зарегистрирован: 31.08.2022

#

beisic:для аварийного восстановления - сомневаюсь. Чего только не пробовал - даже "бубен" )
Рекомендую использовать "волшебные клавиши" - магическое сочетание клавиш Alt + SysRq + ... - низкоуровенное сочетание клавиш, реализованных в ядре и которые могут быть использованы для отладки и восстановления зависшей системы.
Но для этого необходимо установить kernel.sysrq=1
Использовние:
Перегрузка: Alt + SysRq + R + E + I + S + U + B
Выключение: Alt + SysRq + R + E + I + S + U + O
Примерно так - зажать правой рукой клавиши Alt+SysRq и с интервалом в 2-3 секунды нажать последовательно левой рукой другие клавиши.

Ошибки не исчезают с опытом - они просто умнеют

beisic
Сообщения: 42
Зарегистрирован: 16.09.2022

#

vasek:для отладки и восстановления зависшей системы.
Видимо мы не поняли друг друга. Система не зависшая - она "прекрасно работает" перегружается и т.д. Просто у неё нет выхода в интернет. Нет половины модулей, в том числе и e1000e отвечающей за "подключение", "поднятие" интернета.
Войти в систему, чрутнутся - нет проблем, но ни обновление ядра, установка, перестановка не "прокатывают, потому что драйвера e1000e просто нет в системе и pacman -Syyuu и др. команды не прокатывают - пишет "идёт синхронизация и тут же ошибка - невозможно синхронизировать и т.д. и т.п. нет интернета и все. Ни одного пакета не поставить. Нет интернета. Как-то, где-то "притащить "новое ядро" или драйвер без "синхронизации" системы не "впихаешь", а так, хоть "заксехекайся" - прекрасно перегружается и запускается. Просто плюнул и переставил систему - это проще, чем пытаться что-то восстановить.
beisic
Сообщения: 42
Зарегистрирован: 16.09.2022

#

beisic:Просто плюнул и переставил систему
Но, при следующем обновлении ядра, опять исчез интернет, т.е. модуля e1000e опять НЕТ. И нет интернета!!!
Но система, как обычно перегружается, загружается и работает. Скачал на флешку уже вышедший новый archboot от 31.12.2023. Загрузился с archboot-latest-x86_64.efi в "контейнер" с рабочим столом XFCE4, где есть браузер, терминал, gparted и т.д. И "окошко" установщика archboot. Через это "окошко" прошел: монтирование разделов от swap, efi, boot, root, home. Установку пакетов, настройку (там настройки уже были, т.к. система-то уже установлена), самое главное установился линукс (ядро). На пункте установщика появились новые пункты, то есть кроме grub и sd-stub появились:
systemd-boot, ещё .... и refind. её и выбрал. И дальше: выход из "окошка", выход из контейнера с reboot.
И при F-12 выбрал refind и по окончании окно ввода пароля sddm и ВОТ она опять работающая система с интернетом.
И очень много вопросов; как сохранить e1000e ? Куда в какой файл "запихнуть" эти модули:
$   sudo hwdetect --show-modules
ACPI     : acpi_pad video 
BLOCK    : xhci-pci-renesas xhci-pci uas usb-storage 
CPUFREQ  : acpi-cpufreq 
CRYPTO   : aesni-intel crc32-pclmul crc32c-intel crct10dif-pclmul ghash-clmulni-intel polyval-clmulni sha1-ssse3 sha256-ssse3 sha512-ssse3 cryptd crypto_simd polyval-generic gf128mul 
DRM      : amdgpu amdxcp drm_display_helper drm_buddy drm_exec drm_suballoc_helper drm_ttm_helper radeon gpu-sched ttm 
EVENTS   : intel-cstate intel-uncore rapl 
HWMON    : coretemp 
I2C      : i2c-algo-bit i2c-i801 i2c-smbus 
INPUT    : joydev mousedev usbhid mac_hid 
KVM      : kvm-intel kvm 
MEDIA    : cec 
MEI      : mei_hdcp mei mei_pxp 
MFD      : intel_pmc_bxt 
NET      : e1000e fjes 
PARPORT  : parport parport_pc 
PLATFORM : wmi 
POWERCAP : intel_rapl_common intel_rapl_msr 
SOUND    : pcspkr ac97_bus snd-compress snd-hwdep snd-pcm-dmaengine snd-pcm snd-timer snd snd-hda-ext-core snd-hda-core snd-intel-dspcfg snd-intel-sdw-acpi snd-hda-codec-generic snd-hda-codec-hdmi snd-hda-codec-realtek snd-hda-codec snd-hda-intel snd-soc-hda-codec snd-soc-avs snd-soc-core soundcore 
THERMAL  : intel_powerclamp intel_tcc_cooling x86_pkg_temp_thermal 
VIRT     : irqbypass 
WATCHDOG : iTCO_vendor_support iTCO_wdt 
OTHER    : ledtrig-audio ee1004 
На всякий "случай" в /home "собрал" модуль e1000e-dkms и жду обновления ядра и "гадаю" исчезнет интернет или НЕТ.
Или как раз при "обновлении ядра" нужно применять kexec ?
vasek
Сообщения: 455
Зарегистрирован: 31.08.2022

#

Без обид - не знаю, что ты делаешь, но наблюдаю некоторое не допонимание в твоих действиях … либо что-то не допонимаю я ...
Например, в части модуля e1000e
beisic:модуля e1000e опять НЕТ
Варианта два - либо, скорее всего, модуль не загружен либо, что мало вероятно, либо его нет вообще.
Проверяем
zgrep E1000E /proc/config.gz
CONFIG_E1000E=m
m означает, что модуль собран как отдельный модуль (файл), который можно динамически загружать/выгружать … а не вкомпилирован в ядро.
Проверяем
locate e1000e.ko
/usr/lib/modules/6.1.64-1-lts/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.zst
/usr/lib/modules/6.6.3-arch1-1/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.zst
Смотрим загружен ли модуль
lsmod | grep e1000e
… пусто …
то есть не загружен (у меня он просто не используется, потому и не загружен)
Загружаем модуль
sudo modprobe e1000e
проверяем
lsmod | grep e1000e
e1000e                368640  0
… загрузился …

PS - обрати внимание - нет команды lsmodprobe
beisic:lsmodprobe | greb e1000e - его не находит
И не помятно, зачем нужен модуль e1000e-dkms ?
beisic:На всякий "случай" в /home "собрал" модуль e1000e-dkms
В части
beisic:и жду обновления ядра и "гадаю" исчезнет интернет или НЕТ.
Как правило, при обновлении ядра, нужно пересобирать и модуль dkms

Ошибки не исчезают с опытом - они просто умнеют

beisic
Сообщения: 42
Зарегистрирован: 16.09.2022

#

vasek:sudo modprobe e1000e
Эту команду, и с lsmod, также использовал в "той системе", но к сожалению вывод команд "для истории" не сохранил.
Помню только он начинался красными буквами со слова Fatal.... и т.д.. При повторении "истории" вывод данных команд попробую как-нибудь сохранить (например "ручками" запишу на бумажку) и с другого компа сообщу. На другом компе система установлена "традиционно" по archwiki" лет несколько назад (а как узнать не представляю), и "выдержала" все "испытания", что приходили в "светлую" голову. Но исправно возвращалась к "жизни" через live-usb arch-chroot.
Эта же система установлена через archboot и "пока тестирую". Прошлый раз, кстати (забыл упомянуть) система "посыпалась", возможно, из-за установки zramswap (удалил как-то без интернета), но восстановилась установкой загрузчика refind поверх sd-stub c usb -флешки с записанным на неё образом archboot-latest-x86_64.efi от 31.12.23 года.
И, спасибо за предоставленные команды, так как, кроме modprobe | greb e1000e и ничего толком не попробовал.
beisic
Сообщения: 42
Зарегистрирован: 16.09.2022

#

Проверил:
 ~ $ zgrep E1000E /proc/config.gz
CONFIG_E1000E=m
CONFIG_E1000E_HWTS=y 
Далее:
 ~ $ locate e1000e.ko
bash: locate: команда не найдена 
И :
~ $ lsmod | grep e1000e
e1000e                368640  0 
Ищу:
 ~ $  pacman -Ss locale
core/glibc-locales 2.38-7
    Pregenerated locales for GNU C Library
core/perl 5.38.1-1 [установлен]
    A highly capable, feature-rich programming language
extra/boost-libs 1.83.0-4
    Free peer-reviewed portable C++ source libraries (runtime libraries)
extra/haskell-data-default-instances-old-locale 0.0.1-36
    Default instances for types in old-locale
extra/haskell-old-locale 1.0.0.7-30
    This package provides the ability to adapt to locale conventions such as date and time formats.
extra/haskell-old-time 1.1.0.3-30
    This package provides the ability to adapt to locale conventions such as date and time formats.
extra/haskell-setlocale 1.0.0.10-4
    Haskell bindings to setlocale
extra/haskell-time-locale-compat 0.1.1.5-17
    Compatibile module for time-format locale
extra/leatherman 1.12.9-3
    Collection of C++ and CMake utility libraries
extra/perl-datetime-locale 1.40-1
    Localization support for DateTime.pm
extra/perl-encode-locale 1.05-11
    Determine the locale encoding
extra/perl-locale-codes 3.73-2
    Distribution of modules to handle locale codes
extra/perl-locale-gettext 1.07-14
    Permits access from Perl to the gettext() family of functions
extra/perl-locale-maketext-lexicon 1.00-4
    Perl/CPAN Module Locale::Maketext::Lexicon : Use other catalog formats in Maketext
extra/perl-locale-po 0.27-9
    Perl/CPAN Module Locale::PO: PO parser
extra/ruby-locale 2.1.3-3
    A pure ruby library which provides basic and general purpose APIs for localization.
extra/switchboard-plug-locale 2.5.9-1
    Switchboard Locale Plug
extra/texlive-latexextra 2023.66594-19 (texlive)
    TeX Live - LaTeX additional packages
extra/unicode-cldr 42.0-1
    Unicode Common Locale Data Repository
extra/unicode-cldr-annotations 42.0-1
    Unicode Common Locale Data Repository (annotations only) 
Извините:
 ~ $ pacman -Ss locate
core/findutils 4.9.0-3 [установлен]
    GNU utilities to locate files
core/mlocate 0.26.git.20170220-7
    Merging locate/updatedb implementation
extra/haskell-findbin 0.0.5-19
    Locate directory of original program
extra/libwlocate 1:0.1-3
    A shared library that can be used for location-based services
extra/lldpd 1.0.17-1
    802.1ab implementation (LLDP) to help you locate neighbors
extra/perl-file-sharedir 1.118-3
    Locate per-dist and per-module shared files
extra/plocate 1.1.20-1
    Alternative to locate, faster and compatible with mlocate's database.
extra/python-memory-allocator 0.1.3-2
    An extension class to allocate memory easily with cython 
vall
Аватара пользователя
Администрация
Сообщения: 725
Зарегистрирован: 09.08.2022

#

vasek:Без обид - не знаю, что ты делаешь,
Просьба к топикстартеру более чётко формулировать:

1. Какая цель желает быть достигнутой в итоге по теме ветки.
2. Какая задача не может быть решена на пути достижения цели. И в чём конкретно требуется помощь форумян?

По пункту один -- темой ветки -- опубликованными сообщениями: уже наблюдается некое расхождение.

Повторюсь вслед за коллегой - без обид - пока всё выглядит как поток сознания. Неполное публичное описание процесса, который Вы делаете в своей системе.
beisic
Сообщения: 42
Зарегистрирован: 16.09.2022

#

vall:Какая цель
Попробовать ещё один "установщик" системы и "посмотреть - какие есть "подводные камни".
По второму пункту: изучение арчлинукс. Помощь форумчан - их комментарии считаю очень полезными, дают "направление". Например: ALiEN "натолкнул на мысль" посмотреть в сторону initcpio.
Nebulosa на сборку кастомного ядра. RusWolf порекомендовал поставить grub c флагом --removable.
Но в сторону grub почему-то ...(ну не нравится он мне).
Ну и vasek вообще кладезь знаний.
Да, тема ветки ушла куда-то в сторону, согласен. Надо править.
vall: Неполное публичное описание процесса, который Вы делаете в своей системе.
К, сожалению, когда "слетает" интернет и какие шаги предпринимаю в "работающей" системе - без интернета не опубликуешь (только на флешку и потом выкладывать).
vasek
Сообщения: 455
Зарегистрирован: 31.08.2022

#

В части locate - команда для поиска, аналог find ... почитать: это и это

EDIT - ... locate на любителя ... можно и не ставить, а использовать find
find / -iname '*e1000e.ko*' 2> /dev/null
/usr/lib/modules/6.1.64-1-lts/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.zst
/usr/lib/modules/6.6.3-arch1-1/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.zst

Ошибки не исчезают с опытом - они просто умнеют

beisic
Сообщения: 42
Зарегистрирован: 16.09.2022

#

vasek:почитать: это
  ~ $  plocate e1000e.ko
/usr/lib/modules/6.6.9-arch1-1/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.zst 
Ответить