LINUX.ORG.RU

Установка archlinux без стороннего загрузчика

 ,


0

1

Всем доброго времени суток. Нужна помощь. Перехожу с ubuntu на arch. Читаю вдумчиво до мелочей archwiki. Готовлю почву. Планирую использовать возможность UEFI работать без стороннего загрузчика. Ход моих действий:

  • Создаю gdisk'ом 512МБ ESP.
  • pacman -S intel-ucode - скачиваю и устанавливаю микрокод intel, он копируется в /boot/.
  • Устанавливаю efibootmgr и
    sudo efibootmgr -create -disk /dev/sdb -part 1 -u -loader '\EFI\arch\vmlinuz-linux.efi' -u -Label "ArchLinux" root=UUID=(PARTUID рута) initrd=/intel-ucode.img initrd=EFI/arch/initramfs-linux.img rw quiet
    

Далее я могу дописать какие-нибудь опции. Вроде

i915.lvds_downclock=1 i915.i915_enable_fbc=1 i915.i915_enable_rc6=1 (Режим энергосбережения, циферку подобрать) i915.semaphores=1 (в случае вылетов) pcie_aspm=force (после проверки на ASMP) intel_pstate=disable (если захочу масштабирование частоты процессора)
Вопросы:

  • Указание свопа командой resume=/dev/ даёт какие-нибудь преимущества? Возможно ли использовать своп-файл?
  • Каким образом можно отредактировать запись с помощью efibootmgr? Если захочу дописать или изменить что-нибудь.
  • -part, как я понял, можно не писать, оно по умолчанию = 1?
  • Порядок загрузки указывается командой efibootmgr -o XXXX,YYYY,ZZZZ и пишу нужный мне порядок в кодах efibootmgr -o 0000,0001,0002 ?

Заранее благодарю за ответы.



Последнее исправление: orkimed (всего исправлений: 1)

Я бы рекомендовал не париться и юзать refind. Вся установка сводится к

sudo pacman -S refind
sudo refind-install

xSudo ★★★
()

Указание свопа командой resume=/dev/ даёт какие-нибудь преимущества? Возможно ли использовать своп-файл?

Более того: если ты хочешь пользоваться гибернацией, так и нужно делать. Только, всё‐таки, resume=UUID=….

Каким образом можно отредактировать запись с помощью efibootmgr? <…>

efibootmgr --bootnum. Но я сначала удаляю, а потом запускаю скрипт, который, помимо всего прочего, делает efibootmgr --create.

-part, как я понял, можно не писать, оно по умолчанию = 1?


efibootmgr(8):

-p | --part PART
       Partition number containing the bootloader (defaults to 1)

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

<…> пишу нужный мне порядок в кодах efibootmgr -o 0000,0001,0002 ?

Ну вот нули не обязательно писать. А вообще порядок загрузки обычно удобнее настроить из самого UEFI.

sudo efibootmgr -create -disk /dev/sdb <…>

Ты, совершенно не случайно, не на внешний диск планируешь установить систему?

kalterfive ★★
()
Последнее исправление: kalterfive (всего исправлений: 9)

efibootmgr -c -d /dev/sda -p 1 -l vmlinuz-linux -L "Arch Linux w/microcode update" -u "initrd=/intel-ucode.img initrd=/initramfs-linux.img root=/dev/sda2 resume=/dev/sda4 elevator=deadline quiet"

Хоть ArchWiki рекомендует заморочиться с каталогом EFI и копировании туда ядер, у меня всё отлично работает и так.

Ну и да, предпочтительнее указывать UUID, но у меня опять же и так всё работает.

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

refind — загрузчик? Я предложил systemd-boot исходя из того, что ТСу нужен вовсе не какой-нибудь загрузчик, а готовая софтина, которая только и делает, что в соответствии с конфигурацией правильно подготовливает приложения efi (EFISTUB) и соответствующим образом вызывает efibootmgr.

kalterfive ★★
()
Последнее исправление: kalterfive (всего исправлений: 1)
Ответ на: комментарий от kalterfive

Но я сначала удаляю, а потом запускаю скрипт, который, помимо всего прочего, делает efibootmgr --create.

