Научная статья на тему 'КАК СОБРАТЬ GENTOO ИЗ ПОД LINUX MINT'

КАК СОБРАТЬ GENTOO ИЗ ПОД LINUX MINT Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
488
59
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
Gentoo / установка / linux / Mint / Gentoo / installation / linux / Mint.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Боровский Андрей Александрович

Статья посвящена краткой выжимке по основной инструкции сборки Gentoo. Данная статья не является истинной в последней инстанции и требует внимательного прочтения. Так же рекомендуется иметь навыки для низкого порога входа в тему статьи. По той причине, что сам дистрибутив является крайне специфичным и неоднобразным в изучении и применении, а так же в повседневном пользовании. В связи с этим следует учесть первоначальную цель, которую будете преследовать при сборке данного дистрибутива, которая будет нацелена на специфику техники, сферу её применения.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

INSTALLATION GENTOO FROM LINUX MINT

This article is devoted to a brief summary of the basic Gentoo build instructions. This article is not the ultimate truth and requires careful reading. It is also recommended to have skills for a low threshold of entry into the topic of the article. For the reason that the distribution itself is extremely specific and diverse in study and application, as well as in everyday use. In this regard, you should take into account the initial goal that you will pursue when building this distribution, which will be aimed at the specifics of the technique, the scope of its application.

Текст научной работы на тему «КАК СОБРАТЬ GENTOO ИЗ ПОД LINUX MINT»

Научно-образовательный журнал для студентов и преподавателей «StudNet» №4/2021

КАК СОБРАТЬ GENTOO ИЗ ПОД LINUX MINT

INSTALLATION GENTOO FROM LINUX MINT

УДК 004.4

Боровский Андрей Александрович, Соискатель, Мурманский государственный технический университет, Россия, г. Мурманск

Borovsky Andrey Alexsandrovich, [email protected]

Аннотация: Статья посвящена краткой выжимке по основной инструкции сборки Gentoo. Данная статья не является истинной в последней инстанции и требует внимательного прочтения. Так же рекомендуется иметь навыки для низкого порога входа в тему статьи. По той причине, что сам дистрибутив является крайне специфичным и неоднобразным в изучении и применении, а так же в повседневном пользовании. В связи с этим следует учесть первоначальную цель, которую будете преследовать при сборке данного дистрибутива, которая будет нацелена на специфику техники, сферу её применения.

Annotation: This article is devoted to a brief summary of the basic Gentoo build instructions. This article is not the ultimate truth and requires careful reading. It is also recommended to have skills for a low threshold of entry into the topic of the article. For the reason that the distribution itself is extremely specific and diverse in study and application, as well as in everyday use. In this regard, you should take into account the initial goal that you will pursue when building this distribution, which will be aimed at the specifics of the technique, the scope of its application. Ключевые слова: Gentoo, установка, linux, Mint Keywords: Gentoo, installation, linux, Mint.

Цель: Описание наиболее доступного способа простой компиляции и сборки исходного кода операционной системы Gentoo в уже собранной среде операционной системы Linux Mint с использованием Live-USB образа.

Результаты: Получение навыков по сборке операционной системы Gentoo.

Выводы: Произведённые действия по больщей части в плане времязатрат зависят от компонентов ПК на котором будут производиться данные действия.

В данной статье будет рассмотрен один из способов сборки не популярного Linux-дистрибутива Gentoo, на не менее непопулярном дистрибутиве Linux Mint. Перед самой основной статьи немного предыстории об обоих дистрибутивах.

Linux Мт^Минт, Мята)— дистрибутив Linux на основе Debian. Первоначально разрабатывался компанией Canonical Ltd.. Слово «убунту» переводится с зулусского языка как «человечность», и Ubuntu иногда называют «Debian'ом с человеческим лицом». Последний проход на данный момент — версия 20.10, под кодовым названием «Groovy Gorilla».)) и базировался на стабильных ветках и имел более частые релизы версий, но начиная с версии 17.0 перешёл на двухлетний цикл разработки. Исходя из этого можно сделать вывод что минт часто бывает пакетно совместим с самим дебианом(Debian) и если не хватает какого-либо инструмента, то часто можно позаимствовать из репозитория(либо собрать из сырцов, либо написать самому).

