Инструменты пользователя

Инструменты сайта


igor:gentoo_installation

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
igor:gentoo_installation [2019/10/16 22:46] – [Выбор профиля установки системы] igorigor:gentoo_installation [2019/12/28 21:01] (текущий) – [Установка базовой системы] igor
Строка 467: Строка 467:
 LiveCD # __mount --rbind /sys /mnt/gentoo/sys__ \\ LiveCD # __mount --rbind /sys /mnt/gentoo/sys__ \\
 LiveCD # __mount --rbind /dev /mnt/gentoo/dev__ \\ LiveCD # __mount --rbind /dev /mnt/gentoo/dev__ \\
 +LiveCD # __mount --rbind /dev/pts /mnt/gentoo/dev/pts__ \\
 LiveCD # __chroot /mnt/gentoo /bin/bash__ \\ LiveCD # __chroot /mnt/gentoo /bin/bash__ \\
 +LiveCD # __env-update__ \\
 LiveCD # __source /etc/profile__ \\ LiveCD # __source /etc/profile__ \\
 LiveCD # __export PS1="(chroot) $PS1"__'' \\ \\ LiveCD # __export PS1="(chroot) $PS1"__'' \\ \\
 И объясняю смысл. \\ И объясняю смысл. \\
 Если совсем коротко, то нужно передать "эмбриональной" системе некоторые органы управления, которые имеются у "материнской" системы. Когда у "эмбриона" вырастет собственное ядро, с этим проблем не будет, а пока приходится обеспечивать его жизнеспособность вот таким образом. \\ Если совсем коротко, то нужно передать "эмбриональной" системе некоторые органы управления, которые имеются у "материнской" системы. Когда у "эмбриона" вырастет собственное ядро, с этим проблем не будет, а пока приходится обеспечивать его жизнеспособность вот таким образом. \\