Смело, однако! А как грузиться, если с efibootmgr --create каким-нибудь образом случайно накосячишь?

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

Еще вариант, ничего не ставить и обойтись systemd-boot.

$ sudo bootctl install
...
$ sudo tee /boot/loader/entries/arch.conf <<EOF
title		Arch Linux
linux		/vmlinuz-linux
initrd		/intel-ucode.img
initrd		/initramfs-linux.img
options		root=UUID=<uuid> rw quiet
EOF

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

В UEFI Shell, а из него – куда угодно =) . Но я пока ни разу не косячил, потому что вызываю это команду не вручную:

exec efibootmgr \
	--create \
	--disk '/dev/sda' \
	--part '1' \
	--label '@LABEL@' \
	--loader '/EFI/@LABEL@/vmlinuz' \
	--unicode "${LINUX_CMD[*]}"

Собственно, поэтому и делаю так — потому что автоматизировано.

kalterfive ★★
()
Последнее исправление: kalterfive (всего исправлений: 2)
Ответ на: комментарий от kalterfive

В Lenovo t440 так называется ssd во втором слоте NGF. В первом стоит съемный кэш на 16ГБ.

orkimed
() автор топика

Указание свопа командой resume=/dev/ даёт какие-нибудь преимущества?

Да, рабочий гибернейт.

Каким образом можно отредактировать запись с помощью efibootmgr?

Редактировать он не умеет, но можно удалить старую и прописать на её место новую, только зачем, если можно размещать обновлённое ядро на месте старого с его же именем?

-part, как я понял, можно не писать, оно по умолчанию = 1?

Да.

Порядок загрузки указывается командой efibootmgr -o XXXX,YYYY,ZZZZ и пишу нужный мне порядок в кодах efibootmgr -o 0000,0001,0002 ?

Да, но можно и efibootmgr -o 02,00,01, так короче.

Также референс на ссылку у меня в профиле.

r3lgar ★★★★★
()

/boot для простоты можно монтировать прямо в ESP (так и рекомендует Arch Wiki, ЕМНИП), тогда для efibootmgr нужно будет указать ... -l /vmlinuz-linux .... Иначе нужно будет городить костыли для копирования ядра и initrd на ESP при обновлении.

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

Я что-то запамятовал про этот аргумент. Да, действительно.

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

Имеется в виду mount /dev/sdb1 /mnt/boot ? Я вот как раз и опасаюсь, что неправильно сделаю, а потом обновляться не сможет. По вики, если правильно смонтировать, то сам pacman сможет обновлять ядро. Идеальный случай.

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

Если ESP у Вас на /dev/sdb1 - то да, при установке именно так.

неправильно сделаю

Всегда монтирую ESP в /boot, брат жив, зависимость есть, pacman сам обновляет ядро.

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

/mnt/boot? Вообще традиционно принято ESP монтировать в /boot — тогда да, проблем не возникнет. Потому что:

$ pacman --query --owns /boot/vmlinuz-linux
/boot/vmlinuz-linux is owned by linux 4.6.4-1

А что касается копирования, то на ArchWiki как раз тот случай и разбирается, когда ESP находится не в /boot, а где‐нибудь в /mnt/boot (причём если эта локация — не симлинк к предыдущей): в такой ситуации pacman устанавливает vmlinuz/initramfs в /boot, но не в ESP, который в /mnt/boot.

Зачем так делать — не знаю.

kalterfive ★★
()
Последнее исправление: kalterfive (всего исправлений: 1)
Ответ на: комментарий от kalterfive

systemd-boot в точности как и refind - UEFI менеджер загрузки. https://wiki.archlinux.org/index.php/Boot_loaders_(Русский)

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

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

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

xSudo ★★★
()

Всем спасибо за ответы. Решил, что для начала всё таки лучше поставлю загрузчик. Systemd-boot подойдет вполне.

orkimed
() автор топика
Ответ на: комментарий от kalterfive

Не пробовал: не увлекаюсь выкидыванием лишнего из initramfs, а если уж его сломаю, то и fallback с хорошей вероятностью окажется сломанным, поэтому не вижу в нём смысла.

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