[SOLVED] UEFI против radeondrmfb или иного open-source драйвера с KMS

Собственно, товарищи, кто-нибудь заводил связку из opensource драйвера с включенным KMS и загрузкой с UEFI?

На данный момент у меня ситуация такая:
1. Если включить EFI Framebuffer, выключить radeondrmfb (включить модулем и поставить в blacklist, например) - работает, консоль видна.
2. Если выключить EFI Framebuffer, включить radeondrmfb - работает, но консоль чёрная.
3. Если включить оба, то не работает - вешается на fb conflicting hw.

Интернет полон различных советов от отключения KMS (что глупо), то пинков в сторону grub2 - де это он всё виноват. Некоторые же наоборот утверждают, что де в UEFI режиме видеокарта не инициализируется и потому даже в i915 специальную опцию сделали.

Вопрос - что делать, как лечить? Иксы конечно работать заставить можно, но без консоли жить как-то не хорошо. Хочется и того, и того и можно без хлеба (EFI framebuffer). Пробовал кто-нибудь грузить не с grub2, а с других?

Update:
Собственно история солюшена такая:
Начитавшись, что во всём виноват груб, я решил попробовать грузить ядро самостоятельно (через EFI stub). Однако у моего мышкокликательного биоса встроенная консоль оказалась настолько убогая, что пришлось ставить rEFInd [1]

Лирическое отступление про refind
refind - это такое efi приложение (можно скачать с сайта, запихнуть в ESP и всё, в ОС оно не имеет отношения), которое соотносится с обычным bootloader'ом, например grub или lilo (не grub2), примерно как обычный биос с мышкокликательным. Т.е. вроде как делает тоже самое, но рюшечек обвешано до дури. Хотя у refind оказался весьма симпотичный textonly режим, да и по логике своей он проще и понятнее чем grub2.

Однако привыкнув за <> использования grub2 к grub2-mkconfig, мне как-то стало так влом заносить руками всё одно ядро с поддержкой efi-stub, что я написал скрипт, который делал это за меня [2]. Ну и пришлось немного пошаманить с настройками автогенерации, чтобы он не искал лишнего (перенастроить scanfor). Конфиг refind'а получился следующий: [3].
Конец лирического отступления про refind

Поставив рефайнд и получив одно efi-stub ядро, которое загружалось и показывало консоль (через efi-fb с отключенным radeon-drm) я начал пробовать различные конфигурации:
1. Включить оба - приводило к зависанию, как и раньше.
2. Включить только radeon-drm, выключить efi-fb - чорный экран.

Сосредоточившись на варианте 2, я начал пробовать разные настройки рефайнда - включить графику, выключить графику, textonly/не-textonly...
В процессе испытаний я вдруг заметил, что ядро-то грузится (не виснет), но некоторое время, секунд 30, не реагирует на ctrl+alt+del, после чего начинает реагировать.
Тут у меня появились некоторые подозрения. Дождавшись очередной такой загрузки и перезагрузил ядро в рабочее через ctrl+alt+del и начал смотреть /var/log/messages на предмет загрузки предыдущей попытки. И, естественно, я там обнаружил:

si_cp: Failed to load firmware "radeon/TAHITI_pfp.bin"

Очнувшись минут через пять (сильно болели лоб и ладонь), я таки поставил radeon-ucode (в стандартном ядре этой фирмвари нету, что меня и подвело - а то так dracut их копирует все) и сделал новое ядро с ним. Ну и через пару попыток (забыл примонтировать /boot, забыл перезаписать конфиг и т.п.) я таки загрузил ядро - с графикой и со всеми остальными рюшечками.

Затем я начал "чистить лишнее" - netconsole, kernel level autoconfiguration/dhcp и прочие радости жизни. Закончив очистки, я попытался загрузить груб - (загрузив его из refind - дикие цепочки загрузок такие дикие) и, что вы думаете? Да, он тоже нормально загрузил это ядро. Разве что grub2-mkconfig'у сильно не нравился суффикс .efi и он отказывался находить initramfs рядом.

Причём грузился он (grub2) как с TERMINAL=console, так и TERMINAL=gfxterm.

Итого, для загрузки оказалось достаточно отключить efifb в ядре целиком (video=efidb:off или аналоги его не впечатляют, ровно как и video=radeondrmfb) и включить radeondrmfb.
Ну и лог прочитать =)

Сижу теперь с двумя лоадерами, думаю какой оставить.

[1] http://www.rodsbooks.com/refind/
[2]

options="root=/dev/nord/root quiet fastboot console=tty1 splash=silent,theme:natural_gentoo"
#options="root=/dev/nord/root verbose drm.debug=14 netconsole=@/,12345@192.168.1.12/"

make_entry() {
	cat <<EOF
menuentry "$1" {
	icon EFI/refind/icons/os_gentoo.icns
	volume boot
	loader $2
	initrd $3
	options "$options"
	enabled
}
EOF
}

test -e /boot/efi 		|| mount /boot
test -e /boot/efi/EFI/refind	|| mount /boot/efi

(
	cat /boot/efi/EFI/refind/refind.conf.head

	echo
	echo "## AUTOGENERATED BEGIN ##"
	echo

	for kernel in `ls -1 /boot/kernel-*.efi | sort -r`; do
		loader=`basename "$kernel"`
		version=`echo ${kernel} | sed 's/^[^-]*-//; s/\.efi$//'`
		name="Gentoo GNU/Linux [$version]"
		initrd="initramfs-$version.img"

		make_entry "$name" "$loader" "$initrd"
		echo
	done

	echo
	echo "## AUTOGENERATED END ##"
	echo

	cat /boot/efi/EFI/refind/refind.conf.tail
) > /boot/efi/EFI/refind/refind.conf

[3] http://bpaste.net/show/58768/

.

NightNord написал(а):
Пробовал кто-нибудь грузить не с grub2, а с других?

Ситуация аналогична (с nvidia и nouveau) - показывает только EFI_FB. На хостах, где имеется UEFI, гружусь вообще без бутлодеров (EFISTUB - конфигурируется очень просто посредством efibootmgr, но на одном для мультизагрузки используется rEFInd)

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".