-Команда cp с ключом -L копирует __настоящее содержимое__ файла (/etc/resolv.conf - символическая ссылка). Этот файл содержит IP-адреса DNS-серверов, без которых нам не удастся выходить в интернет. Сейчас они находятся в /etc/resolv.conf ("материнская" файловая система), но после выполнения chroot этот файл не будет виден, а процедура разрешения URL-адресов в IP-адреса будет пытаться искать адреса DNS-серверов в одноименном файле "эмбриональной" файловой системы... а там ничего нет... значит надо заранее скопировать. Аналогичная ситуация с proc, sys и dev. Напомню, что proc, sys и dev - это псевдофайловые системы, которые не хранятся ни на каких устройствах. Но, как и настоящие файловые системы, они должны быть надлежащим образом смонтированы. Команда mount с ключом --rbind позволяет примонтировать файловую систему (рекурсивно, те. вместе со всем, что смонтировано внутри нее) во вторую точку монтирования, не теряя первую. То есть файловые системы sys и dev теперь будут доступны как "материнской" ОС, так и "эмбриону". Команда chroot позволяет запустить некоторую программу (в нашем случае диалоговую оболочку /bin/bash) так, чтобы эта программа видела не всю файловую систему, которая имеется на компьютере, а некоторую ее ветвь - в данном случае наш винчестер со всеми файлами и каталогами, которые мы на нем создали. За командой source /etc/profile стоит скрипт, формирующий переменные окружения для запускаемого баша. Если командой env просмотреть переменные окружения баша до и после команды source /etc/profile, разница будет видна невооруженным глазом. Ну и последняя команда меняет вид системного приглашения (переменная PS1): теперь оно каждый раз будет нам напоминать, что мы работаем в chroot-режиме. Кстати чтобы вернуться в среду с полной файловой системой, нам нужно просто завершить работу той программы, для которой делали chroot. То есть просто дать команду exit - и мы снова увидим системное приглашение без (chroot). \\ \\+Команда cp с ключом -L копирует __настоящее содержимое__ файла (/etc/resolv.conf - символическая ссылка). Этот файл содержит IP-адреса DNS-серверов, без которых нам не удастся выходить в интернет. Сейчас они находятся в /etc/resolv.conf ("материнская" файловая система), но после выполнения chroot этот файл не будет виден, а процедура разрешения URL-адресов в IP-адреса будет пытаться искать адреса DNS-серверов в одноименном файле "эмбриональной" файловой системы... а там ничего нет... значит надо заранее скопировать. Аналогичная ситуация с proc, sys и dev. Напомню, что proc, sys и dev - это псевдофайловые системы, которые не хранятся ни на каких устройствах. Как и настоящие файловые системы, они должны быть надлежащим образом смонтированы, но поскольку они все-таки ненастоящие (или по-какой-то иной причине?), примонтировать их во вторую точку, не теряя первуюобычным путем не получится - приходится указывать  ключ --rbind (в некоторых руководствах пишут -o bind - в данной ситуации это равнозначно). То есть файловые системы sys и dev теперь будут доступны как "материнской" ОС, так и "эмбриону". Команда chroot позволяет запустить некоторую программу (в нашем случае диалоговую оболочку /bin/bash) так, чтобы эта программа видела не всю файловую систему, которая имеется на компьютере, а некоторую ее ветвь - в данном случае наш винчестер со всеми файлами и каталогами, которые мы на нем создали. Однако, когда мы запускаем баш командой chroot, он не читает файлы с переменными окружения, которые находятся в каталоге /etc/env.d - значит придется это сделать принудительно командой env-update. Команда source /etc/profile здесь - самая трудная для понимания. Гуглить по слову source бесперспективно, и мануала по ней тоже нет, потому что это встроенная команда нашей диалоговой оболочки. В принципе, мы могли бы сейчас сказать, что это совершенно отдельная тема, "просто так надо", но я все же скажу пару слов. Etc/profile представляет собой скрипт на языке баш, только он не имеет шебанга и поэтому не может выполняться как самостоятельная программа. По команде source баш - __тот самый__ баш, который сейчас с нами работает в качестве диалоговой оболочки, - выполняет этот скрипт, формирующий переменные окружения для баша, и по окончании выполнения скрипта эти переменные остаются в нашем распоряжении (чего не было бы, если бы мы запустили /etc/profile как самостоятельный скрипт). Если командой env просмотреть переменные окружения баша до и после команды source /etc/profile, разница будет видна невооруженным глазом. Ну и последняя команда меняет вид системного приглашения (переменная PS1): теперь оно каждый раз будет нам напоминать, что мы работаем в chroot-режиме. Кстати чтобы вернуться в среду с полной файловой системой, нам нужно просто завершить работу той программы, для которой делали chroot. То есть просто дать команду exit - и мы снова увидим системное приглашение без (chroot). \\ \\
 ==== Установка пароля администратора ==== ==== Установка пароля администратора ====
 Совсем простая операция. Даем команду ''__passwd__'' - нас попросят ввести новый пароль администратора (рута, суперпользователя) - вводим. Попросят повторить - повторяем. \\ \\ Совсем простая операция. Даем команду ''__passwd__'' - нас попросят ввести новый пароль администратора (рута, суперпользователя) - вводим. Попросят повторить - повторяем. \\ \\
 ==== Выбор профиля установки системы === ==== Выбор профиля установки системы ===
