Ссылки:
1 |
!!! https://www.linuxfromscratch.org/lfs/downloads/stable-systemd/LFS-BOOK-11.1-NOCHUNKS.html#ch-tools-binutils-pass1 |
121. (9.2.) Общая конфигурация сети
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
0. Общая инфа: systemd-networkd - демон конфигурации сети, который можно использовать для базовой настройки сети. systemd-resolved - разрешение DNS-имен /etc/resolv.conf - статический файл разрешение DNS-имен Файлы конфигурации для systemd-networkd (и systemd-resolved ) можно поместить в /usr/lib/systemd/networkили /etc/systemd/network. Файлы в /etc/systemd/network имеют более высокий приоритет, чем файлы в /usr/lib/systemd/network. Существует три типа файлов конфигурации: .link, .netdev и .network файлы. Подробные описания и примеры содержимого этих файлов конфигурации см на страницах руководства systemd-link(5)и systemd-netdev(5). systemd-network(5). 1. Именование сетевых устройств: !!! Примечание !!! Имена интерфейсов зависят от реализации и конфигурации демона udev, работающего в системе. !!! Для большинства систем существует только один сетевой интерфейс для каждого типа подключения. !!! Например, классическое имя интерфейса для проводного соединения — eth0. !!! Беспроводное соединение обычно имеет имя wifi0 или wlan0. Если вы предпочитаете использовать классические или настраиваемые имена сетевых интерфейсов, есть три альтернативных способа сделать это: 1.1 Замаскируйте файл .link udev для политики по умолчанию: ln -s /dev/null /etc/systemd/network/99-default.link 1.2 Создайте схему именования вручную, например, назовите интерфейсы как-то вроде «internet0», «dmz0» или «lan0». Для этого создайте файлы .link в /etc/systemd/network/, которые выбирают явное имя или лучшую схему именования для ваших сетевых интерфейсов. См. справочную страницу systemd.link(5) для получения дополнительной информации. Например: cat > /etc/systemd/network/10-ether0.link << "EOF" [Match] # Change the MAC address as appropriate for your network device MACAddress=12:34:45:78:90:AB [Link] Name=ether0 EOF 1.3 В /boot/grub/grub.cfg укажите параметр net.ifnames=0 в командной строке ядра. |
122. (9.2.1.2.) Статическая IP-конфигурация
1 2 3 4 5 6 7 8 9 10 11 |
Приведенная ниже команда создает базовый файл конфигурации для настройки статического IP-адреса (используя как systemd-networkd, так и systemd-resolved): cat > /etc/systemd/network/10-eth-static.network << "EOF" [Match] Name=<network-device-name> [Network] Address=192.168.0.2/24 Gateway=192.168.0.1 DNS=192.168.0.1 Domains=<Your Domain Name> EOF |
123. (9.2.1.3.) DHCP-конфигурация
1 2 3 4 5 6 7 8 9 10 |
cat > /etc/systemd/network/10-eth-dhcp.network << "EOF" [Match] Name=<network-device-name> [Network] DHCP=ipv4 [DHCP] UseDomains=true EOF |
124. (9.2.2.2) Статическая конфигурация resolv.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Если система будет подключена к Интернету, ей потребуются некоторые средства разрешения имен службы доменных имен (DNS) для преобразования имен доменов Интернета в IP-адреса и наоборот. Этого лучше всего добиться, поместив IP-адрес DNS-сервера, доступный у интернет-провайдера или сетевого администратора, в файл /etc/resolv.conf. !!! Примечание !!! При использовании методов, несовместимых с systemd-resolved, для настройки ваших сетевых интерфейсов (например, ppp и т. д.), или при использовании любого типа локального !!! преобразователя (например, bind, dnsmasq, unbound и т. д.) или любого другого программного обеспечения, которое создает /etc/resolv.conf (пример: программа resolvconf , !!! отличная от предоставленной systemd), файл systemd-resolved использовать не следует. !!! Чтобы отключить systemd-resolved, введите следующую команду: !!! systemctl disable systemd-resolved 0. Создаем /etc/resolv.conf : cat > /etc/resolv.conf << "EOF" # Begin /etc/resolv.conf domain <Your Domain Name> nameserver <IP address of your primary nameserver> nameserver <IP address of your secondary nameserver> # End /etc/resolv.conf EOF |
125. (9.2.3.) Настройка имени хоста системы
1 2 3 4 5 6 |
Создайте /etc/hostname файл и введите имя хоста, запустив: echo "<lfs>" > /etc/hostname <lfs>необходимо заменить на имя, данное компьютеру. Не вводите здесь полное доменное имя (FQDN). Эта информация помещается в /etc/hosts файл. |
126. (9.2.4.) Настройка файла /etc/hosts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Выберите полное доменное имя (FQDN) и возможные псевдонимы для использования в /etc/hosts файле. При использовании статических IP-адресов вам также необходимо выбрать IP-адрес. !!! Даже если сетевая карта не используется, все равно требуется действительное полное доменное имя. Это необходимо для правильной работы некоторых программ, таких как MTA. Синтаксис записи в файле hosts следующий: IP_address myhost.example.org aliases cat > /etc/hosts << "EOF" # Begin /etc/hosts 127.0.0.1 localhost.localdomain localhost 127.0.1.1 <FQDN> <HOSTNAME> <192.168.0.2> <FQDN> <HOSTNAME> [alias1] [alias2] ... ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters # End /etc/hosts EOF !!! Значения <192.168.0.2>, <FQDN>и <HOSTNAME> необходимо изменить для конкретных целей или требований (если IP-адрес назначен сетевым/системным администратором и машина будет подключена !!! к существующей сети). Необязательные псевдонимы могут быть опущены, а <192.168.0.2> строка может быть опущена, если вы используете соединение, !!! настроенное с помощью DHCP или автоматической настройки IPv6. !!! Запись ::1 является IPv6-аналогом 127.0.0.1 и представляет петлевой интерфейс IPv6. !!! 127.0.1.1 — это запись обратной связи, зарезервированная специально для полного доменного имени. |
127. (9.3.) Обзор работы с устройствами и модулями
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Системы Linux в целом традиционно использовали метод создания статических устройств, при котором создавалось очень много узлов устройств /dev(иногда буквально тысячи узлов), независимо от того, существовали ли на самом деле соответствующие аппаратные устройства. Обычно это делалось с помощью сценария MAKEDEV , который содержит несколько вызовов mknod . с соответствующими старшими и второстепенными номерами устройств для каждого возможного устройства, которое может существовать в мире. Используя метод udev, только те устройства, которые обнаружены ядром, получают созданные для них узлы устройств. Поскольку эти узлы устройств будут создаваться каждый раз при загрузке системы, они будут храниться в devtmpfs файловой системе (виртуальной файловой системе, которая полностью находится в системной памяти). Узлы устройств не требуют много места, поэтому используемая память незначительна. sysfs Можно задаться вопросом, как узнать sysfs об устройствах, присутствующих в системе, и какие номера устройств следует использовать для них. Драйверы, которые были скомпилированы в ядро, напрямую регистрируют свои объекты с помощью sysfs(devtmpfs внутри), поскольку они обнаруживаются ядром. Для драйверов, скомпилированных как модули, эта регистрация произойдет при загрузке модуля. После sysfs монтирования файловой системы (в /sys) данные, с которыми регистрируются драйверы, sysfs доступны процессам пользовательского пространства и udevd для обработки (включая модификации узлов устройств). Создание узла устройства Файлы устройств создаются ядром devtmpfs файловой системой. Любой драйвер, который хочет зарегистрировать узел устройства, пройдет через devtmpfs(через ядро драйвера), чтобы сделать это. Когда devtmpfs экземпляр монтируется на /dev, узел устройства изначально создается с фиксированным именем, разрешениями и владельцем. Через некоторое время ядро отправит uevent в udevd. На основе правил, указанных в файлах в каталогах , , и, /etc/udev/rules.dudevd /usr/lib/udev/rules.d создаст дополнительные символические ссылки на узел устройства, или изменит его разрешения, владельца или группу, или изменит запись (имя) внутренней базы данных udevd для этого объекта. /run/udev/rules.d Правила в этих трех каталогах пронумерованы, и все три каталога объединены. Если udevd не сможет найти правило для создаваемого устройства, он оставит права и права собственности такими, какие devtmpfs использовались изначально. Загрузка модуля Драйверы устройств, скомпилированные как модули, могут иметь встроенные псевдонимы. Псевдонимы видны в выводе программы modinfo и обычно связаны со специфическими для шины идентификаторами устройств, поддерживаемых модулем. Например, драйвер snd-fm801 поддерживает устройства PCI с идентификатором производителя 0x1319 и идентификатором устройства 0x0801 и имеет псевдоним « pci:v00001319d00000801sv*sd*bc04sc01i* ». Для большинства устройств драйвер шины экспортирует псевдоним драйвера, который будет обрабатывать устройство, через файлы sysfs. Например, /sys/bus/pci/devices/0000:00:0d.0/modalias файл может содержать строку « PCI: v00001319d00000801sv00001319sd00001319bc04sc01i00 ». Правила по умолчанию, предоставляемые udev, заставят udevd вызывать /sbin/modprobe с содержимым MODALIAS переменной среды uevent (которое должно совпадать с содержимым modaliasфайла в sysfs), таким образом загружая все модули, псевдонимы которых соответствуют этой строке . после расширения подстановочных знаков. В данном примере это означает, что помимо snd-fm801 будет загружен устаревший (и нежелательный) драйвер forte , если он доступен. Само ядро также может загружать модули для сетевых протоколов, файловых систем и поддержки NLS по запросу. Работа с горячими подключаемыми/динамическими устройствами Когда вы подключаете устройство, такое как MP3-плеер с универсальной последовательной шиной (USB), ядро распознает, что устройство теперь подключено, и генерирует событие uevent. Затем это событие обрабатывается udevd , как описано выше. |
128. (9.3.3.) Проблемы с загрузкой модулей и созданием устройств
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
0. Модуль ядра не загружается автоматически: Udev загрузит модуль только в том случае, если у него есть псевдоним, специфичный для шины, и драйвер шины правильно экспортирует необходимые псевдонимы в sysfs. В остальных случаях следует организовать загрузку модулей другими способами. Известно, что в Linux-5.16.9 udev загружает правильно написанные драйверы для устройств INPUT, IDE, PCI, USB, SCSI, SERIO и FireWire. Чтобы определить, имеет ли требуемый драйвер устройства необходимую поддержку udev, запустите modinfo с именем модуля в качестве аргумента. Теперь попробуйте найти каталог устройства /sys/bus и проверьте, есть ли там modalias файл. Если modalias файл существует в sysfs, драйвер поддерживает устройство и может обращаться к нему напрямую, но не имеет псевдонима, это ошибка в драйвере. Загрузите драйвер без помощи udev и ожидайте, что проблема будет исправлена позже. modalias Если в соответствующем каталоге под , нет файла /sys/bus, это означает, что разработчики ядра еще не добавили поддержку модалий для этого типа шины. В Linux-5.16.9 это относится к шинам ISA. Ожидайте, что эта проблема будет исправлена в более поздних версиях ядра. Udev вообще не предназначен для загрузки драйверов - оболочек , таких как snd-pcm-oss, и неаппаратных драйверов, таких как loop. 1. Модуль ядра не загружается автоматически, и udev не предназначен для его загрузки. Если модуль « wrapper » только расширяет функциональные возможности, предоставляемые другим модулем (например, snd-pcm-oss расширяет функциональные возможности snd-pcm , делая звуковые карты доступными для приложений OSS), настройте modprobe для загрузки оболочки после загрузки udev. обернутый модуль. Для этого добавьте в соответствующий файл строку « softdep ». Например: /etc/modprobe.d/<filename>.conf softdep snd-pcm post: snd-pcm-oss Обратите внимание, что команда « softdep » также допускает pre:зависимости или их сочетание . См. справочную страницу для получения дополнительной информации о синтаксисе и возможностях « softdep » .pre:post:modprobe.d(5) 2. Udev неправильно создает устройство или делает неверную симлинк Обычно это происходит, если правило неожиданно соответствует устройству. Например, плохо написанное правило может соответствовать как диску SCSI (по желанию), так и соответствующему универсальному устройству SCSI (неверно) по поставщику. Найдите неправильное правило и сделайте его более конкретным с помощью команды "udevadm info". udevadm info 3. Порядок именования устройств изменяется случайным образом после перезагрузки Это связано с тем, что udev по своей природе обрабатывает uevents и загружает модули параллельно и, следовательно, в непредсказуемом порядке. Это никогда не будет « исправлено » . Вы не должны полагаться на стабильность имен устройств ядра. Вместо этого создайте свои собственные правила, которые создают символические ссылки со стабильными именами на основе некоторых стабильных атрибутов устройства, таких как серийный номер или вывод различных утилит *_id, установленных udev. 4. Полезное почитать http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf https://mirrors.edge.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf |
129. (9.3.3.3.) Udev загружает какой-то нежелательный модуль \ отключить драйвер \ пример с forte
1 2 3 4 5 |
Либо не создавайте модуль, либо занесите его в черный список в /etc/modprobe.d/blacklist.conf файле, как это сделано с модулем forte в примере ниже: vim /etc/modprobe.d/blacklist.conf ---------------------------------- blacklist forte ---------------------------------- |
130. (9.4.) Управление устройствами
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Порядок, в котором появляются устройства с одинаковыми функциями, по /dev сути, случайный. Например, если у вас есть USB-веб-камера и ТВ-тюнер, иногда /dev/video0 ссылается на камеру и /dev/video1 ссылается на тюнер, а иногда после перезагрузки порядок меняется. Для всех классов оборудования, кроме звуковых карт и сетевых карт, это можно исправить, создав правила udev для пользовательских постоянных символических ссылок. Случай с сетевыми картами рассматривается отдельно в Разделе 9.2. Для каждого из ваших устройств, которые могут иметь эту проблему (даже если проблема не существует в вашем текущем дистрибутиве Linux), найдите соответствующий каталог в папке /sys/class или /sys/block. Выясните атрибуты, которые однозначно идентифицируют устройство (обычно работают идентификаторы производителя и продукта и/или серийные номера): /sys/class/video4linux/videoX Затем напишите правила, создающие символические ссылки, например: cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF" # Persistent symlinks for webcam and tuner KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", SYMLINK+="webcam" KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", SYMLINK+="tvtuner" EOF В результате устройства /dev/video0 и /dev/video1по-прежнему случайным образом ссылаются на тюнер и веб-камеру (и, следовательно, никогда не должны использоваться напрямую), но есть символические ссылки /dev/tvtuner, /dev/webcam которые всегда указывают на правильное устройство. |
131. (9.5.) Настройка системных часов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
В этом разделе обсуждается, как настроить системную службу systemd-timedated , которая настраивает системные часы и часовой пояс. systemd-timedated читает/etc/adjtime и, в зависимости от содержимого файла, устанавливает часы либо на UTC, либо на местное время. Если /etc/adjtimeон отсутствует при первой загрузке, systemd-timedated предположит, что аппаратные часы установлены на UTC, и настроит файл в соответствии с этим. Создайте /etc/adjtimeфайл со следующим содержимым, если ваши аппаратные часы настроены на местное время: cat > /etc/adjtime << "EOF" 0.0 0 0.0 0 LOCAL EOF !!! Обратите внимание, что команда timedatectl не работает в среде chroot. Его можно использовать только после загрузки системы LFS с помощью systemd. Вы также можете использовать утилиту timedatectl , чтобы сообщить systemd-timedated , установлены ли ваши аппаратные часы на UTC или местное время: timedatectl set-local-rtc 1 timedatectl также можно использовать для изменения системного времени и часового пояса. Чтобы изменить текущее системное время, зону: timedatectl set-time YYYY-MM-DD HH:MM:SS timedatectl set-timezone TIMEZONE Вы можете получить список доступных часовых поясов, запустив: timedatectl list-timezones |
132. (9.5.1.) Синхронизация сетевого времени
1 2 3 4 5 6 7 8 9 10 11 |
Начиная с версии 213, systemd поставляет демон под названием systemd-timesyncd , который можно использовать для синхронизации системного времени с удаленными серверами NTP. Демон не предназначен для замены хорошо зарекомендовавшего себя демона NTP, а только как клиентская реализация протокола SNTP, которую можно использовать для менее сложных задач и в системах с ограниченными ресурсами. Начиная с systemd версии 216 демон systemd-timesyncd включен по умолчанию. Если вы хотите отключить его, введите следующую команду: systemctl disable systemd-timesyncd Этот /etc/systemd/timesyncd.conf файл можно использовать для изменения серверов NTP, с которыми синхронизируется systemd-timesyncd . Обратите внимание, что если системные часы установлены на местное время, systemd-timesyncd не будет обновлять аппаратные часы. |
133. (9.6.) Настройка консоли Linux (Configuring the Linux Console)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
В этом разделе обсуждается, как настроить системную службу systemd-vconsole-setup , которая настраивает шрифт виртуальной консоли и раскладку клавиатуры. Служба systemd-vconsole-setup считывает /etc/vconsole.confфайл для получения информации о конфигурации. Решите, какая раскладка клавиатуры и экранный шрифт будут использоваться. В этом также могут помочь различные HOWTO для конкретных языков: http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html Изучите "localectl list-keymaps", чтобы найти список допустимых раскладок консоли. Найдите в /usr/share/consolefont sкаталоге допустимые экранные шрифты. localectl list-keymaps Файл /etc/vconsole.conf должен содержать строки вида: ПЕРЕМЕННАЯ="значение". Распознаются следующие переменные: KEYMAP Эта переменная определяет таблицу сопоставления клавиш для клавиатуры. Если не установлено, по умолчанию используется us. KEYMAP_TOGGLE Эту переменную можно использовать для настройки второй раскладки клавиш переключения, и по умолчанию она не установлена. FONT Эта переменная определяет шрифт, используемый виртуальной консолью. FONT_MAP Эта переменная указывает используемую карту консоли. FONT_UNIMAP Эта переменная определяет карту шрифтов Unicode. Создадим файл vconsole.conf: cat > /etc/vconsole.conf << "EOF" KEYMAP=en FONT=Lat2-Terminus16 EOF Вы можете изменить значение KEYMAP во время выполнения с помощью утилиты localectl: !!! Обратите внимание, что команда localectl не работает в среде chroot. Его можно использовать только после загрузки системы LFS с помощью systemd. localectl set-keymap MAP list-x11-keymap-models - Показывает известные модели раскладки клавиатуры X11. list-x11-keymap-layouts - Показывает известные раскладки клавиатуры X11. list-x11-keymap-variants - Показывает известные варианты раскладки клавиатуры X11. list-x11-keymap-options - Показывает известные параметры раскладки клавиатуры X11. |
134. (9.7.) Настройка языкового стандарта системы (Configuring the System Locale)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
В /etc/locale.confприведенном ниже файле задаются некоторые переменные среды, необходимые для поддержки родного языка. Правильная их установка приводит к: Вывод программ, которые переводятся на ваш родной язык Правильная классификация символов на буквы, цифры и другие классы. Это необходимо для того , чтобы bash правильно принимал символы, отличные от ASCII, в командных строках в неанглийских локалях. Правильный алфавитный порядок сортировки для страны Подходящий размер бумаги по умолчанию Правильное форматирование денежных значений, времени и дат Замените <//> приведенный ниже двухбуквенный код нужного языка (например, « en » ) и <CC>двухбуквенный код соответствующей страны (например, « GB » ). <charmap> следует заменить каноническим шармапом для выбранной вами локали. Также могут присутствовать необязательные модификаторы, такие как « @euro » . Список всех локалей, поддерживаемых Glibc, можно получить, выполнив следующую команду: locale -a Карты символов могут иметь несколько псевдонимов, например, « ISO-8859-1 » также упоминается как « iso8859-1 » и « iso88591 ». Некоторые приложения не могут правильно обрабатывать различные синонимы (например, требуют, чтобы « UTF-8 » записывалось как « UTF-8 » , а не « utf8 » ), поэтому в большинстве случаев безопаснее всего выбрать каноническое имя для конкретной локали. . Чтобы определить каноническое имя, выполните следующую команду, где <locale name> это вывод, заданный locale -a для вашего предпочтительного языкового стандарта ( в нашем примере « en_GB.iso88591 » ). LC_ALL=<locale name> locale charmap LC_ALL=en_US locale charmap "ISO-8859-1" Важно, чтобы локаль, найденная с помощью приведенной выше эвристики, была проверена до ее добавления в файлы запуска Bash: LC_ALL=<locale name> locale language LC_ALL=<locale name> locale charmap LC_ALL=<locale name> locale int_curr_symbol LC_ALL=<locale name> locale int_prefix Приведенные выше команды должны вывести название языка, кодировку символов, используемую в локали, местную валюту и префикс, который необходимо набрать перед телефонным номером, чтобы попасть в страну. Если какая-либо из приведенных выше команд завершается с ошибкой с сообщением, подобным показанному ниже, это означает, что ваша локаль либо не была установлена в главе 8, либо не поддерживается установкой Glibc по умолчанию. Пример ошибки: "locale: Cannot set LC_* to default locale: No such file or directory" В этом случае следует либо установить желаемую локаль с помощью команды localedef , либо рассмотреть возможность выбора другой локали. Дальнейшие инструкции предполагают, что таких сообщений об ошибках от Glibc нет. После определения правильных настроек локали создайте /etc/locale.conf файл: cat > /etc/locale.conf << "EOF" LANG=en_US.ISO-8859-1 EOF localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US" Обратите внимание, что вы можете изменить /etc/locale.confс помощью утилиты systemd localectl. Чтобы использовать localectl для приведенного выше примера, запустите: #!!! Примечание: Обратите внимание, что команда localectl не работает в среде chroot. #localectl set-locale LANG="<ll>_<CC>.<charmap><@modifiers>" localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US" Локали « C » (по умолчанию) и «en_US » (рекомендуется для пользователей английского языка в США) различаются. «C» использует 7-битный набор символов US-ASCII и обрабатывает байты с установленным старшим битом как недопустимые символы. Вот почему, например, команда ls заменяет их вопросительными знаками в этой локали. Также попытка отправить почту с такими символами из Mutt или Pine приводит к отправке сообщений, не соответствующих RFC (кодировка в исходящей почте указана как « неизвестная 8-битная »). Рекомендуется использовать локаль « C » только в том случае, если вы уверены, что вам никогда не понадобятся 8-битные символы. |
135. (9.8.) Создание файла /etc/inputrc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
Этот inputrc файл представляет собой файл конфигурации для библиотеки readline, который предоставляет возможности редактирования, когда пользователь вводит строку с терминала. Он работает, переводя ввод с клавиатуры в определенные действия. Readline используется bash и большинством других оболочек, а также многими другими приложениями. Большинству людей не нужны пользовательские функции, поэтому приведенная ниже команда создает глобальный файл /etc/inputrc, используемый всеми, кто входит в систему. Если позже вы решите, что вам нужно переопределить значения по умолчанию для каждого пользователя, вы можете создать .inputr cфайл в домашнем каталоге пользователя с помощью модифицированные отображения. Ниже приведен общий глобальный inputrc параметр вместе с комментариями, поясняющими, что делают различные параметры. Обратите внимание, что комментарии не могут находиться в той же строке, что и команды. Создайте файл с помощью следующей команды: cat > /etc/inputrc << "EOF" # Begin /etc/inputrc # Modified by Chris Lynn <roryo@roryo.dynup.net> # Allow the command prompt to wrap to the next line set horizontal-scroll-mode Off # Enable 8bit input set meta-flag On set input-meta On # Turns off 8th bit stripping set convert-meta Off # Keep the 8th bit for display set output-meta On # none, visible or audible set bell-style none # All of the following map the escape sequence of the value # contained in the 1st argument to the readline specific functions "\eOd": backward-word "\eOc": forward-word # for linux console "\e[1~": beginning-of-line "\e[4~": end-of-line "\e[5~": beginning-of-history "\e[6~": end-of-history "\e[3~": delete-char "\e[2~": quoted-insert # for xterm "\eOH": beginning-of-line "\eOF": end-of-line # for Konsole "\e[H": beginning-of-line "\e[F": end-of-line # End /etc/inputrc EOF |
136. (9.9.) Создание файла /etc/shells
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Файл shells содержит список оболочек входа в систему. Приложения используют этот файл, чтобы определить, действительна ли оболочка. Для каждой оболочки должна присутствовать одна строка, состоящая из пути оболочки относительно корня структуры каталогов (/). Например, chsh обращается к этому файлу, чтобы определить, может ли непривилегированный пользователь изменить оболочку входа в систему для своей учетной записи. Если имя команды не указано, пользователю будет отказано в возможности смены оболочки. Это требование для таких приложений, как GDM , который не заполняет браузер лиц, если не может найти /etc/shells, или демоны FTP, которые традиционно запрещают доступ пользователям с оболочками, не включенными в этот файл. cat > /etc/shells << "EOF" # Begin /etc/shells /bin/sh /bin/bash # End /etc/shells EOF |
137. (9.10.) Использование и конфигурация Systemd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
0. Отключение очистки экрана во время загрузки !!! Нормальным поведением systemd является очистка экрана в конце последовательности загрузки. mkdir -pv /etc/systemd/system/getty@tty1.service.d cat > /etc/systemd/system/getty@tty1.service.d/noclear.conf << EOF [Service] TTYVTDisallocate=no EOF 1. Отключение tmpfs для /tmp По умолчанию /tmpсоздается как tmpfs, это можно переопределить: ln -sfv /dev/null /etc/systemd/system/tmp.mount 2. Настройка автоматического создания и удаления файлов Существует несколько сервисов, которые создают или удаляют файлы или каталоги: systemd-tmpfiles-clean.service systemd-tmpfiles-setup-dev.service systemd-tmpfiles-setup.service Системное расположение файлов конфигурации — /usr/lib/tmpfiles.d/*.conf. Локальные файлы конфигурации находятся в формате /etc/tmpfiles.d. Файлы в /etc/tmpfiles.d переопределяют файлы с тем же именем в /usr/lib/tmpfiles.d. Обратите внимание, что синтаксис /usr/lib/tmpfiles.d/*.conf файлов может сбивать с толку. Например, удаление файлов по умолчанию в каталоге /tmp находится в /usr/lib/tmpfiles.d/tmp.conf строке: q /tmp 1777 root root 10d Поле типа q обсуждает создание подтома с квотами, которые на самом деле применимы только к файловым системам btrfs. Он ссылается на тип v, который, в свою очередь, ссылается на тип d (каталог). Затем создается указанный каталог, если он отсутствует, и настраиваются разрешения и права собственности, как указано. Содержимое каталога будет подвергаться очистке на основе времени, если указан аргумент age. Если параметры по умолчанию не нужны, то файл следует скопировать /etc/tmpfiles.d и отредактировать по желанию. Например: mkdir -p /etc/tmpfiles.d cp /usr/lib/tmpfiles.d/tmp.conf /etc/tmpfiles.d 3. Переопределение поведения служб по умолчанию: Параметры устройства можно переопределить, создав каталог и файл конфигурации в формате /etc/systemd/system. Например: mkdir -pv /etc/systemd/system/foobar.service.d cat > /etc/systemd/system/foobar.service.d/foobar.conf << EOF [Service] Restart=always RestartSec=30 EOF После создания файла конфигурации запустите "systemctl daemon-reload" и "systemctl restart foobar" активируйте изменения в службе. 4. Отладка последовательности загрузки Вместо простых сценариев оболочки, используемых в системах инициализации в стиле SysVinit или BSD, systemd использует унифицированный формат для различных типов файлов запуска (или модулей). Команда systemctl используется для включения, выключения, управления состоянием и получения состояния юнит-файлов. Вот несколько примеров часто используемых команд: systemctl list-units -t <service> [--all] : список загруженных файлов модулей типа service. systemctl list-units -t <target> [--all] : список загруженных файлов модулей типа target. systemctl show -p Wants <multi-user.target> : показывает все юниты, зависящие от многопользовательской цели. Цели — это специальные юнит-файлы, несовместимые с уровнями запуска в SysVinit. systemctl status <servicename.service> : показывает статус службы servicename. Расширение .service можно опустить, если нет других юнит-файлов с таким же именем, например файлов .socket 5. Работа с журналом Systemd Вход в систему, загруженную с помощью systemd, обрабатывается с помощью systemd-journald (по умолчанию), а не с помощью типичного демона системного журнала Unix. Вы также можете добавить обычный демон системного журнала и, если хотите, оба будут работать параллельно. Программа systemd-journald хранит записи журнала в двоичном формате, а не в текстовом файле журнала. Для облегчения разбора файла предусмотрена команда journalctl . Вот несколько примеров часто используемых команд: journalctl -r : показывает все содержимое журнала в обратном хронологическом порядке. journalctl -uUNIT : показывает записи журнала, связанные с указанным файлом UNIT. journalctl -b[=ID] -r : показывает записи журнала с момента последней успешной загрузки (или для идентификатора загрузки) в обратном хронологическом порядке. journalctl -f : обеспечивает функциональность, аналогичную tail -f (follow). 6. Работа с дампом ядра Дампы ядра полезны для отладки аварийных программ, особенно когда аварийно завершается процесс демона. В системах, загружаемых с помощью systemd, дамп ядра обрабатывается systemd-coredump . Он зарегистрирует дамп ядра в журнале и сохранит сам дамп ядра в формате /var/lib/systemd/coredump . Для извлечения и обработки дампов ядра предоставляется инструмент coredumpctl . Вот несколько примеров часто используемых команд: !!! https://www.linuxfromscratch.org/blfs/view/stable-systemd/general/gdb.html coredumpctl -r : перечисляет все дампы ядра в обратном хронологическом порядке. coredumpctl -1 info : показывает информацию из последнего дампа ядра. coredumpctl -1 debug : загружает последний дамп ядра в GDB . Дампы ядра могут занимать много места на диске. Максимальное дисковое пространство, используемое дампом ядра, можно ограничить, создав файл конфигурации в формате /etc/systemd/coredump.conf.d. Например: mkdir -pv /etc/systemd/coredump.conf.d cat > /etc/systemd/coredump.conf.d/maxuse.conf << EOF [Coredump] MaxUse=5G EOF Дополнительную информацию см на страницах руководства systemd-coredump(8), coredumpctl(1), и .coredump.conf.d(5) 7. Длительные процессы Начиная с systemd-230, все пользовательские процессы уничтожаются при завершении сеанса пользователя, даже если используется nohup или процесс использует функции daemon()или setsid(). Это преднамеренный переход от исторически разрешительной среды к более ограничительной. Новое поведение может вызвать проблемы, если вы зависите от долго работающих программ (например, screen или tmux ), чтобы они оставались активными после завершения сеанса пользователя. Есть три способа разрешить зависшим процессам оставаться после завершения сеанса пользователя. Включить задержку процесса только для выбранных пользователей : обычные пользователи имеют разрешение включить задержку процесса с помощью команды "loginctl enable-linger" для своего пользователя. Системные администраторы могут использовать ту же команду с userаргументом для включения пользователя. Затем этот пользователь может использовать команду systemd-run для запуска длительных процессов. Например: systemd-run --scope --user /usr/bin/screen. Если вы включите задержку для своего пользователя, user@.service останется даже после закрытия всех сеансов входа и автоматически запустится при загрузке системы. Это имеет то преимущество, что явно разрешает и запрещает запуск процессов после завершения сеанса пользователя, но нарушает обратную совместимость с такими инструментами, как nohup и утилитами, использующими файлы daemon(). Включить задержку KillUserProcesses=no процесса вы можете в /etc/systemd/logind.conf, включить задержку процесса глобально для всех пользователей. Преимущество этого заключается в том, что старый метод остается доступным для всех пользователей за счет явного контроля. Отключить во время сборки : вы можете отключить задержку по умолчанию при сборке systemd, добавив переключатель -Ddefault-kill-user-processes=false в команду meson для systemd. Это полностью отключает способность systemd убивать пользовательские процессы в конце сеанса. |
138. (10.1.) Создание загрузочной системы LFS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
/etc/fstab файл используется некоторыми программами для определения того, где файловые системы должны быть смонтированы по умолчанию, в каком порядке и какие должны быть проверены (на наличие ошибок целостности) перед монтированием. Создайте новую таблицу файловых систем следующим образом cat > /etc/fstab << "EOF" # Begin /etc/fstab # file system mount-point type options dump fsck # order /dev/<xxx> / <fff> defaults 1 1 /dev/<yyy> swap swap pri=1 0 0 # End /etc/fstab EOF Замените <xxx>, <yyy>, и <fff> значениями, соответствующими системе, например, sda2, sda5, и ext4. Подробнее о шести полях этого файла см. man 5 fstab . ## yyy строку я удалю и сделаю swap в виде файла Создаём файл для swap: fallocate -l 1G /.swap chmod 600 /.swap mkswap /.swap echo '/.swap none swap pri=1 0 0' >> /etc/fstab мой fstab: cat /etc/fstab -------------- # Begin /etc/fstab # file system mount-point type options dump fsck # order UUID="0d11142b-6b3d-4fc0-bf11-706f2764de84" / ext4 defaults 1 1 /.swap swap swap pri=1 0 0 # End -------------- |
139. (10.3. Linux-5.16.9) Сборка ядра linux
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
Сборка ядра включает в себя несколько шагов — настройку, компиляцию и установку. 0. Распакуем ядро cd /source tar -xpf linux-5.16.9.tar.xz cd linux-5.16.9 1. Подготовьтесь к компиляции, выполнив следующую команду: Это гарантирует, что дерево ядра будет абсолютно чистым. Команда разработчиков ядра рекомендует запускать эту команду перед каждой компиляцией ядра. Не полагайтесь на то, что исходное дерево будет чистым после удаления смолы. make mrproper 2. Хорошей отправной точкой для настройки конфигурации ядра является запуск "make defconfig" . Это установит базовую конфигурацию в хорошее состояние, учитывающее вашу текущую системную архитектуру. make defconfig 3. После использование make defconfig можно до настроить ядро используя "make menuconfig" Обязательно включите/отключите/настройте следующие функции, иначе система может работать некорректно или вообще не загружаться: General setup --> [ ] Auditing Support [CONFIG_AUDIT] < > Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS] [*] Control Group support [CONFIG_CGROUPS] ---> [*] Memory controller [CONFIG_MEMCG] [ ] Enable deprecated sysfs features to support old userspace tools [CONFIG_SYSFS_DEPRECATED] [*] Configure standard kernel features (expert users) [CONFIG_EXPERT] ---> [*] open by fhandle syscalls [CONFIG_FHANDLE] CPU/Task time and stats accounting ---> [*] Pressure stall information tracking [CONFIG_PSI] General architecture-dependent options ---> [*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP] Networking support ---> Networking options ---> <*> The IPv6 protocol [CONFIG_IPV6] Device Drivers ---> Firmware Drivers ---> [*] Export DMI identification via sysfs to userspace [CONFIG_DMIID] Graphics support ---> Frame buffer Devices ---> [*] Support for frame buffer devices ---- Generic Driver Options ---> [ ] Support for uevent helper [CONFIG_UEVENT_HELPER] [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS] Firmware Loader ---> [ ] Enable the firmware sysfs fallback mechanism [CONFIG_FW_LOADER_USER_HELPER] File systems ---> [*] Inotify support for userspace [CONFIG_INOTIFY_USER] Pseudo filesystems ---> [*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL] 4. Значение необязательных переменных среды make: LANG=<host_LANG_value> LC_ALL= Это устанавливает настройку локали на ту, которая используется на хосте. Это может понадобиться для правильной отрисовки линии интерфейса menuconfig ncurses на текстовой консоли Linux UTF-8. Если используется, обязательно замените <host_LANG_value> значение $LANG переменной с вашего хоста. Вместо этого вы можете использовать значение хоста $LC_ALLили $LC_CTYPE. make help 5. Сборка make 6. Установка и сборка модулей make modules_install 7. копирование файлов ядра Путь к образу ядра может различаться в зависимости от используемой платформы. Приведенное ниже имя файла можно изменить по своему вкусу, но основа имени файла должна быть vmlinuz , чтобы быть совместимым с автоматической настройкой процесса загрузки, описанной в следующем разделе. cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.16.9-lfs-11.1-systemd System.map это файл символов для ядра. Он отображает точки входа каждой функции в API ядра, а также адреса структур данных ядра для работающего ядра. Он используется в качестве ресурса при исследовании проблем с ядром. Введите следующую команду, чтобы установить файл карты: cp -iv System.map /boot/System.map-5.16.9 Файл конфигурации ядра, .config созданный на шаге make menuconfig выше, содержит все параметры конфигурации для только что скомпилированного ядра. Рекомендуется сохранить этот файл для дальнейшего использования: cp -iv .config /boot/config-5.16.9 Установите документацию для ядра Linux: install -d /usr/share/doc/linux-5.16.9 cp -r Documentation/* /usr/share/doc/linux-5.16.9 Важно отметить, что файлы в исходном каталоге ядра не принадлежат пользователю root. Всякий раз, когда пакет распаковывается как пользователь root (как мы делали внутри chroot), файлы имеют идентификаторы пользователя и группы, какие бы они ни были на компьютере упаковщика. Обычно это не проблема для установки любого другого пакета, потому что исходное дерево удаляется после установки. Однако исходное дерево Linux часто сохраняется в течение длительного времени. Из-за этого есть шанс, что любой идентификатор пользователя, который использовал упаковщик, будет назначен кому-то на машине. Тогда этот человек будет иметь доступ для записи к исходному коду ядра. Если исходное дерево ядра будет сохранено, запустите "chown -R 0:0" в linux-5.16.9 каталоге, чтобы убедиться, что все файлы принадлежат пользователю root. !!! Предупреждение Некоторая документация по ядру рекомендует создавать символическую ссылку, /usr/src/linuxуказывающую на исходный каталог ядра. Это характерно для ядер до серии 2.6 и не должно создаваться в системе LFS, поскольку это может вызвать проблемы для пакетов, которые вы, возможно, захотите собрать после того, как ваша базовая система LFS будет завершена. !!! Предупреждение Заголовки в системном includecкаталоге ( /usr/include) всегда должны быть теми, с которыми был скомпилирован Glibc, то есть очищенными заголовками, установленными в разделе 5.4, «Заголовки API Linux-5.16.9». Следовательно, их никогда не следует заменять необработанными заголовками ядра или любыми другими очищенными заголовками ядра. initramfs может понадобится если у вас в fstab используются UIID'ы: https://www.linuxfromscratch.org/blfs/view/svn/postlfs/initramfs.html нужно создать скрипт mkinitramfs сгенерировать и скопировать и т.д. см документацию mkinitramfs cp initrd.img-no-kmods /boot/ |
140. (10.3.2.) Настройка порядка загрузки модулей Linux
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
В большинстве случаев модули Linux загружаются автоматически, но иногда для этого требуется определенное направление. Программа, которая загружает модули, modprobe или insmod , использует /etc/modprobe.d/usb.confдля этой цели. Этот файл необходимо создать, чтобы, если драйверы USB (ehci_hcd, ohci_hcd и uhci_hcd) были собраны как модули, они загружались в правильном порядке; ehci_hcd необходимо загрузить перед ohci_hcd и uhci_hcd, чтобы избежать вывода предупреждения во время загрузки. Создайте новый файл /etc/modprobe.d/usb.conf, выполнив следующее: install -v -m755 -d /etc/modprobe.d cat > /etc/modprobe.d/usb.conf << "EOF" # Begin /etc/modprobe.d/usb.conf install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true # End /etc/modprobe.d/usb.conf EOF |
141. (10.3.3.) Содержимое Linux
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
10.3.3. Содержимое Linux Установленные файлы: config-5.16.9, vmlinuz-5.16.9-lfs-11.1-systemd и System.map-5.16.9 Установленные каталоги: /lib/modules, /usr/share/doc/linux-5.16.9 config-5.16.9 : Содержит все параметры конфигурации ядра. vmlinuz-5.16.9-lfs-11.1-systemd : Движок системы Linux. При включении компьютера ядро является первой загружаемой частью операционной системы. Он обнаруживает и инициализирует все компоненты аппаратного обеспечения компьютера, затем делает эти компоненты доступными для программного обеспечения в виде дерева файлов и превращает один ЦП в многозадачную машину, способную запускать множество программ, казалось бы, одновременно. System.map-5.16.9 : Список адресов и символов; он отображает точки входа и адреса всех функций и структур данных в ядре |
142. (10.4.) Использование GRUB для настройки процесса загрузки
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
0. Об именах GRUB: GRUB использует собственную структуру именования дисков и разделов в виде (hdn,m) , где n — номер жесткого диска, а m — номер раздела. Номер жесткого диска начинается с нуля, а номер раздела начинается с единицы для обычных разделов и с пяти для расширенных разделов. Обратите внимание, что это отличается от более ранних версий, где оба числа начинались с нуля. Например, раздел sda1( hd0,1) для GRUB и sdb3( hd1,3). В отличие от Linux, GRUB не считает приводы CD-ROM жесткими дисками. Например, при использовании компакт-диска hdb и второго жесткого диска в hdc, этот второй жесткий диск все равно будет (hd1). Настройка конфигурации: GRUB работает, записывая данные на первую физическую дорожку жесткого диска. Эта область не является частью какой-либо файловой системы. Программы там получают доступ к модулям GRUB в загрузочном разделе. Расположение по умолчанию — /boot/grub/. Расположение загрузочного раздела — выбор пользователя, влияющий на конфигурацию. Одна из рекомендаций состоит в том, чтобы иметь отдельный небольшой (рекомендуемый размер 200 МБ) раздел только для загрузочной информации. Таким образом, каждая сборка, будь то LFS или какой-либо коммерческий дистрибутив, может получить доступ к одним и тем же загрузочным файлам, и доступ может осуществляться из любой загруженной системы. Если вы решите сделать это, вам нужно будет смонтировать отдельный раздел, переместить все файлы в текущем /boot каталоге (например, ядро Linux, которое вы только что собрали в предыдущем разделе) в новый раздел. Затем вам нужно будет размонтировать раздел и перемонтировать его как/boot. Если вы это сделаете, обязательно обновите /etc/fstab. Использование текущего раздела lfs также будет работать, но конфигурация для нескольких систем более сложна. Используя приведенную выше информацию, определите соответствующее обозначение для корневого раздела (или загрузочного раздела, если используется отдельный раздел). В следующем примере предполагается, что корневым (или отдельным загрузочным) разделом является sda2. Установите файлы GRUB /boot/grubи настройте загрузочную дорожку: !!! Предупреждение 2. Следующая команда перезапишет текущий загрузчик. Не запускайте команду, если это нежелательно, например, при использовании стороннего диспетчера загрузки для управления основной загрузочной записью (MBR). #grub-install /dev/sda grub-install /dev/vdb !!! Примечание Если система была загружена с использованием UEFI, grub-install попытается установить файлы для цели x86_64-efi , но эти файлы не были установлены в главе 8 . Если это так, добавьте --target i386-pc к команде выше. 3. Создание файла конфигурации GRUB cat > /boot/grub/grub.cfg << "EOF" # Begin /boot/grub/grub.cfg set default=0 set timeout=5 insmod ext2 set root=(hd0,2) menuentry "GNU/Linux, Linux 5.16.9-lfs-11.1-systemd" { linux /boot/vmlinuz-5.16.9-lfs-11.1-systemd root=/dev/sda2 ro } EOF !!! Примечание С точки зрения GRUB файлы ядра относятся к используемому разделу. Если вы использовали отдельный раздел /boot, удалите /boot из приведенной выше строки linux. Вам также нужно будет изменить установленную корневую строку, чтобы она указывала на загрузочный раздел. !!! Осторожность Существует команда grub-mkconfig , которая может автоматически записывать файл конфигурации. Он использует набор скриптов в /etc/grub.d/ и удалит любые сделанные вами настройки. Эти сценарии предназначены в первую очередь для дистрибутивов без исходных кодов и не рекомендуются для LFS. Если вы устанавливаете коммерческий дистрибутив Linux, есть большая вероятность, что эта программа будет запущена. Обязательно сделайте резервную копию файла grub.cfg. |
143. (11.1.) Конец
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
0. Отличная работа! Установлена новая система LFS! Мы желаем вам больших успехов с вашей новой блестящей системой Linux, созданной по индивидуальному заказу. Может быть хорошей идеей создать /etc/lfs-release файл. Имея этот файл, вам (и нам, если в какой-то момент понадобится обратиться за помощью) очень легко узнать, какая версия LFS установлена в системе. Создайте этот файл, запустив: echo 11.1-systemd > /etc/lfs-release 1. !!! Обязательно настройте поля «DISTRIB_CODENAME» и «VERSION_CODENAME», чтобы сделать систему уникальной. Два файла, описывающие установленную систему, могут использоваться пакетами, которые могут быть установлены в системе позже, либо в двоичной форме, либо путем их сборки. Первый показывает статус вашей новой системы по отношению к базе стандартов Linux (LSB). Чтобы создать этот файл, запустите: cat > /etc/lsb-release << "EOF" DISTRIB_ID="Linux From Scratch" DISTRIB_RELEASE="11.1-systemd" DISTRIB_CODENAME="<your name here>" DISTRIB_DESCRIPTION="Linux From Scratch" EOF Второй содержит примерно ту же информацию и используется systemd и некоторыми графическими средами рабочего стола. Чтобы создать этот файл, запустите: cat > /etc/os-release << "EOF" NAME="Linux From Scratch" VERSION="11.1-systemd" ID=lfs PRETTY_NAME="Linux From Scratch 11.1-systemd" VERSION_CODENAME="<your name here>" EOF 2. Теперь, когда все программное обеспечение установлено, пришло время перезагрузить компьютер. logout umount -v $LFS/dev/pts umount -v $LFS/dev umount -v $LFS/run umount -v $LFS/proc umount -v $LFS/sys umount -v $LFS/usr umount -v $LFS/home umount -v $LFS umount -v $LFS #shutdown -r now #poweroff |
Чем заняться после установки LFS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
0. Браузер в текстовом режиме, такой как Lynx https://www.linuxfromscratch.org/blfs/view/stable-systemd/basicnet/lynx.html 1. Сертификаты: https://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/make-ca.html 2. Копирование и вставка https://www.linuxfromscratch.org/blfs/view/stable-systemd/general/gpm.html 3. sudo - повышение привилегий https://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/sudo.html 4. openssh https://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/openssh.html 5. wget https://www.linuxfromscratch.org/blfs/view/stable-systemd/basicnet/wget.html 6. wi-fi https://www.linuxfromscratch.org/blfs/view/stable-systemd/basicnet/wpa_supplicant.html 7. изучите конфиги /etc/bashrc /etc/dircolors /etc/fstab /etc/hosts /etc/inputrc /etc/profile /etc/resolv.conf /etc/vimrc /root/.bash_profile /root/.bashrc 8. Ставить пакеты из BFLS |