Способ сборки будет простой, не занимающий больших нагрузок и будет подходить для железа от конца 2014-15 годов.

Первым этапом на пути становления тру-гентушником будет решение вопроса "Зачем оно тебе необходимо?". Сборка генты часто ассоциируется с большой сложностью и некоторой затянутостью процесса(может занимать в некоторых случаях до 4-5 недель реального времени), но затянутость процесса можно срезать путём компиляции на более мощной вычислительной технике, а так же более стабильным и быстрым каналом Internet.

После разрешения первого этапа и становление задачи "для чего будет собрана данная система, как она будет выглядеть" необходимо решить задачу "как начать сборку?". Так же стоит определиться изначально с выбором архива

multilib(32 или 64 бит) или no-multilib. Основная разница между ними в том, что no-multilib архив в качестве основы для системы обеспечивает полноценную 64-битную среду. Однако это будет означать, что переключиться на профили multilib будет трудноосуществимо (хотя это и возможно).

Пользователям, которые только начинают знакомиться с Gentoo, следует избегать использование архива no-multilib (если только это не продиктовано другими соображениями).

Предупреждение:

Имейте в виду, миграция с no-multilib на multilib потребует чрезвычайно хорошего знания Gentoo и наличия набора инструментов разработки более низкого уровня (от которых наших разработчиков Toolchain может даже бросить дрожь). Данный процесс не для слабонервных и выходит за рамки данного рvководства.Гhttps://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation/ru#.D0 .92.D1.8B.D0.B1.D0.BE.D1.80 .D0.B0.D1.80.D1.85.D0.B8.D0.B2.D0.B0 stagel

Данная задача решается при помощи наличия USB-Flash накопителя(флэшки) и последующей записью на неё любого Live-CD(USB,DVD) образа дистрибутива линукс для последующей загрузки на него(в случае статьи это Mint). По завершению действия связанного с записью образа надо в него загрузиться. Обычно это не представляет большой сложности, т.к. splash-заставка при загрузке пк отключен, либо можно убрать в BIOS, там же можно выставить приоритет загрузочных носителей, в том числе и ту флэшку. После загрузки в систему и её инициализации необходимо разметить жёсткий диск или любой другой носитель, который запланирован для установки дистрибутива. Стоит отметить что имеется несколько способов разметки пространства носителя, так же некоторые имеют GUI.

Но рекомендуется использовать инструмент fdisk или gdisk^ зависимости от того, что планируется использовать GTP или MBR). Данный инструмент прост в освоении и не требует каких-то глубоких познаний в программном обеспечении, если возникают какие-то вопросы по ходу(мере) использования, то всегда можно обратиться к документации как онлайн, так и вызвав через команду в терминале

man gdisk. Для просмотров текущей разметки стоит воспользоваться командой: fdisk /dev/sda. Нажмите на клавишу p для того чтобы отобразить текущую разметку диска. Для того чтобы удалить какой-либо раздел надо нажать на d и выбрать номер раздела диска и поочерёдно нажимать на р для своевременного вывода списка. После удаления(очистки места) необходимых разделов необходимо создать загрузочный раздел BIOS. Для этого нажмите на n, затем р, потом 1. Первый сектор вызванный "1" должен начинаться с 2048. Это очень важно, т.к. начальный загрузчик может обнаружить его и использовать по своему усмотрению. Нажмите на Enter, а при запросе последнего сектора +2М. Таким образом был создан загрузочный раздел размером в 2Мб. При необходимости его можно пометить для использования UEFI.