-Мы проделали немалую работу, но пока что не сделали ничего специфически гентушного: такие действия как форматирование дисков и заполнение их файлами имеют место в разных дистрибутивах, и даже установка Windows без этого не обходится. И вот сейчас мы подходим к операции, которая пользователям других операционных систем незнакома. \\ +Мы прошли уже несколько этапов работы, но пока что не сделали ничего специфически гентушного: такие действия как форматирование дисков и заполнение их файлами имеют место в разных дистрибутивах, и даже установка Windows без этого не обходится. И вот сейчас мы подходим к операции, которая пользователям других операционных систем незнакома. \\ 
-Мы уже отмечали основное отличие Генты от других ОС: возможность выбирать, что нам надо и что нет, и мы уже знаем, что основной инструмент, обеспечивающий этот выбор, - Use-флаги. Их очень много, и работа с ними "вручную" может оказаться весьма хлопотной. Но Гента не была бы Гентой, если бы в ней не был предусмотрен механизм более высокого уровня, упрощающий эту работу. Таким механизмом служат пофили установки системы. \\ +Мы уже отмечали основное отличие Генты от других ОС: возможность выбирать, что нам надо и что нет, и мы уже знаем, что основной инструмент, обеспечивающий этот выбор, - Use-флаги. Их очень много, и работа с ними "врукопашную" может оказаться весьма хлопотной. Но Гента не была бы Гентой, если бы в ней не был предусмотрен механизм более высокого уровня, упрощающий эту работу. Таким механизмом служат профили установки системы. \\ 
-**Философия** профилей: имея ОДИН набор "сырых материалов" для сборки системы и НЕСКОЛЬКО профилей, получаем соответствующее множество типовых вариантов системы, каждый из которых ориентирован на свою сферу применения, например для сервера или для десктопного компьютера, или для рабочего места разработчика программ... Их наличие (да к тому  же возможность создания новых) делает Генту __метадистрибутивом__, т. е. средством создания новых дистрибутивов. **Идеология** состоит в том, что каждый профиль представляет собой не что иное как рационально подобранный комплект Use-флагов. **Технически** это реализовано как дерево каталогов, корень которого находится в /var/db/repos/gentoo - это //базовый// профиль, а все другие основываются на нем или друг на друге. Профиль, выбранный для установки системы в данный момент, определяется файлом /etc/portage/make.profile. Этот файл представляет собой символическую ссылку, которая ведет на одну из ветвей дерева профилей. Мы получили этот файл в составе stage3-архива, и сейчас он указывает на базовый профиль, который нам рекомендован по умолчанию. \\ +**Философия** профилей: имея ОДИН набор "сырых материалов" для сборки системы и НЕСКОЛЬКО профилей, получаем соответствующее множество типовых вариантов системы, каждый из которых ориентирован на свою сферу применения, например для сервера или для десктопного компьютера, или для рабочего места разработчика программ... Их наличие (да к тому  же возможность создания новых) делает Генту __метадистрибутивом__, т. е. средством создания новых дистрибутивов. **Идеология** состоит в том, что каждый профиль представляет собой не что иное как рационально подобранный комплект Use-флагов. **Технически** это реализовано как дерево каталогов, корень которого находится в /var/db/repos/gentoo/profiles - это //базовый// профиль, а все другие основываются на нем или друг на друге. "Полазать" по этому дереву может быть весьма поучительно, но лучше оставить это на потом, чтобы сейчас не отклоняться от "дорожной карты". Профиль, выбранный для установки системы в данный момент, определяется файлом /etc/portage/make.profile. Этот файл представляет собой символическую ссылку, которая ведет на одну из ветвей дерева профилей. Мы должны были получить его в составе stage3-архива. Проверим? \\ \\ 
-Профили представлены в виде сложной системы файлов и каталогов в каталоге /usr/portage/profiles. "Полазать" по этому дереву может быть весьма поучительно, но лучше оставить это на потом, чтобы сейчас не отклоняться от "дорожной карты". \\ +''(chroot) LiveCD # __ls -l /etc/portage/make.profile__ \\ 
-Файл /etc/portage/make.profile должен содержать символическую ссылку на один из профилей. Можно, конечно, сделать это вручную, но в этом нет необходимости. Увидеть, какой профиль стоит в данный момент, можно командой: \\ \\+lrwxrwxrwx 1 root root 65 окт 12 23:53 make.profile -> ../../var/db/repos/gentoo/profiles/default/linuх/amd64/17.0'' \\ \\ 
 +Последняя цифра у вас, вероятно, будет больше. \\ 
 +Как видим, символическая ссылка имеется в наличии, и сейчас она указывает на базовый профиль, который нам рекомендован по умолчанию. Навести символическую ссылку на другой профиль можно, конечно, и вручную, но в этом нет необходимости: Гента опять-таки не была бы Гентой, если бы ее разработчики не придумали для нас еще одну приспособу - утилиту eselect. Увидеть, какой профиль стоит в данный момент, можно командой: \\ \\
 ''(chroot) LiveCD # __eselect profile show__ \\ ''(chroot) LiveCD # __eselect profile show__ \\
 Current /etc/portage/make.profile symlink: \\ Current /etc/portage/make.profile symlink: \\
-default/linux/x86/17.0'' \\ \\ +default/linux/amd64/17.0'' \\ \\ 
-Последняя цифра у васвероятно, будет больше. \\ +Вывод этой команды очевидным образом "перекликается" с выводом предыдущей. \\ 
 Следующая команда покажет все профили, какие доступны: \\ \\ Следующая команда покажет все профили, какие доступны: \\ \\
 ''(chroot) LiveCD # __eselect profile list__ \\ ''(chroot) LiveCD # __eselect profile list__ \\
