LINUX.ORG.RU

EFISTUB vs Gentoo (Funtoo)

 , , , ,


0

1

На данный момент имеется следующее:
- Arch,
- x86-64,
- UEFI,
- EFISTUB.

$ cat /etc/fstab 
# <file system> <dir>   <type>  <options>       <dump>  <pass>
# /dev/sda1 LABEL=SSD240GB
#UUID=8cabed10-f5f6-4bd9-a16b-d0d70bafd974      /               f2fs            rw,relatime,background_gc=on,user_xattr,acl,active_logs=6       0 0
# /dev/sdc1
UUID=DAB1-B29E  /boot   vfat    rw,noatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro     0 2
$ ls /boot/
initramfs-linux-ck-fallback.img  initramfs-linux-ck.img  vmlinuz-linux-ck
efibootmgr -d /dev/sdc -p 1 -c -L "Arch Linux-ck" -l /vmlinuz-linux-ck -u "root=/dev/sda1 rw initrd=/initramfs-linux-ck.img rootfstype=f2fs rootflags=noatime,background_gc=on,discard,nouser_xattr,noacl elevator=bfq"
$ efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0001,0000
Boot0000* Arch Linux-ck HD(1,800,ef0fdf,07faa1a9-8cf0-47e8-acb7-254e2bf73bb6)File(\vmlinuz-linux-ck)r.o.o.t.=./.d.e.v./.s.d.a.1. .r.w. .i.n.i.t.r.d.=./.i.n.i.t.r.a.m.f.s.-.l.i.n.u.x.-.c.k...i.m.g. .r.o.o.t.f.s.t.y.p.e.=.f.2.f.s. .r.o.o.t.f.l.a.g.s.=.n.o.a.t.i.m.e.,.b.a.c.k.g.r.o.u.n.d._.g.c.=.o.n.,.d.i.s.c.a.r.d.,.n.o.u.s.e.r._.x.a.t.t.r.,.n.o.a.c.l. .e.l.e.v.a.t.o.r.=.b.f.q.
Boot0001* UEFI: Leef Spark      ACPI(a0341d0,0)PCI(14,0)USB(1,0)HD(1,800,ef0fdf,07faa1a9-8cf0-47e8-acb7-254e2bf73bb6)..BO
Как понятно из вышеизложенного, раздел /boot находится на USB-Flash и безо всяких папок «efi/EFI».

Что нужно поиметь:
-то же самое на Funtoo иль, в крайнем случае, на Gentoo.

Что делал для этого:
- собирал ядро с включением поддержки EFI, EFISTUB, но не прописывал рекомендуемый «root=/dev/sdaX»
- собирал и с поддержкой initrd и без, и пользовался genkernel.
Результата нет.
Вопрос: как таки добиться этого от Funtoo (Gentoo)?

P.S. Ставил из-под Calculate XFCE.

Deleted

Ответ на: комментарий от Deleted

http://wiki.gentoo.org/wiki/EFI_stub_kernel
http://wiki.gentoo.org/wiki/UEFI_Gentoo_Quick_Install_Guide

Если не хотите всё же прописывать в ядре параметр root, то поищите в Internet или почитайте man страницу по efibootmgr, что бы разобраться как указывать параметры ядра при добавлении вызова ядра в UEFI.

kostik87 ★★★★★ ()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87
-u "root=/dev/sda1 rw initrd=/initramfs-linux-ck.img rootfstype=f2fs rootflags=noatime,background_gc=on,discard,nouser_xattr,noacl elevator=bfq"

вот это и есть kernel_parameters, как в grub.

Да и компилил ядро в Арче без initrd и без прописывания в ядре параметра root, также загружался. К тому же текущее ядро установлено из репы, так что там этого параметра тоже нет.

Deleted ()
Ответ на: комментарий от Deleted

У Gentoo нет собранного ядра в «репе», а у того ядра, которое вы используете проверьте в его конфиге указанные в приведённых руководствах опции сборки ядра.

kostik87 ★★★★★ ()
Ответ на: комментарий от kostik87
$ zcat /proc/config.gz | grep CONFIG_CMDLINE
# CONFIG_CMDLINE_PARTITION is not set
# CONFIG_CMDLINE_BOOL is not set
$ zcat /proc/config.gz | grep EFI
CONFIG_EFI_PARTITION=y
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_FB_EFI=y
# EFI (Extensible Firmware Interface) Support
# CONFIG_EFI_VARS is not set
CONFIG_UEFI_CPER=y
CONFIG_CACHEFILES=m
CONFIG_EFIVAR_FS=y
CONFIG_EARLY_PRINTK_EFI=y
Deleted ()
Ответ на: комментарий от kostik87