Создание загрузочного раздела происходит похожим образом, единственное отличие в том что это будет уже 2й по порядку раздел и с меткой boot. Так же стоит создать раздел для подкачки, часто им не следует пренебегать из-за особенностей некоторого ПО использовать данный раздел как изначальный аккумулятор для развёртывания кода. Не стоит забывать и о корневом разделе системы, который тоже стоит включить в таблицу разделов. Сохранить разметку дискового пространства можно нажатием w, произойдёт запись и выход из fdisk.

Созданные разделы не содержат каких-либо файловых систем, для их размещения воспользуйтесь различными приложениями, к примеру mke2fs(mkfs.ext2). Пример использования выглядит так: root #mkfs.ext2 -T small /dev/<device> root #mkfs.ext3 -T small /dev/<device> root #mkfs.ext4 -T small /dev/<device> где <device> - это номер раздела.

Для активации раздела подкачки используется команда swapon, но перед этим надо инициализировать данный раздел командой mkswap с указанием раздела на котором размещён swap.

Когда созданы и размещены файловые системы на разделах необходимо их смонтировать, начать стоит с корневого раздела, используется команда mount /dev/<device> %каталог для монтирования%.

Так же перед этим существует необходимость в проверке корректности настройки даты и времени, для того чтобы это не привело к странным результатам. Команда date позволит просмотреть текущую дату и время. В почти любой дистрибутив Linux можно установить ntpd для Mint используется ntp, чтобы его установить используйте apt install ^р(от root пользователя, либо используя sudo). Чтобы синхронизорать время используйте ntpd -q -g. При отсутствии необходимости отсылать свои данные на сервер для синхронизации и беспокойства за безопасность есть возможность ручной установки времени. Для этого используется всё тот же date только с указанием параметров, к примеру date 100313162016, это будет 13:16 3 октября 2016 года.

Перед тем как установить систему её необходимо скачать. Для этого перейдите в /mnt/gentoo, затем при помощи wget из раздела https://www.gentoo.org/downloads/#other-arches скачайте необходимый тарбол, либо другим доступным способом(например с помощью браузера). Поместите его в директорию /mnt/gentoo и распакуйте: tar xpvf stage3-*.tar.bz2 --xattrs-include-'*.*' --numeric-owner

Далее идёт настройка параметров компиляции, которые использует пакетный менеджер Portage. Эти перемененные находятся в файле make.conf в директории /mnt/gentoo/etc/portage/. Для того чтобы их отредактировать используется любой тектовый редактор.

Пример: nano -w /mnt/gentoo/etc/portage/make.conf

CFLAGS, CXXFLAGS определяют параметры компиляторам GCC+ и C++. Для более подробной информации можно обратиться к https://gcc.gnu.org/onlinedocs/ , а так же к info gcc. Параметры -march и(или) -mtune- указывают на целевую архитектуру, часто используется параметр native и компилятор использует целевую архитектуру существующей системы, но т.к. сборка происходит через Live-систему, то данные параметры необходимо указать

вручную. Параметр оптимизации -О(букова О) указывает на класс оптимизации, рекомендуемый параметр -О2. После того как флаги указаны можно указать параметр для переменной MAKEOPTS, которая определяет сколько процессов компиляции должно запускаться параллельно. Хороший вариант это указать количество ядер процессора, но не всегда лучший.

После того как закончите редактировать файл с параметрами и сохраните изменения, следующим шагом будет переход в изолированную среду. Если бы сборка происходила в Live-gentoo, то можно было воспользоваться инструментом поставляемом в комплекте mirrorselect И при помощи mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf указать используемые зеркала. Но т.к. это происходит в другом дистрибутиве, то необходимо указать данные параметры вручную в данном файле, либо создать данный файл и заполнить его. Затем идёт настройка репозитория ebuild файлов.

Для начала создайте каталог mkdir --parents /mnt/gentoo/etc/portage/repos.conf. Затем скопируйте cp

/mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

