Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
igor:gentoo_installation [2019/10/18 20:15] – [Выбор профиля установки системы] igor | igor:gentoo_installation [2019/12/28 18:01] (текущий) – [Установка базовой системы] igor |
---|
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__'' - нас попросят ввести новый пароль администратора (рута, суперпользователя) - вводим. Попросят повторить - повторяем. \\ \\ |
''(chroot) LiveCD # __ls -l /etc/portage/make.profile__ \\ | ''(chroot) LiveCD # __ls -l /etc/portage/make.profile__ \\ |
lrwxrwxrwx 1 root root 65 окт 12 23:53 make.profile -> ../../var/db/repos/gentoo/profiles/default/linuх/amd64/17.0'' \\ \\ | lrwxrwxrwx 1 root root 65 окт 12 23:53 make.profile -> ../../var/db/repos/gentoo/profiles/default/linuх/amd64/17.0'' \\ \\ |
| Последняя цифра у вас, вероятно, будет больше. \\ |
Как видим, символическая ссылка имеется в наличии, и сейчас она указывает на базовый профиль, который нам рекомендован по умолчанию. Навести символическую ссылку на другой профиль можно, конечно, и вручную, но в этом нет необходимости: Гента опять-таки не была бы Гентой, если бы ее разработчики не придумали для нас еще одну приспособу - утилиту eselect. Увидеть, какой профиль стоит в данный момент, можно командой: \\ \\ | Как видим, символическая ссылка имеется в наличии, и сейчас она указывает на базовый профиль, который нам рекомендован по умолчанию. Навести символическую ссылку на другой профиль можно, конечно, и вручную, но в этом нет необходимости: Гента опять-таки не была бы Гентой, если бы ее разработчики не придумали для нас еще одну приспособу - утилиту 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/amd64/17.0'' \\ \\ | default/linux/amd64/17.0'' \\ \\ |
Последняя цифра у вас, вероятно, будет больше. Вывод этой команды очевидным образом "перекликается" с выводом предыдущей. \\ | Вывод этой команды очевидным образом "перекликается" с выводом предыдущей. \\ |
Следующая команда покажет все профили, какие доступны: \\ \\ | Следующая команда покажет все профили, какие доступны: \\ \\ |
''(chroot) LiveCD # __eselect profile list__ \\ | ''(chroot) LiveCD # __eselect profile list__ \\ |