ядро не вызывается. сразу же грузится БИОС.

Deleted ()

но не прописывал рекомендуемый «root=/dev/sdaX»

трахайся дальше.

root@gentoo zcat /proc/config.gz | grep EFI
CONFIG_EFI_PARTITION=y
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_FB_EFI=y
# EFI (Extensible Firmware Interface) Support
CONFIG_EFI_VARS=y
# CONFIG_EFIVAR_FS is not set
# CONFIG_EARLY_PRINTK_EFI is not set

ядро собрано руками без initramfs, лежит в /EFI/gentoo/...

УМВР.

funeralismatic ★★★ ()
Ответ на: комментарий от anonymous

/EFI/gentoo/ - у тебя это отдельное устройство?

естественно, FAT32, монтируется в /boot по необходимости (/boot/EFI/gentoo/*.efi)

как создавал запись efibootmgr'ом ?

efibootmgr -c -d /dev/sda -p 1 -L "Gentoo 3.14.0" -l "\EFI\gentoo\3.14.0-gentoo.efi"

а вообще, давно было пора мне всё это дело заскриптовать.

funeralismatic ★★★ ()
Ответ на: комментарий от anonymous

раздел.

не забываем, что диск должен быть размечен в GPT (можно и с MBR, но это гемор, нормальные люди так не делают), раздел должен быть в FAT32 объёмом не менее 500 мегабайт (вдруг чего. я, например, там и бэкапы ядер храню перед пересборкой с экспериментальными опциями. да и венде там тоже (по слухам, сам не проверял) немало места надо), руки из правильного места и голова, в которой мозга больше, чем опилок.

funeralismatic ★★★ ()
Ответ на: комментарий от funeralismatic

короче, после 5-6-ой пересборки ядра таки умудрился загрузиться, поставил КЕДы, потом понял, что для меня это как-то слишком.

Deleted ()
Ответ на: комментарий от funeralismatic

Скорее всего, читать нужно много, думать, да и вообще выполнять много действий и принимать решений.

kostik87 ★★★★★ ()
Ответ на: комментарий от funeralismatic

Джента, как-то я оказался не готов к столь длительной компиляции и перекомпиляции всего и вся. с КЕДами и УЕФИ нет никаких проблем.

Deleted ()
Ответ на: комментарий от kostik87

странно, мне с этого гента и понравилась вначале. :3

не вижу ничего сложного. если я, далёкий от IT-сферы и крайне ленивый, осилил, думаю, осилит каждый... кто этого хочет. :3

просто вначале надо почитать (чем больше источников, тем объективнее знание), а потом подумать, нужно ли, а уже после — делать. прежде чем переползти на EFI я недели две курил документацию генты (её там мизер, но было много непонятных слов, перечитывал), потом (зря время потратил, но знания лишними не бывают) покурил про FAT32, затем разобрался с efibootmgr, и только после этого разметил диск в GPT, пересобрал ядро под ефи, проверил, и только после того, как оно взлетело, я снёс LiLo (да, я пользовал этот ужас). если такие алгоритмы не устраивают ТСа, то ему лучше попробовать что-нибудь типа OpenSuSE или Debian, и юзать там GRUB2.

наболело, да.

выдохнул.

funeralismatic ★★★ ()
Ответ на: комментарий от funeralismatic

Вот, я и говорю, необходимо чтение документации и осмысление, что бы всем этим пользоваться. В результате получаешь больше «рычагов управления» и как следствие возможностей. В случае возникновения проблем уже будешь иметь возможность решить их самостоятельно, а в случае желания сможешь реализовать нестандартную конфигурацию.

А ТС это всё не нужно, ему, скорее всего, нужна большая кнопка «сделать зашибись», ну а в случае возниконовения проблем он, если ему ни кто не подскажет, просто переустановит систему.

Но не буду за него всё решать. Захочет - разберётся, когда поймёт, что от прочтения документации и её понимания больше пользы. А пока будет использовать более простые дистрибутивы.

kostik87 ★★★★★ ()
Ответ на: комментарий от Deleted

Почитайте 'man emerge' и 'man make.conf', есть ключи, которые позволяют собирать пакет в несколько потоков, если пакет поддерживает, ну и собирать несколько пакетов параллельно. Это всё естественно хорошо, если имеется много ядерный процессор, а большинство современных процессоров как раз таковыми и являются.

Читайте про 'MAKEOTPS' - https://wiki.gentoo.org/wiki/MAKEOPTS и EMERGE_DEFAULT_OPTS.

Так же обратите внимаение на параметр '--load-average'

К примеру может быть такой вариант:

MAKEOPTS="-j3"
EMERGE_DEFAULT_OPTS="-j4 --load-average 4" 

Здесь разрешена сборка в три потока и сборка одновременно 4 пакетов, если средняя загрузка не превышает 4. Почитайте подробно про параметр load-average.

Сборку ядра лучше проводить в ручную т.к. есть возможность указать так же собирать ядро и модули в несколько потоков:

make -j4 bzImage
make -j4 modules
mount /boot
make install
make INSTALL_MOD_STRIP=1 modules_install
последняя команда говорит устанавливать модули очищая их от отладочной информации и прочего мусора, за счёт чего они будут меньшего размера.

В рузальтате на современном процессоре при сборке в 4 потока ядра и модулей, почти со всеми задействованными модулями (опциями) поддержки оборудования и подсистем (технологий) ядра сборка займёт 5-6 минут. Если конфигурацию ядра оптимизировать, т.е. оставить только нужные технологии и поддержку только требуемого вашей системе оборудования, то время сборки можно сократить до 2-х минут.

Для сборки Initramfs, если он нужен, можно использовать всё тот же genkernel.

genkernel ramdisk

Если не хочется собирать ядро в ручную, то придётся править конфигурационный файл genkernel.

Удачи, не забывайте читать документацию.

kostik87 ★★★★★ ()
Ответ на: комментарий от funeralismatic

не, васче Джента мне понравилась гибкостью настроек. c EFISTUB я разобрался часа за 2, пока новый БИОС настраивал на планшете читал.

Мне было интересно не иметь раздел FAT32 диске, а иметь его на флешке. Это я получил тоже быстро.

Зачем мне пробовать СУСЕ иль Дебьян? К тому же ГРУБ2 считается самым сложным для настройки работы с UEFI.

Deleted ()
Ответ на: комментарий от Deleted

ну а в бинарных дистрах с efibootmgr будет так же, как и в генте.

время компиляции зависит от опций сборки, степени оптимизации, количества потоков, ну и, естественно, процессора. а если ещё и в RAM собирать, то можно получить ещё немного в скорости (актуально, ибо HDD/SSD не насиловать). гента — это не тот дистрибутив, который станет идеальным за один день, его можно совершенствовать годами.

funeralismatic ★★★ ()
Ответ на: комментарий от funeralismatic

ну а в бинарных дистрах с efibootmgr будет так же, как и в генте.

в Арче у меня с первого раза получилось. Перенос EFI-раздела на флешку со второго. В Дженте только раза с 5-6 шестого.

гента — это не тот дистрибутив, который станет идеальным за один день, его можно совершенствовать годами.

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

Deleted ()
Ответ на: комментарий от kostik87

--load-average

в большинстве случаев (на нормальных процессорах) пользы от него минимум, по крайней мере у меня. где он будет полезен?

Initramfs

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

funeralismatic ★★★ ()
Ответ на: комментарий от Deleted

в Арче

там ядро ставится бинарём, в который (точнее не в сам бинарь, а в initramfs) вкручено абсолютно всё, как в убунте.

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

чтобы гента пилилась, надо сидеть на ней постоянно, не обязательно по 25 часов в сутки компилять/конфигурять, просто нужно наблюдать и делать себе заметки, что нужно в свободное время поправить, где и как можно упростить себе жизнь, написав скрипт (например make; make modules_install; cp arch/x86/boot/bzImage /boot/$kern_version). здесь бобрый дядя не придёт, и ничего не сделает, тут надо самому выкручиваться. а плюс в этом очевиден: твои костыли будут работать именно так, как ты хочешь, а не как решил бобрый дядя поцтеринг. :3

funeralismatic ★★★ ()
Ответ на: комментарий от funeralismatic

там ядро ставится бинарём, в который (точнее не в сам бинарь, а в initramfs) вкручено абсолютно всё, как в убунте.

там из АУРа можно самому собирать. Честно говоря, какого-либо профита от сборки ядра я не усмотрел: быстрее даже на глаз не стало.

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.