Привет всем любителям Линукс! Хочу поделиться с вами процессом установки и настройки Alpine Linux в качестве десктопной операционной системы. В этой статье мы рассмотрим все необходимые шаги, начиная от установки до настройки базовых компонентов и дополнительных утилит.
После завершения установки и настройки Alpine Linux, вы сможете наслаждаться всеми его преимуществами и использовать его в повседневной работе. Благодаря своей легковесности и оптимизации, Alpine Linux обеспечивает стабильную и быструю работу, что делает его идеальным выбором для различных задач и требований.
Я планирую установить операционную систему на свой старенький, но надежный ноутбук HP. Этот ноутбук служит мне в качестве портативного устройства и одновременно игрушки для тестирования различных ОС.
На данный момент на диске уже установлены Windows 10, Debian 12, и создан общий медиараздел для всех дистрибутивов Linux. Поэтому мы будем устанавливать ОС в "tripleboot" режиме.
Итак, установочный носитель создан, и мы успешно загрузились в систему. Вводим имя пользователя "root", при этом пароль не требуется, и мы попадаем в live-систему.
У нас сложная конфигурация, поэтому мы будем использовать полуавтоматическую установку (Semi-Automatic Installation). Первые этапы установки достаточно простые, поэтому я ограничусь краткими комментариями.
Раскладка.
setup-keymap us us
Имя хоста.
setup-hostname alphp
vi /etc/hosts
127.0.0.1 localhost.localdomain localhost alphp.localdomain alphp
::1 localhost.localdomain localhost alphp.localdomain alphp
rc-service hostname restart
Далее настраиваем сеть. В руководстве по установке рекомендуется избегать использования беспроводного подключения, но мы рискнем.
setup-interfaces
Выбираем наш беспроводной интерфейс, обычно это wlan0, выбираем нашу сеть и вводим пароль. Несмотря на предупреждения разработчиков не использовать DHCP при беспроводном подключении, мы рискнем и в этот раз. Просто нажимаем Enter на все последующие вопросы, чтобы использовать значения по умолчанию. Когда предложат перейти к настройке следующего сетевого интерфейса, вводим "done", чтобы завершить конфигурирование.
Запускаем сервис.
rc-service networking start
Проверяем, появился ли доступ в Интернет. В моем случае все работает отлично.
ping alpinelinux.org
Настраиваем часовой пояс.
setup-timezone
Настраиваем репозитории. В диалоговом меню скрипта выбираем опцию "c" для подключения репозитория сообщества, затем "f", чтобы автоматически установить самое быстрое зеркало.
setup-apkrepos
После этого вручную редактируем файл с репозиториями: указываем в качестве источника пакетов не v3.19, а latest-stable. Таким образом, после выхода следующей стабильной версии дистрибутива, мы автоматически обновимся до нее.
vi /etc/apk/repositories
/media/sdb/apks
https://mirror.yandex.ru/mirrors/alpine/latest-stable/main
https://mirror.yandex.ru/mirrors/alpine/latest-stable/community
Устанавливаем пароль суперпользователя.
passwd
Настраиваем SSH, все элементы оставляем по умолчанию.
setup-sshd
Настраиваем NTP-сервер. Оставляем все элементы по умолчанию.
setup-ntp
Последний установочный скрипт перед установкой системы — это setup-disk, однако мы не будем его использовать сейчас, поскольку в этом случае он установит Alpine Linux на весь диск.
Проверяем на всякий случай, используем ли мы BIOS или UEFI.
test -d /sys/firmware/efi && echo UEFI || echo BIOS
В моем случае это UEFI, поэтому мы будем проводить установку для UEFI.
В контексте оптимальной настройки операционных систем, я придерживаюсь мнения о необходимости наличия отдельного загрузочного раздела и swap-раздела для каждой ОС. Однако, в случае с Alpine, я предпочитаю не создавать отдельный swap-раздел и вместо этого воспользоваться уже существующим swap-разделом Debian. В то же время, я планирую создать отдельный загрузочный раздел для Alpine. Похоже, получится неконвенциональная, но вполне работоспособная конфигурация.
Устанавливаем cfdisk для разметки диска.
apk add cfdisk
Вот как выглядит разметка диска сейчас.
/dev/sda1 EFI System
/dev/sda2 Microsoft Reserved
/dev/sda3 Microsoft Basic Data
/dev/sda4 Windows Recovery Environment
/dev/sda5 Linux filesystem
/dev/sda6 Linux swap
/dev/sda7 EFI System
/dev/sda8 Linux Filesystem
Free space
С помощью cfdisk создаем отдельный EFI раздел и раздел для корня системы.
/dev/sda1 EFI System
/dev/sda2 Microsoft Reserved
/dev/sda3 Microsoft Basic Data
/dev/sda4 Windows Recovery Environment
/dev/sda5 Linux filesystem
/dev/sda6 Linux swap
/dev/sda7 EFI System
/dev/sda8 Linux Filesystem
/dev/sda9 EFI System
/dev/sda10 Linux Filesystem
Создаем файловые системы и монтируем корневой раздел и раздел /boot. Swap-раздел будет примонтирован после завершения установки.
apk add e2fsprogs dosfstools
mkfs.ext4 /dev/sda10
mount /dev/sda10 /mnt
mkdir /mnt/boot
mkfs.fat -F 32 /dev/sda9
mount /dev/sda9 /mnt/boot
Теперь, когда все смонтировано, устанавливаем дистрибутив в соответствующие разделы.
setup-disk /mnt
После того, как все файлы будут скопированы, извлекаем установочный носитель и перезагружаемся в новую установленную систему.
По умолчанию Alpine использует командную оболочку ash, однако мне нравится bash.
apk add bash bash-completion
Чтобы не работать постоянно от имени root, создадим пользователя.
adduser -h /home/apem -s /bin/bash apem
В Alpine Linux для повышения привилегий традиционно используется утилита doas, но она мне не подходит, поэтому я установлю и настрою sudo.
apk add sudo
vi /etc/sudoers
Defaults rootpw
Defaults env_reset, timestamp_timeout=0
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults use_pty
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
apem ALL=(ALL:ALL) ALL
Пора установить графическую среду. Я установлю свой любимый Xfce. Поразительно, насколько быстро работает пакетный менеджер apk ;)
setup-xorg-base
apk add xfce4 xfce4-terminal xfce4-screensaver lightdm-gtk-greeter
setup-devd udev
rc-service lightdm start
rc-update add lightdm default
Перезагрузимся из консоли tty в графическую среду X11.
Смонтируем и включим swap-раздел.
Посмотрим номер swap-раздела и его UUID.
fdisk -l
blkid
Запишем его в /etc/fstab.
vi /etc/fstab
UUID=87e1013a-44a2-4d48-8ef6-d7884b50803b none swap sw 0 0
Включим сервис и добавим в автозапуск.
rc-update add swap default
rc-service swap start
К сожалению, из графической среды мы не можем выключить, перезагрузить или отправить в ждущий режим ноутбук. Исправим это.
apk add elogind polkit-elogind
reboot
Добавим справочные страницы.
apk add mandoc man-pages mandoc-apropos less less-doc
Настроим автомонтирование внешних накопителей.
apk add gvfs udisks2
Настроим повышение привилегий для утилит с графическим интерфейсом.
rc-update add elogind default
rc-service elogind start
Казалось бы, все есть, но не хватает последнего — звука! Я обычно использую pulseaudio, но разработчики настойчиво рекомендуют pipewire, поэтому я последую их совету.
addgroup apem audio
addgroup apem video
apk add pipewire wireplumber pipewire-pulseaudio pavucontrol xfce4-pulseaudio-plugin
reboot
Минимальная установка системы завершена. Все необходимое на месте и функционирует, остается только настроить специфичные для своего использования параметры.
На прилагаемых скриншотах представлена система, которую уже нельзя считать полностью минимальной, поскольку я загрузил десяток других утилит и справочных страниц (да, справочные страницы в Alpine устанавливаются отдельным пакетом). Стандартная версия Alpine Linux с базовой настройкой и Xfce занимает всего около 400 пакетов. Это отличный выбор для любителей минималистичных систем.
Инструкция по установке Alpine Linux с Xfce актуальна для версии 3.19 и, скорее всего, будет подходить и для последующих выпусков. Даже гайды и обзоры Alpine Linux пятилетней давности, которые я смотрел, описывают процесс установки практически таким же образом. В случае возникновения проблем, на официальном сайте Alpine Linux представлена подробная инструкция по установке, а также обширная база знаний, напоминающая вики Arch Linux. Таким образом, при возникновении трудностей можно рассчитывать на ответы и поддержку.
Комментарии
10:23
Приятно читается, лишней воды нет, всё по делу.
Если и доберусь когда нибудь до Alpine, то знаю где брать инструкцию :)
12:31
Из вашего текста не ясно, где же у вас ESP. Поможет картинка gparted из любой системы, а смотреть там нужно на колонку Flags: у кого boot, esp - тот настоящий ESP.
То, что вы называете EFI system - это разделы для папок boot, в которых обычно (но не всегда) находятся образы ядер и конфигурация grub, они не обязаны быть fat32, на них нет загрузчиков и называть их EFI system - только вносить путаницу.
14:40
Либо переустанавливать, либо восстанавливать загрузчик, как это можно легко сделать в ЛМ.
14:42
Ещё права на sudoers выставить бы не мешало
15:55
16:10
sudo vi /etc/sudoers
15:47
Практику так делать перенял от одного опытного пользователя Slackware на просторах Linux-форумов.
1) Я не называл разделы произвольным образом, а продемонстрировал колонки "device" и "type" утилиты cfdisk.
2) По поводу ФС fat32 абсолютно согласен, скорее, это лишь моя привычка.
3) Ради интереса скачал gparted и посмотрел колонку Flags, все загрузочные разделы имеют флаги "boot, esp".
16:06
Придумал аналогию. Все загрузчики *.efi типа grubx64.efi, boot.efi и memtest86.efi должны быть у мальчика Валентина, рождённого в фев32. Смотрим на список детей (разделов).
Ребёнок1 фев32 Валя
.
Ребёнок7 фев32 Валя
.
Ребёнок9 фев32 Валя
Всё понятно, никаких вопросов и разночтений, но актуален и работает только один.
Дайте команду efibootmgr и посмотрите, на каком они разделе, думаю на 1-ом.
16:45
Выхлоп команды efibootmgr, немного сокращенный за счет удаления длинных последовательной цифр:
BootOrder: 3001,3002,3003,2001,2002,2003
Boot0001* Windows Boot Manager HD(1,GPT,)/File(EFIMicrosoftBootbootmgfw.efi)
Boot0002* debian HD(7,GPT,)/File(EFIdebianshimx64.efi)
Boot0003* grub HD(9,GPT,)/File(EFIgrubgrubx64.efi)
Boot0013* Notebook Hard Drive BBS(HD,,0x500)
Boot0014* Notebook Hard Drive BBS(HD,,0x500)
Boot0015* ubuntu HD(1,GPT,)/File(EFIubuntushimx64.efi)
Boot001B* Notebook Hard Drive BBS(HD,,0x500)
Boot001D* USB Hard Drive - VendorCoProductCode BBS(7,,0x500)
Boot001E* USB Hard Drive (UEFI) - VendorCoProductCode PciRoot(0x0)/Pci(0x1a,0x0)/USB(0,0)/USB(1,0)/HD(1,MBR,)RC
Boot2001* USB Drive (UEFI) RC
Boot2002* Internal CD/DVD ROM Drive (UEFI) RC
Boot3001* Internal Hard Disk RC
Boot3002* Internal Hard Disk RC
Boot3003* Internal Hard Disk RC
Если вы спросите, чей GRUB стартует, то мне придется придется признаться что я владелец UEFI Insydeh20, который если видит загрузчик Windows ставит его приоритет выше GRUB, и поменять приоритет нельзя. Решение есть - подменить загрузчик Windows GRUB`ом, но я заниматься этим не стал. Поэтому при включении ноутбука, вручную через UEFI выбираю какой загрузчик использовать: "Windows Boot Manager", "Debian" или "Alpine" (прямо так и называются), или вовсе "Boot from EFI file", про который я писал в начале.
17:29
sudo efibootmgr -b 0015 -B
После этого её не будет в списке по efibootmgr. Все записи ниже - это привязки к железу, их можно убрать в настройках bios, например отключить загрузку через сетевую карту pci и со сменных носителей.
Сейчас у вас прошивка может загружать либо просто с диска, а там уже кто в boot.efi прописан, тот и стартует, либо по F9 запускаете efi shell и можно выбрать efi загрузчик. Но вы сами так организовали, сами своим методом установки так сделали. Вспомните, ведь у ubuntu был grub с меню и возможность запускать windows. Стартовый ESP у вас на первом разделе, но там только boot.efi с привязкой к Windows и её загрузчик. Остальное запускается как сторонние загрузчики и не важно, как называются разделы. Например на флешку можно поместить memtest86.efi и вы его загрузите по F9.
18:05
18:20
18:30
18:47
17:59
18:15
Следующим моим предложением будет установить загрузчик grub на sda1. Лучше это сделать из Alpine. Если Windows удалит его со временем, то всё равно останется возможность загружаться по F9. Но думаю, что не удалит, потому что он не лезет в secure boot.
18:28
Я внимательно прочитал Ваше прошлое сообщение, мне понравилась идея поиграться с boot.efi. Я попробую это сделать в ближайшее время и если это решит проблему, я буду кричать об этом со всех колоколен.
18:45
1. Удалите ненужную запись от ubuntu и убедитесь по efibootmgr, что она исчезла.
2. Судя по возможности загрузки с сетевухи и MBR, у вас выбран Legacy. Если возможно, то нужно отключить secure boot, но включить загрузку только UEFI (отключить Legacy). Снимите в bios несколько галочек с возможности загрузки с сетевухи и каких-то вторых и третьих дисков. Должен остаться только один hard drive. Убедитесь по efibootmgr, что несколько вариантов загрузки исчезли.
3. Если будут продвижения по 1-2, то обсудим дальнейшую установку загрузчика grub.
19:21
Legacy-bios и Secure Boot выключены уже довольно давно. Только что еще раз проверил — все выключено.
Пожалуй единственное замечание, что UEFI порезанный донельзя, и я не могу отключить загрузку чего-либо, только поменять порядок.
К вопросу о разблокировке расширенного UEFI, я пробовал следовать четырем различных инструкциям, они успеха не дали.
Пожалуй, данная конфигурация ноутбука меня устраивает, и мне не хочется что-либо менять. В том числе несколько загрузочных разделов. Однако, когда появится настроение для новых экспериментов, я из интереса преодолею этот барьер.
PS. Я ставил некоторое время дуалбут Windows и Debian без secure, без csm и в один раздел. Ситуация была та же. Судя по форумам, подмена загрузчика Windows помогает, но я не пробовал. Так же помогает, судя по форумам, замена через bcdedit windows boot manager на grub (к сожалению, эта конфигурация не дожила до того момента, как я об этом узнал).
PS2. На моей основной машине, так же стоит дуалбут Windows и Debian с secure boot и в одном разделе, там запускается GRUB. Так что я знаю, что это можно. Так же как и возможен dualboot с разных разделов, что мне посоветовал по личному опыту один слаковод. Я хочу сказать, что проблема multiboot на этом ноутбуке весьма специфичная, и, кажется, я подобрался за 2 года пользования к ее разгадке очень близко.
20:57
21:14
Legacy Support <disabled>
Secure Boot <disabled>
И ксати заметил, наврал ненароком прошлый раз Вам:
Internal Network Adapter Boot <disabled>
У меня стоял загрузчик на /dev/sda1. Я пробовал такую конфигурацию, и с Debain+Win и Ubuntu+Win.
Но пока что сейчас не хочу пробовать. Но обязательно попробую, может быть, что-то недоглядел.
21:34
Конечно можно на sda1 несколько загрузчиков, просто вы не хотите. У вас другой, тоже рабочий вариант, но он очень необычный. Я бы его назвал "Windows главная, остальные вручную". А про efi system уже сказал - все дети Валя, но я различаю и мне нормуль.
18:58
19:24
20:00
sudo efibootmgr -o 0002
Ну или что Вы там хотите...
Enjoy!
20:05
Только efibootmgr -b 0001 -A
Спасибо большое.
Ну и спасибо товарищу choice.
Заодно выяснили, что несколько разделов EFI, это нормально :)
Ну Слаководы ерунды не посоветуют.
20:30
20:41
20:48
Имея root'a, оно, конечно, не критично, но привыкать к плохому не нужно)
20:41
Несколько разделов EFI для кого? Для прошивки только один, для конкретной системы тоже только один, но прикол, что они для всех разные. Посмотрите из любой системы выхлоп команды lsblk. Там будет видно, какой раздел она (система, не прошивка в bios) считает EFI.
По-прежнему предлагаю добавить загрузчик grub на sda1 и тогда в биос появится возможность переставлять очерёдность загрузки именно ОС.
Но прежде шаги 1-2. Они покажут, что прошивка откликается на команды.
21:04
Для кого несколько разделов EFI? Тут ответ, для самого юзера. Удобно, что загрузчик невозможно затереть. Особенно на машинке для тестов.
21:04
21:27
Убедится, что в /boot нет директории efi и есть образы ядра и директория grub. Создать там директорию efi.
Примонтировать в неё sda1 командой (mount /dev/sda1 /boot/efi)
В файл fstab добавить строку (/dev/sda1 /boot/efi vfat defaults,noatime 0 2)
Перезагрузка в эту систему как обычно по F9 для того, чтобы убедиться, что fstab без ошибок. Если зашли, значит всё ок, тогда дать команду (sudo grub-install) . Если получите сообщение no error reported, то выполнить (sudo grub-mkconfig -o /boot/grub/grub.cfg)
При перезагрузке первой запустится ваша Linux.
21:37
21:54
https://ibb.co/42d7f4g
Загрузчик debian специально и прицельно установлен без shim компоненты.
22:18
Линуксы на sdb, загрузчики на sdb1.
22:33
https://ibb.co/Rp74V6m
22:38
Это какая-то проверка? :)
22:53
23:10
23:04
14:52
Alpine хорош для встройки, медиацентра с тем же kodi и пр. Для десктопа, всё таки, компромисов много... Но кто тяготеет к минимализму - вполне подойдёт!
16:54
К автору статьи:
Сам процесс установки хоть в автоматическом, хоть в полуавтоматическом режиме крайне простой, единственное нужно разобраться с загрузчиком syslinux... По Вашей записи также остался вопрос по ESP.
17:30
По которой?
17:32
Некорректно написал комментарий, прошу прощения, исправлюсь ))
07:34
Редкий гость на этом сайте
11:19
23:29