Один из последних шагов перед началом сборки является копирование информации о DNS: cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ Так же должны быть доступны файловые системы: mount --types proc /proc /mnt/gentoo/proc mount --rbind /sys /mnt/gentoo/sys mount --make-rslave /mnt/gentoo/sys mount --rbind /dev /mnt/gentoo/dev mount --make-rslave /mnt/gentoo/dev

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

test -L /dev/shm && rm /dev/shm && mkdir /dev/shm mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm

И проверьте: chmod 1777 /dev/shm

Для перехода в другое окружение выполните 3 шага:

chroot /mnt/gentoo /bin/bash

source /etc/profile

export PS1="(chroot) ${PS1}"

Далее смонтируйте раздел boot: mount /dev/<device> /boot, если он был создан.

Следующий шаг это получение снимка файлов Gentoo. emerge-webrsync используется чаще за межсетевым экраном из-за протоколов HTTP/HTTPS и когда необходимо избежать излишней нагрузки на канал сети.

После загрузки снимка необходимо выбрать профиль, который больше всего подходит: eselect profile list - выведет список используемого на данный момент и доступных профилей для системы. Чтобы выбрать другой профиль: eselect profile set %номер профиля% Предупреждение:

Не стоит халатно относиться к обновлениям профиля. Выбирая изначальный профиль, убедитесь, что профиль соответствует той же версии, которая была использована в stage3 (к примеру, 17.1). Каждая новая версия профиля объявляется через элемент новостей с инструкциями по миграции. Прочитайте и следуйте им, прежде чем перейти на новый