-[1] default/linux/x86/17.0 (stable) * \\ +[1] default/linux/amd64/17.0 (stable) * \\ 
-[2] default/linux/x86/17.0/selinux (stable) \\+[2] default/linux/amd64/17.0/selinux (stable) \\
 (и еще много других)'' \\ \\ (и еще много других)'' \\ \\
 Мы, конечно, хотим только стабильную версию? (Мы же договорились, что мы начинающие гентушники, но тогда соваться в нестабильные версии нам рано). Тогда рекомендация из [[https://pingvinus.ru/note/gentoo-install]] давать команду вот так: \\ \\ Мы, конечно, хотим только стабильную версию? (Мы же договорились, что мы начинающие гентушники, но тогда соваться в нестабильные версии нам рано). Тогда рекомендация из [[https://pingvinus.ru/note/gentoo-install]] давать команду вот так: \\ \\
 ''(chroot) LiveCD # __eselect profile list | grep stable__'' \\ \\ ''(chroot) LiveCD # __eselect profile list | grep stable__'' \\ \\
-В английском хэндбуке нам рассказывают про 3-4 профиля, в нынешней реальной жизни их гораздо больше (я у себя вижу 22 - сколько же лет этому хэндбуку?). В будущем, можно не сомневаться, их будет еще больше. Как в них ориентироваться? \\ +В английском хэндбуке нам рассказывают про 3-4 профиля, в нынешней реальной жизни их гораздо больше (я у себя в 2017 году видел 22 - сколько же лет этому хэндбуку?). В будущем, вероятно, их будет еще больше. Как в них ориентироваться? \\ 
-Названия некоторых профилей начинаются с default/linux/amd64/13.0 (у вас, возможно, последние цифры будут больше), далее видим: desktop - для обычного настольного компьютера, server - для сервера, developer - для компьютера, на котором будет производиться разработка программ. Далее: desktop/gnome, desktop/kde - кто хочет, тот поймет. А для тех, кто не поймет, имеется дефолтное решение, отмеченное звездочкой. \\ +Названия некоторых профилей начинаются с default/linux/amd64/17.0, далее видим: desktop - для обычного настольного компьютера с графической оболочкой, server - для сервера, developer - для компьютера, на котором будет производиться разработка программ. Далее: desktop/gnome, desktop/kde - кто хочет, тот поймет. А для тех, кто не поймет, имеется дефолтное решение, отмеченное звездочкой. \\ 
-Следующая группа пофилей в списке имеет вместо слова default - hardened - это профили с повышенной безопасностью. \\+Следующая группа профилей в списке имеет вместо слова default - hardened - это профили с повышенной безопасностью. \\
 Определившись с выбором профиля, командуем примерно так: \\ \\ Определившись с выбором профиля, командуем примерно так: \\ \\
-''(chroot) LiveCD # __eselect profile set 11__'' \\ \\ +''(chroot) LiveCD # __eselect profile set 5__'' \\ \\ 
-(или укажите номер нужного вам профиля вместо 11). По итогам этой операции получим файл /etc/portage/make.profile. Этот файл - символическая ссылка. Если проследить, в какой каталог она ведет (в один из /usr/portage/profiles/...), то найдем там файл make.defaults, содержащий use-флаги и другие переменные, определяющие поведение программы emerge. Ничего не переписывайте в этом файле и вообще в каталоге, т. к. при обновлении дерева портежей все ваши исправления будут "забыты". Если на самом деле есть нужда что-то переопределить, то вспомните, что я вам писал выше про make.conf, и редактируйте его. \\+(или укажите номер нужного вам профиля вместо 5). Если проследить, в какой каталог теперь ведет наша символическая ссылка, то найдем там файл make.defaults, содержащий use-флаги и другие переменные, определяющие поведение программы emerge. Ничего не переписывайте в этом файле и вообще в каталоге, т. к. при обновлении дерева портежей все ваши исправления будут "забыты". Если на самом деле есть нужда что-то переопределить, то вспомните, что я вам писал выше про make.conf, и редактируйте его. \\
 Чтобы зафиксировать сделанные изменения, командуем: \\ \\ Чтобы зафиксировать сделанные изменения, командуем: \\ \\
 ''(chroot) LiveCD # __env-update && source /etc/profile__'' \\ \\ ''(chroot) LiveCD # __env-update && source /etc/profile__'' \\ \\
igor/gentoo_installation.1571255194.txt.bz2 · Последнее изменение: 2019/10/16 22:46 — igor