профиль.[https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation/ru#.D0.92. D1.8B.D0.B1.D0.BE.D1.80_.D0.B0.D1.80.D1.85.D0.B8.D0.B2.D0.B0_stage]

После этого логично будет обновить @world: emerge --ask --verbose --update --deep --newuse @world. Будет произведено обновление пакетов и их получение в случае отсутствия.

USE - переменная доступная пользователям в которой возможно указать будут ли собраны пакеты с поддержкой определённых зависимостей или же без них. Большая часть дистрибутивов компилирует пакеты с поддержкой всего, что увеличивает размер кода и его время обработки. Для того чтобы

соориентироваться по всем доступным переменным USE можно обратиться к файлу /var/db/repos/gentoo/profiles/use.desc.

При необходимости настройки часового пояса для системы имеется список всех доступных поясов в /usr/share/zoneinfo/, затем запишите выбранный в файл /etc/timezone:

ls /usr/share/zoneinfo

echo "Europe/Brussels" > /etc/timezone

emerge --config sys-libs/timezone-data

Генерация локалей имеет необходимость при работе с различными языками(очевидно названия и содержимое файлов). Так же локаль указывает на то какие правила будут использоваться при сортировке строк, формат вывода даты и так далее. Локали указываются в /etc/locale.gen. Более подробно о локалях можно узнать тут: https://ru.wikipedia.org/wiki/Locale ; так же о кодировках: https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B1%D0%BE%D1%80_%D1 %81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2#%D0%A 0%D0%B0%D 1 %81 %D0%BF%D 1 %80%D0%BE%D 1 %81 %D 1 %82%D 1 %80%D0 %B0%D0%BD%D 1 %91 %D0%BD%D0%BD%D 1 %8B%D0%B5_%D0%BA%D0% BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8

Далее стоит создать локали при помощи: locale-gen. После чего установить локаль для всей системы. Для этого выведите список в котором будут представленные указанные и сгенерированные локали:

eselect locale list, а затем eselect locale set %номер локали% для выбора конкретной из них. Для проверки стоит перезагрузить окружение: env-update && source /etc/profile && export PS1="(chroot) ${PS1}"

Далее идёт установка исходного кода(ядра), это является слоём между пользовательским ПО и оборудованием системы. Для более подробного ознакомления можно обратиться - https://wiki.gentoo.org/wiki/Kernel/Overview/ru. Выбрав подходящее ядро, установите его: emerge --ask sys-kernel/gentoo-sources. Данная команда создаст символьную ссылку linux, которая указывает установленную версию: ls -l /usr/src/linux.

Теперь идёт этап конфигурации ядра и его сборки. Реккомендуется конфигурировать и собирать его вручную. Ручному конфигурированию поможет пакет sys-apps/pciutils, который устанавливается через emerge --ask sys-apps/pciutils. lspci и lsmod помогут больше собрать информации о системе на которой происходит сборка. Перейдите в каталог с ядром и выполните make menuconfig, который запусит меню конфигурации. В данном меню укажите необходимые параметры, сохраните изменения в файл конфигурации и выйдете. Для компиляции и установки используются make && make modules_install, что можно использовать вместе с ключом -jX, где Х это число параллельных задач для процесса сборки. При завершении компиляции остаётся make install, который скопирует образ в каталог /boot/ вместе с System.map и файлом настройки ядра.

Для того чтобы система по запуску не только загружала ядро, но и модули не забудьте выполнить команду find для просмотра доступных модулей. find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less. Для того чтобы автоматически происходила загрузка необходимых модулей надо отредактировать или создать некотрые файлы отвечающие за это. К примеру для загрузки модуля сетевой карты надо редактировать etc/modules-load.d/network.conf и будет происходить его принудительная загрузка.

Иногда требуется корректная работа некоторой аппаратной части представленной в виде видеочипов, сетевых интерфейсов и т.д. Большинство необходимых файлов поставляется через пакет emerge --ask sys-kernel/linux-firmware.

После данных манипуляций надо указать системе что монтировать -отредактировать fstab. Дополнительным инструментом для помощи может послужить blkid - он покажет какие метки, тип файловой системы, названия и порядок разделов присутствуют на данный момент в машине на дисках.

Немного о fstab: В файле /etc/fstab используется синтаксис, напоминающий таблицу. Каждая строка состоит из шести полей, которые разделены пропусками (пробелами, отступами или смесь этого). Каждое поле имеет своё значение:

1. Первое поле содержит блочное устройство (или удалённую файловую систему), которое следует примонтировать. Для экземпляров блочных устройств возможно использование различных идентификаторов, включая путь к устройству, метки файловой системы, метки раздела и UUID

2. Второе поле содержит точку монтирования, к которой следует монтировать раздел.

3. Третье поле содержит тип файловой системы, используемой разделом.

4. Четвёртое поле содержит параметры, используемые командой mount во время монтирования. Так как у каждой файловой системы могут быть собственные уникальные параметры, рекомендуется прочитать тап-страницу команды mount (man mount), чтобы получить полный список всех возможных параметров. Параметры монтирования разделяются запятыми.

5. Пятое поле используется командой dump для определения того, нуждается ли раздел в дампе или нет. Обычно это поле содержит 0 (ноль).

6. Шестое поле используется командой fsck для определения порядка проведения проверки ошибок файловой системы, если система была отключена некорректно. Для корневой файловой системы необходимо указывать 1, для остальных — 2 (или 0, если проверка не требуется вовсе).

fhttps: //wiki. gentoo. org/wiki/Handbook: AMD64/Full/Installation/ru#.D0.92.D1. 8B.D0.B1.D0.BE.D1.80 .D0.B0.D1.80.D1.85.D0.B8.D0.B2.D0.B0 stagel

Для редактирования рекомендуется пользоваться: nano -w /etc/fstab. По окончании внесения изменений так же не забудьте сохранить изменения и выйти из редактора.

При необходимости так же стоит внести информацию об узле и сети используемой на данной машине, данные вносятся в файл /etc/conf.d/hostname. Так же часто требуется доменное имя, оно в свою очередь распологается в /etc/conf.d/net. Зачастую без указания данных параметров, отсутствия принудительной загрузки модулей для сетевых карт машина не может выйти даже во внутреннюю сеть предприятия. Поэтому стоит уделить данным параметрам особое внимание, если планируется какое-то сетевое подключение. Так же

советуется установить emerge --ask --noreplace net-misc/netifrc, т.к. по началу будет использоваться DHCP, но для его работы требуется клиент. Так же дополнительные настройки DHCP находятся в net.

Там можно указать для определённого интерфейса как статические параметры, так и использование динамики. Автоматический запуск подключения к сети при загрузке выставляется в init.d: cd /etc/init.d ln -s net.lo net.ethO rc-update add net.ethO default

Так как в системе могут находиться несколько сетевых интерфейсов, то стоит создать соответствующие net.* файлы для них.

DHCP-клиент в Gentoo устанавливается emerge --ask net-misc/dhcpcd и файлы конфигурации, которые предварительно были отредактированы, сиспользуются им же.

Учётной записи root(являющейся всемогущей в Linux) имеет смысл задать пароль: passwd.

Инициализация загрузки и её конфигурация осуществляется через редактирование /etc/rc.conf. В данном файле имеются коментарии, по которым можно соориентироваться и выставить необходимые параметры.

Так же стоит отметить что некоторые утилиты не включены в пакет stage3 и более сложную функциональность они обеспечивают. Например журналирование системы. Данная возможность представлена несколькими утилитами для этого:

app-admin/sysklogd — предоставляет традиционный набор возможностей. Настройки по умолчанию работают хорошо из коробки, что делает этот пакет хорошим вариантом для начинающих.

• app-admin/syslog-ng — расширенные возможности ведения системного журнала. Требуются дополнительные настройки для того, чтобы журналировать что-либо в один большой файл. Некоторые продвинутые пользователи могут выбрать этот пакет за его потенциал; имейте ввиду, что

дополнительные настройки необходимы для любого вида умного журналирования.

• app-admin/metalog — гибко настраиваемая система журналирования.

Для их установки так же используется emerge и они вносятся в rc через rc-update add и т.д.

Подходя к концу установки стоит выбрать один из загрузчиков, которые представлены GRUB2, LILO, ELILO, syslinux. Разберём для этого grub2. Его установка: emerge --ask --verbose sys-boot/grub:2 && emerge --ask sys-boot/grub:2 && grub-install --target=x86_64-efi -efi-directory=/boot. Его настройка осуществляется путём изменения конфигурационного файла /boot/grub/grub.cfg, но можно рискнуть и использовать grub-mkconfig -o /boot/grub/grub.cfg что автоматически создаст конфигурацию, но os-prober может ошибиться и не внести необходимые параметры. На данном этапе установка и настройка базовой системы Gentoo заканчивается и можно перезагрузиться в готовую операционную систему.

Список литературы:

1. GentooAMD64Handbook[Электронный ресурс]https: //wiki. gentoo. org/wiki/Handbook:AMD64/ru

2. Installation guide[Электронный ресурс] https://wiki.archlinux.org/index.php/Installation_guide

3. Gentoo Linux amd64 Handbook: Установка Gentoo[Электронный ресурс]https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation/ru

4. How to Install Linux Mint 20 [The Simplest Way Possible][Электронный ресурс]https://itsfoss.com/install-linux-mint/

5. Download the Linux From Scratch Book//Linux from scratch[Электронный ресурс]http://linuxfromscratch.org/lfs/download.html

Literature

1. GentooAMD64Handbook [Electronic resource] https: //wiki.gentoo.org/wiki/Handbook: AMD64/ru

2. Installation guide [Electronic resource] https: //wiki.archlinux.org/index.php/Installation_guide

3. Gentoo Linux amd64 Handbook: Installing Gentoo [Electronic resource] https://wiki.gentoo.Org/wiki/Handbook:AMD64/Full/Installation/ru

4. How to Install Linux Mint 20 [The Simplest Way Possible] [Electronic resource] https://itsfoss.com/install-linux-mint/

5. Download the Linux From Scratch Book // Linux from scratch [Electronic resource] http://linuxfromscratch.org/lfs/download.html

i Надоели баннеры? Вы всегда можете отключить рекламу.