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

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


software:linux_server:dfs:dfs

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
software:linux_server:dfs:dfs [2025/03/26 20:27] – VladPolskiysoftware:linux_server:dfs:dfs [2025/03/26 21:55] (текущий) – [Комментарии, предложения, ошибки] VladPolskiy
Строка 73: Строка 73:
  
 [[https://packages.debian.org/jessie/libbz2-1.0|libbz2-1.0]] [[https://packages.debian.org/jessie/libbz2-1.0|libbz2-1.0]]
-[libc6](https://packages.debian.org/jessie/libc6) 
  
-[libgcc1](https://packages.debian.org/jessie/libgcc1)+[[https://packages.debian.org/jessie/libc6|libc6]]
  
-[liblzma5](https://packages.debian.org/jessie/liblzma5)+[[https://packages.debian.org/jessie/libgcc1|libgcc1]]
  
-[libpcre3](https://packages.debian.org/jessie/libpcre3)+[[https://packages.debian.org/jessie/liblzma5|liblzma5]]
  
-[libreadline6](https://packages.debian.org/jessie/libreadline6)+[[https://packages.debian.org/jessie/libpcre3|libpcre3]]
  
-[libselinux1](https://packages.debian.org/jessie/libselinux1)+[[https://packages.debian.org/jessie/libreadline6|libreadline6]]
  
-[libstdc++6](https://packages.debian.org/jessie/libstdc++6)+[[https://packages.debian.org/jessie/libselinux1|libselinux1]]
  
-[libtinfo5](https://packages.debian.org/jessie/libtinfo5)+[[https://packages.debian.org/jessie/libstdc++6|libstdc++6]]
  
-[libusb-0.1-4](https://packages.debian.org/jessie/libusb-0.1-4)+[[https://packages.debian.org/jessie/libtinfo5|libtinfo5]]
  
-[multiarch-support](https://packages.debian.org/jessie/multiarch-support)+[[https://packages.debian.org/jessie/libusb-0.1-4|libusb-0.1-4]]
  
-[readline-common](https://packages.debian.org/jessie/readline-common)+[[https://packages.debian.org/jessie/multiarch-support|multiarch-support]]
  
-[tar](https://packages.debian.org/jessie/tar)+[[https://packages.debian.org/jessie/readline-common|readline-common]]
  
-[zlib1g](https://packages.debian.org/jessie/zlib1g)+[[https://packages.debian.org/jessie/tar|tar]] 
 + 
 +[[https://packages.debian.org/jessie/zlib1g|zlib1g]]
  
  
Строка 104: Строка 105:
 Все следующие команды необходимо выполнять как пользователь ''root'', то есть стать rootпользователем вашей хост-системы: Все следующие команды необходимо выполнять как пользователь ''root'', то есть стать rootпользователем вашей хост-системы:
  
-''su''+<code bash> 
 +su 
 +</code>
  
 ==== Подготовка точек монтирования файловой системы виртуального ядра ==== ==== Подготовка точек монтирования файловой системы виртуального ядра ====
Строка 114: Строка 117:
 Поскольку мы еще не построили наше ядро, мы вынуждены использовать те, которые существуют в нашей хостовой системе, смонтировав их в соответствующих местах в нашей целевой системе. Когда наша система будет полностью построена, новое ядро ​​автоматически смонтирует эти файловые системы в соответствующих местах. Поскольку мы еще не построили наше ядро, мы вынуждены использовать те, которые существуют в нашей хостовой системе, смонтировав их в соответствующих местах в нашей целевой системе. Когда наша система будет полностью построена, новое ядро ​​автоматически смонтирует эти файловые системы в соответствующих местах.
  
-<code linux>+<code bash>
 mkdir -pv $LFS/{dev,proc,sys,run} mkdir -pv $LFS/{dev,proc,sys,run}
 mknod -m 600 $LFS/dev/console c 5 1 mknod -m 600 $LFS/dev/console c 5 1
Строка 131: Строка 134:
 ==== Вход в нашу среду chroot ==== ==== Вход в нашу среду chroot ====
  
-We must now, as the `root` user on our host system, enter our base environment by changing our root directory into the final system's root directory, and use the temporary environment we've previously constructed to build our final system. Use the following command after you have become `root` on your host:+Теперь мы должны, как ''root'' пользователь нашей хостовой системы, войти в нашу базовую среду, изменив наш корневой каталог на корневой каталог конечной системы, и использовать временную среду, которую мы ранее построили, чтобы построить нашу конечную систему. Используйте следующую команду после того, как вы стали ''root'' на своем хосте:
  
-```+<code bash>
 chroot "$LFS" /tools/bin/env -i \ chroot "$LFS" /tools/bin/env -i \
 HOME=/root                  \ HOME=/root                  \
Строка 140: Строка 143:
 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin \ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin \
 /tools/bin/bash --login +h /tools/bin/bash --login +h
-```+</code>
  
-### Installing dpkg+==== Установка dpkg ====
  
 With our `/tools` environment completely set up, we are ready to directly compile and install `dpkg` into our target environment. Replace the `build` variable with the appropriate architecture if it isn't 64-bit (which I am assuming that it is): With our `/tools` environment completely set up, we are ready to directly compile and install `dpkg` into our target environment. Replace the `build` variable with the appropriate architecture if it isn't 64-bit (which I am assuming that it is):
  
  
-```+<code bash>
 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_64-unknown-linux-gnu ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_64-unknown-linux-gnu
 make make
 make install make install
-```+</code>
  
-##### Creating dpkg's database +=== Создание базы данных dpkg === 
-We need to create `dpkg`'s database, which is merely a text file located in `/var/lib/dpkg/status`. `dpkg` stores all of its package information in this file, including package version, architecture, dependencies, etc. It does not yet currently exist. Without this file, dpkg will not function correctly, so it is important that we create this before we move forward.+Нам нужно создать ''dpkg'' базу данных , которая представляет собой просто текстовый файл, расположенный в /var/lib/dpkg/status. ''dpkg'' хранит всю информацию о пакете в этом файле, включая версию пакета, архитектуру, зависимости и т. д. В настоящее время он еще не существует. Без этого файла dpkg не будет работать правильно, поэтому важно создать его, прежде чем двигаться дальше.
  
-`touch /var/lib/dpkg/status`+<code bash> 
 +touch /var/lib/dpkg/status 
 +</code>
  
-##### Creating temporary links linking to /tools/bin/bash +=== Создание временных ссылок, ссылающихся на /tools/bin/bash === 
-In order the for pre and post-installation scripts that come inside a standard .deb file to work, these need to be able to have access to a shell. These typically either specify using `/bin/sh` or `/bin/bash`. Without access to a shell at the exact location that the script specifies, the installation script will fail thus causing the installation of the package itself to fail.+Для того, чтобы скрипты до и после установки, которые находятся внутри стандартного файла .deb, работали, они должны иметь доступ к оболочке. Обычно они указывают, используя /bin/shили /bin/bash. Без доступа к оболочке в точном месте, указанном в скрипте, скрипт установки завершится ошибкой, что приведет к ошибке установки самого пакета.
  
-We must mitigate this problem by making sure that the `/bin` directory already exists, and then creating symlinks from these two locations towards the bash we have in our temporary `/tools` environment. +Мы должны решить эту проблему, убедившись, что /binкаталог уже существует, а затем создав символические ссылки из этих двух мест на bash, который находится в нашей временной /toolsсреде.
  
-When we get to the point of installing debian's "priority:essential" packages, which include both of these shells, these symlinks will be overwritten with native copies of these binaries.+Когда мы дойдем до момента установки пакетов Debian «priority:essential», которые включают обе эти оболочки, эти символические ссылки будут перезаписаны собственными копиями этих двоичных файлов.
  
-```+<code bash>
 mkdir /bin mkdir /bin
 ln /tools/bin/bash /bin/bash ln /tools/bin/bash /bin/bash
 ln /tools/bin/bash /bin/sh ln /tools/bin/bash /bin/sh
-```+</code>
  
  
-### Installing apt+==== Установка apt ====
  
-Before we can install `apt`, and use this to automatically install the most of the rest of our system software, we have to install its immediate dependencies on our target system first.+Прежде чем мы сможем установить ''apt'' и использовать его для автоматической установки большей части остального системного программного обеспечения, нам сначала необходимо установить его непосредственные зависимости в нашей целевой системе. 
 +{{:software:linux_server:dfs:68747470733a2f2f63646e2e7261776769742e636f6d2f73636f747477696c6c69616d626561736c65792f64656269616e2d66726f6d2d736372617463682f6d61737465722f696d616765732f6170742d646570656e64656e636965732e737667.svg |}} 
 +== Рисунок 2. Дерево зависимостей apt, глубина в один уровень ==
  
-![](https://cdn.rawgit.com/scottwilliambeasley/debian-from-scratch/master/images/apt-dependencies.svg) +Каждая из этих непосредственных зависимостей имеет свой собственный набор зависимостей для выполнения. Мы начнем с завершения дерева зависимостей для ''debian-archive-keyring''. В отличие от процесса компиляции, необходимого для установки ''dpkg'', процесс, который мы теперь используем для установки программного обеспечения, заключается в установке . ''deb'' файлов с использованием ''dpkg''. 
-##### Figure 2 - The apt dependency tree, one level deep+
  
-Each of these immediate dependencies has their own set of dependencies to fulfill. We shall start by completing the dependency tree for `debian-archive-keyring`. Unlike the compilation process needed to install `dpkg`, the process we now use to install software is by installing .`deb` files using `dpkg`. +==== Установка debian-archive-keyring ====
  
-#### Installing debian-archive-keyring+Итак, мы начнем выполнять ''dpkg'' зависимости , сначала установив ''debian-archive-keyring''. Однако здесь есть проблема - у нас есть циклическая зависимость, как показано ниже.
  
-So we shall start fulfilling `dpkg`'s dependencies by first by installing `debian-archive-keyring`. However, there is a problem here - we have a circular dependency as illustrated below.+{{:software:linux_server:dfs:68747470733a2f2f63646e2e7261776769742e636f6d2f73636f747477696c6c69616d626561736c65792f64656269616e2d66726f6d2d736372617463682f6d61737465722f696d616765732f64656269616e2d617263686976652d6b657972696e672d646570732e7376.svg |}} 
 +== Рисунок 3. Дерево зависимостей Debian-Archive-Keyring, циклическая зависимость выделена красным==
  
-![](https://cdn.rawgit.com/scottwilliambeasley/debian-from-scratch/master/images/debian-archive-keyring-deps.svg) +''libgcc1'' зависит от ''multiarch-support'', который зависит от ''libc6'', который зависит от ''libgcc1''. Это серьезная проблема, поскольку ни один из этих пакетов не будет полностью установлен без других.
-##### Figure 3 - The debian-archive-keyring dependency tree, circular dependency in red+
  
-`libgcc1` depends on `multiarch-support`, which depends on `libc6`, which depends on `libgcc1`. This is a major problem, as because none of these packages will fully install without having the others.+Чтобы решить эту, казалось бы, неразрешимую проблему, нам придется немного отступить от правил.
  
-In order to solve this seemingly impossible problem, we will need to bend the rules a little bit.+Для начала нам необходимо установить ''gcc-4.9-base'':
  
-First, we need to install `gcc-4.9-base`:+<code bash> 
 +dpkg -i (location of gcc-4.9-base) 
 +</code>
  
-`dpkg -i (location of gcc-4.9-base)`+Затем нам нужно будет сначала установить один пакет частично:
  
-Then, we will need to install one package first in a partial way: +<code bash> 
- +dpkg - i (LOCATION_OF_libgcc1) 
-`dpkg - i (LOCATION_OF_libgcc1)`+</code>
  
-NOTE: You will receive an error here, containing errors very similar to the following:+ПРИМЕЧАНИЕ: Здесь вы получите сообщение об ошибке, содержащее ошибки, очень похожие на следующие:
  
-```+<code bash>
 Unpacking libc6:amd64 (2.28-10) over (2.28-10) ... Unpacking libc6:amd64 (2.28-10) over (2.28-10) ...
 dpkg: dependency problems prevent configuration of libc6:amd64: dpkg: dependency problems prevent configuration of libc6:amd64:
Строка 212: Строка 220:
 Errors were encountered while processing: Errors were encountered while processing:
  libc6:amd64  libc6:amd64
-```+</code>
  
-This is normal - at this point you cannot fully install any of these packages. You can only partially install them, which we will remedy later on.+Это нормально - на этом этапе вы не можете полностью установить ни один из этих пакетов. Вы можете установить их только частично, что мы исправим позже.
  
-Once the package is installed, tweak the database to convince it that it -was- fully installed:+После установки пакета настройте базу данных, чтобы убедиться, что она полностью установлена:
  
-`sed -ir 's/not-installed/installed/' /var/lib/dpkg/status`+<code bash> 
 +sed -ir 's/not-installed/installed/' /var/lib/dpkg/status 
 +</code>
  
-Now install the other two packages in order:+Теперь установите два других пакета по порядку:
  
-`dpkg -i (location_of_multiarch)`+<code bash> 
 +dpkg -i (location_of_multiarch) 
 +</code>
  
-`dpkg -i (location_of_libc6)`+<code bash> 
 +dpkg -i (location_of_libc6) 
 +</code>
  
-And reinstall libgcc1 to cover over our ugly little hack and complete the full installation of each package:+И переустановите libgcc1, чтобы скрыть наш маленький некрасивый хак и завершить полную установку каждого пакета:
  
-`dpkg -i --reinstall (location of libgcc1)`+<code bash> 
 +dpkg -i --reinstall (location of libgcc1) 
 +</code>
  
-#### Installing the rest of apt's dependencies+====Установка остальных зависимостей apt====
  
-At this point, I am assuming that -all- of the .deb files you need to install have been placed in a single directory. Double check to see that you have all of these files. `cd` to this directory right now.+На этом этапе я предполагаю, что -все- файлы .deb, которые вам нужно установить, были помещены в один каталог. Дважды проверьте, что у вас есть все эти файлы. cdв этот каталог прямо сейчас.
  
-The truth is, for the remaining dependencies, the dependency tree for all of them is just too complicated for me to map out and give you a granular series of installation commands to execute what should otherwise be a straightforward operation.+Правда в том, что для всех оставшихся зависимостей дерево зависимостей слишком сложное, чтобы я мог его составить и предоставить вам подробную последовательность команд установки для выполнения того, что в противном случае было бы простой операцией.
  
-Regardless of the actual dependency tree, there is a quick and dirty way to install the rest of the entire apt dependency tree. Simply execute the following command, and repeat it as many times as you need until dpkg no longer complains:+Независимо от фактического дерева зависимостей, есть быстрый и грязный способ установить остальную часть всего дерева зависимостей apt. Просто выполните следующую команду и повторяйте ее столько раз, сколько вам нужно, пока dpkg не перестанет жаловаться:
  
-` dpkg -i *`+<code bash> 
 +dpkg -i * 
 +</code>
  
-What happens here is that dpkg will attempt to install all software packages in the directory. It will inevitably fail, but do not fret. Simply repeat the command until everything is installed.+Здесь происходит следующее: dpkg попытается установить все программные пакеты в каталоге. Это неизбежно приведет к сбою, но не волнуйтесь. Просто повторяйте команду, пока все не будет установлено.
  
-##### How this works+=== Как это работает ===
  
-What happens when we run the command above is that dpkg is attempting to install each package without actually taking into mind the dependency tree. So with each execution of the above command, another level of the dependency tree will be fulfilled, until it's successfully able to confirm that the entire tree was installed. Once you no longer get any errors from dpkg, it means everything was installed.+Что происходит, когда мы запускаем команду выше, так это то, что dpkg пытается установить каждый пакет, фактически не принимая во внимание дерево зависимостей. Таким образом, с каждым выполнением команды выше будет выполняться еще один уровень дерева зависимостей, пока не будет успешно подтверждено, что все дерево было установлено. Как только вы больше не получаете никаких ошибок от dpkg, это означает, что все было установлено.
  
-dpkg is simply not as intelligent as something like apt, which would automatically build a dependency map, and install all prerequisite software before attempting to install software dependent on said software.+dpkg просто не так умен, как что-то вроде apt, которое автоматически создает карту зависимостей и устанавливает все необходимое программное обеспечение перед попыткой установки программного обеспечения, зависящего от указанного программного обеспечения.
  
-You might also notice that dpkg itself is part of the .deb files that needed to be installed. Don't worry, this doesn't break anything. We already have dpkg, but are just installing the official package to update its own database because the database never actually contained itself as part of the list of installed packages.+Вы также можете заметить, что сам dpkg является частью файлов .deb, которые необходимо установить. Не волнуйтесь, это ничего не сломает. У нас уже есть dpkg, но мы просто устанавливаем официальный пакет для обновления его собственной базы данных, поскольку база данных никогда не содержала себя как часть списка установленных пакетов.
    
-##### Double checking if everything is installed+====Дважды проверьте, все ли установлено====
    
-To be absolutely certain, you can execute the following command, which counts how many packages dpkg counts as installed in its database:+Чтобы быть абсолютно уверенным, вы можете выполнить следующую команду, которая подсчитывает, сколько пакетов dpkg считает установленными в своей базе данных:
  
-`echo $(($(dpkg -l | wc -l)-5))`+<code bash> 
 +echo $(($(dpkg -l | wc -l)-5)) 
 +</code>
  
-If this returns the value 23, then you can correctly assume that everything was installed as intended. +Если возвращается значение 23, то можно с уверенностью предположить, что все установлено так, как задумано.
  
-### Creating networking configuration files+=====Создание файлов конфигурации сети=====
  
-Before we proceed with updating `apt's` cache, we need to define both the system's networking configuration files, and apt's list of software repositories.+Прежде чем приступить к обновлению ''apt's'' кэша, нам необходимо определить как файлы конфигурации сети системы, так и список репозиториев программного обеспечения apt.
  
-#### /etc/resolv.conf+==== /etc/resolv.conf====
  
-`/etc/resolv.conf` is a file needed in order for your system to have DNS resolution. Without this file, no resolution typically happens, which makes updating `apt`'s cache of installable packages via `/etc/apt/sources.list` difficult.+''/etc/resolv.conf'' это файл, необходимый для того, чтобы ваша система имела разрешение DNS. Без этого файла разрешение обычно не происходит, что затрудняет обновление aptкэша устанавливаемых пакетов через ''/etc/apt/sources.list''.
  
-```+<code bash>
 cat > /etc/resolv.conf << "EOF" cat > /etc/resolv.conf << "EOF"
 nameserver 8.8.8.8 nameserver 8.8.8.8
 nameserver 8.8.4.4 nameserver 8.8.4.4
 EOF EOF
-```+</code>
  
-#### /etc/apt/sources.list+==== /etc/apt/sources.list====
  
-sources.list is a file which `apt` uses to contact the repositories that hold your software. You want to use the repositories from one and only one distribution as much as possible, otherwise you risk breaking your Debian's clear chain of dependencies and creating an insane mess of your system. +**sources.list** — это файл, который ''apt'' используется для связи с репозиториями, содержащими ваше программное обеспечение. Вы хотите использовать репозитории из одного и только одного дистрибутива как можно чаще, в противном случае вы рискуете нарушить четкую цепочку зависимостей вашего Debian и создать безумный беспорядок в вашей системе.
  
-```+<code bash>
 cat > /etc/apt/sources.list << "EOF" cat > /etc/apt/sources.list << "EOF"
 # Debian Jessie main repos # Debian Jessie main repos
Строка 294: Строка 314:
 deb-src http://httpredir.debian.org/debian/ jessie-updates main deb-src http://httpredir.debian.org/debian/ jessie-updates main
 EOF EOF
-```+</code>
  
-#### /etc/hosts+==== /etc/hosts====
  
-`/etc/hosts` is a file used to contain mapping of IP addresses to hostnames. This file is usually checked before DNS queries, at the very least, this should contain your `ipv4` and `ipv6` loopback addresses.+''/etc/hosts'' это файл, используемый для хранения сопоставления IP-адресов с именами хостов. Этот файл обычно проверяется перед DNS-запросами, по крайней мере, он должен содержать ваши ''ipv4'' и ''ipv6'' петлевые адреса.
  
-```+<code bash>
 cat > /etc/hosts << "EOF" cat > /etc/hosts << "EOF"
 127.0.0.1       localhost 127.0.0.1       localhost
Строка 307: Строка 327:
 ::1     localhost ip6-localhost ip6-loopback ::1     localhost ip6-localhost ip6-loopback
 EOF EOF
-```+</code>
  
-#### /etc/hostname+==== /etc/hostname====
  
-`/etc/hostname` is used to contain your host's DNS name. Edit this if you like.+''/etc/hostname'' используется для хранения имени DNS вашего хоста. Отредактируйте это, если хотите.
  
-```+<code bash>
 cat > /etc/hostname << "EOF" cat > /etc/hostname << "EOF"
 debianfromscratch debianfromscratch
 EOF EOF
-```+</code> 
 + 
 +=====Обновление списков пакетов apt=====
  
-### Updating apt's package lists+Теперь мы готовы обновить наш список пакетов и в полной мере воспользоваться apt. Для этого мы обновляем нашу локальную связку ключей действительных подписей разработчиков Debian gnu pgp с помощью ''apt-key update'', а затем обновляем с помощью ''apt-get update''.
  
-We are now ready to update our list of packages and take full advantage of `apt`. To do this, we update our local keyring of valid Debian developer gnu pgp signatures using `apt-key update`, and then update with `apt-get update`. +<code bash>
-```+
 apt-key update apt-key update
 apt-get update apt-get update
-```+</code>
  
-### Creating user and group databases+=====Создание баз данных пользователей и групп=====
  
-Before we install more software, we must make sure that our password, group and authentication mechanisms are all in place. This is because some packages will require the adding of a new user or group to the system as part of their installation process. Without these base functionalities already in place, installation of said packages will fail.+Прежде чем устанавливать больше программного обеспечения, мы должны убедиться, что все наши механизмы паролей, групп и аутентификации на месте. Это связано с тем, что некоторые пакеты потребуют добавления нового пользователя или группы в систему в рамках процесса установки. Без этих базовых функций установка указанных пакетов не удастся.
  
-##### debianutils +=== debianutils=== 
-We install debianutils to provide the `tempfile` command needed by one of `base-passwd`'s installation scripts. Without this command, installation of `base-passwd` will fail.+Мы устанавливаем debianutils, чтобы предоставить ''tempfile'' команду, необходимую одному из ''base-passwd'' установочных скриптов. Без этой команды установка ''base-passwd'' не будет выполнена.
  
-`apt-get install debianutils`+apt-get install debianutils
  
-##### base-passwd  +=== base-passwd === 
-We install `base-passwd` to provide standard the standard minimal `/etc/passwd` and `/etc/group` files, which are the same across all debian systems. It does this by running the `update-passwd` binary upon its installation.+Мы устанавливаем ''base-passwd'', чтобы предоставить стандартный минимальный стандарт ''/etc/passwd'' и ''/etc/group'' файлы, которые одинаковы во всех системах Debian. Это происходит путем запуска ''update-passwd'' двоичного файла при его установке.
  
-`apt-get install base-passwd`+<code bash> 
 +apt-get install base-passwd 
 +</code>
  
-##### Creating /etc/shadow and /etc/gshadow +=== Создание /etc/shadow и /etc/gshadow=== 
-We have to manually create `/etc/shadow` and `/etc/gshadow`, as the `passwd` package will fail to configure if it cannot find these files:+Нам придется вручную создать ''/etc/shadow'' и ''/etc/gshadow'', так как ''passwd'' пакет не сможет настроиться, если не сможет найти эти файлы:
  
-`touch /etc/shadow /etc/gshadow`+<code bash> 
 +touch /etc/shadow /etc/gshadow 
 +</code>
  
-##### login  +===авторизоваться=== 
-We then install the `login` package, which gives us the ability to establish new sessions on the system with `login`, privilege escalation with `su`, the linux pluggable authentication module (PAM) files for both said binaries, a fake shell `/bin/nologin`,  and the `/etc/login.defs` file which is essential for group creation. There are more functionalities included with this package, but these are the most mentionable.+Затем мы устанавливаем ''login'' пакет, который дает нам возможность устанавливать новые сеансы в системе с ''login'', повышение привилегий с ''su'', файлы подключаемого модуля аутентификации Linux (PAM) для обоих указанных двоичных файлов, поддельную оболочку ''/bin/nologin'' и ''/etc/login.defs'' файл, который необходим для создания группы. В этот пакет включено больше функций, но эти наиболее упоминаемые.
  
-`apt-get install login`+<code bash> 
 +apt-get install login 
 +</code>
    
-##### passwd  +=== пароль === 
-We then install `passwd` package, which provides the lion's share of utilities and configuration files used to create and manipulate user and group account information.+Затем мы устанавливаем ''passwd'' пакет, который предоставляет львиную долю утилит и файлов конфигурации, используемых для создания и управления информацией об учетных записях пользователей и групп.
  
-`apt-get install passwd`+<code bash> 
 +apt-get install passwd 
 +</code>
  
-##### adduser  +=== adduser === 
-We must also install the `adduser` package, because this provides us with the default `/etc/adduser.conf` file which will be needed to install new users properly.+Нам также необходимо установить ''adduser'' пакет, поскольку он предоставляет нам ''/etc/adduser.conf'' файл по умолчанию, который понадобится для правильной установки новых пользователей.
  
-`apt-get install adduser`+<code bash> 
 +apt-get install adduser 
 +</code>
  
-##### Establishing root password and shadowfile entries +=== Установка пароля root и записей shadowfile=== 
-With all the aforementioned utilities and packages installed, our system is now capable of the full functionality of user & group account manipulation.+После установки всех вышеупомянутых утилит и пакетов наша система теперь способна выполнять все функции управления учетными записями пользователей и групп.
  
-At this point, we should run passwd to change our root password. +На этом этапе нам следует запустить ''passwd'', чтобы изменить пароль ''root''.
  
-`passwd root`+<code bash> 
 +passwd root 
 +</code>
  
-We should then run `pwconv` to convert our /etc/passwd entries into shadow entries in `/etc/shadow`:+Затем нам следует запустить ''pwconv'' преобразование наших записей ''/etc/passwd'' в теневые записи в ''/etc/shadow'':
  
-`pwconv`+<code bash> 
 +pwconv 
 +</code>
  
-### Fixing the terminal and adding reading/editing utilities+==== Исправление терминала и добавление утилит чтения/редактирования====
  
-Our terminal does not yet have the full functionality one would expect of a terminal, and standard terminal utilities may still fail to function properly at this point. Let's install the proper libraries and create the configurations needed to make these , before we install +Наш терминал пока не обладает полной функциональностью, которую можно было бы ожидать от терминала, и стандартные утилиты терминала могут по-прежнему не работать должным образом на этом этапе. Давайте установим соответствующие библиотеки и создадим конфигурации, необходимые для того, чтобы сделать их, прежде чем мы установим
  
-#### Creating /etc/inputrc file+=== Создание файла /etc/inputrc===
  
-`/etc/inputrc` is the global configuration file for the used by the `libreadline6` library, which most shells use in order to understand how to handle many special keyboard situations, such as what behavior should be default when hitting the HOME and END keys. Without this file, many special keys and two-key stroke combos such as ctrl+left will fail to work. +''/etc/inputrc'' это глобальный файл конфигурации для используемой библиотеки ''libreadline6'', который большинство оболочек используют для понимания того, как обрабатывать многие особые ситуации с клавиатурой, например, какое поведение должно быть по умолчанию при нажатии клавиш HOME и END. Без этого файла многие особые клавиши и двухклавишные комбинации, такие как ctrl+left, не будут работать.
  
-Since this file is not created by default when installing the `libreadline6` library, we must create it ourselves.+Поскольку этот файл не создается по умолчанию при установке ''libreadline6'' библиотеки, нам придется создать его самостоятельно.
  
-```+<code bash>
 cat > /etc/inputrc << "EOF" cat > /etc/inputrc << "EOF"
 # /etc/inputrc - global inputrc for libreadline # /etc/inputrc - global inputrc for libreadline
Строка 452: Строка 487:
 $endif $endif
 EOF EOF
-```+</code>
  
-#### ncurses libraries and binaries +=== Библиотеки и двоичные файлы ncurses=== 
-A large number of command line utilites rely on the ncurses library to provide a text-interface for user interaction over the terminal. These include simple utilities such as `less` and `nano`. Without this library, these utilities will fail to display properly. We must install the complete suite of the ncurses library in order to prevent said errors from occurring:+Большое количество утилит командной строки полагаются на библиотеку ncurses для предоставления текстового интерфейса для взаимодействия пользователя через терминал. К ним относятся простые утилиты, такие как ''less'' и ''nano''. Без этой библиотеки эти утилиты не будут отображаться должным образом. Мы должны установить полный набор библиотеки ncurses, чтобы предотвратить возникновение указанных ошибок:
  
-`apt-get install ncurses-base ncurses-bin ncurses-doc`+<code bash> 
 +apt-get install ncurses-base ncurses-bin ncurses-doc 
 +</code>
  
-#### dialog +=== dialog=== 
-Dialog is a perl module which some scripts attempt to use to provide a text-interface used during configuration or installation. You may have noticed some packages warning you that this utility was non-existent during installation. Let's fix this: +Dialog — это модуль ''perl'', который некоторые скрипты пытаются использовать для предоставления текстового интерфейса, используемого во время настройки или установки. Вы могли заметить, что некоторые пакеты предупреждали вас, что эта утилита отсутствует во время установки. Давайте исправим это:
  
-`apt-get install dialog`+<code bash> 
 +apt-get install dialog 
 +</code>
  
-#### less, vim and nano +=== less, vim and nano=== 
-Now that we've installed most of the libraries and utilities needed for terminal utilities, let's install some of the most basic and well-used ones:+Теперь, когда мы установили большую часть библиотек и утилит, необходимых для терминальных утилит, давайте установим некоторые из самых основных и часто используемых из них:
  
-`apt-get install less vim nano`+<code bash> 
 +apt-get install less vim nano 
 +</code>
  
-### Creating the standard filesystem hierarchy on a Debian system +==== Создание стандартной иерархии файловой системы в системе Debian==== 
-Let's create the standard folder structure for a debian system. This can be done easily by installing `base-files`. First, we have to remove the `/var/mail` directory though or else it will complain that it already exists.+Давайте создадим стандартную структуру папок для системы Debian. Это можно легко сделать, установив ''base-files''. Сначала нам нужно удалить ''/var/mail'' каталог, иначе он будет жаловаться, что он уже существует.
  
-```+<code bash>
 rm -rf /var/mail rm -rf /var/mail
 apt-get install base-files apt-get install base-files
-```+</code>
  
-### Building the man documentation system +==== Создание системы документации для человека ==== 
-Any Linux system typically has a database full of manual pages, accessed by the `man` command. Most programs we've installed already have already added their documentation files in the proper location. All we need to do now is actually install `man` to take advantage of them, and any more that are added as time passes by.+В любой системе Linux обычно есть база данных, полная страниц руководства, доступ к которой осуществляется с помощью ''man'' команды. Большинство программ, которые мы уже установили, уже добавили свои файлы документации в нужное место. Все, что нам нужно сделать сейчас, это установить их ''man'', чтобы воспользоваться ими, и любыми другими, которые будут добавлены со временем.
  
-`apt-get install man`+<code bash> 
 +apt-get install man 
 +</code>
  
-### Installing all remaining essential packages +==== Установка всех оставшихся необходимых пакетов ==== 
-We've installed most of the packages, all that is left to do is install the rest of the packages marked with the priority `essential` by the Debian maintainers. Some of these are absolutely essential to system management, and some will barely be used at all. +Мы установили большую часть пакетов, осталось только установить остальные пакеты, отмеченные приоритетом ''essential'' со стороны сопровождающих Debian. Некоторые из них абсолютно необходимы для управления системой, а некоторые вообще вряд ли будут использоваться.
  
-To comply with the Debian standard, we must install all of these:+Чтобы соответствовать стандарту Debian, нам необходимо установить все это:
  
-`apt-get install bash bsdutils coreutils dash diffutils e2fsprogs findutils grep gzip hostname libc-bin init mount perl-base sed sysvinit-utils tar util-linux`+<code bash> 
 +apt-get install bash bsdutils coreutils dash diffutils e2fsprogs findutils grep gzip hostname libc-bin init mount perl-base sed sysvinit-utils tar util-linux 
 +</code>
  
-Here follows is a short description of each package installed:+Ниже приведено краткое описание каждого установленного пакета:
  
-| Description | What it provides | +| Описание |Что это дает | 
-| ------------- | :-----: | +| **bash**: |Оболочка GNU Bourne-again, которая является стандартной оболочкой Linux. | 
-| **bash**: | The gnu bourne-again shell, which is your standard linux shell. | +| **bsdutils**: | Предоставляет несколько двоичных файлов, наиболее важный reniceиз которых необходим для изменения приоритетов процессов и loggerиспользуется для взаимодействия с системным модулем syslog.| 
-| **bsdutils**: | Provides a few binaries, most notably `renice` which is needed for changing process priorities, and `logger` which is used for interacting with the syslog system module.| +| **coreutils**: |Самая важная группа двоичных файлов, необходимая для того, чтобы сделать любую оболочку полезной. | 
-| **coreutils**: | The absolute most essential group of binaries needed to make any shell useful. | +| **dash**: |Оболочка Debian Almquist, которая представляет собой более быструю версию sh и предназначена в основном для использования в скриптах. | 
-| **dash**: | The Debian Almquist shell, which is a faster version of sh intended mainly for use by scripts. | +| **diffutils**: |Предоставляет утилиты для сравнения содержимого файлов между собой.  | 
-| **diffutils**: | Provides utilities for comparing the contents of files between each other.  | +| **e2fsprogs**: |Предоставляет утилиты для работы с семейством файловых систем ext.  | 
-| **e2fsprogs**: | Provides  utilities for working with the ext family of filesystems.  | +| **findutils**: |Предоставляет утилиту find для поиска файлов.  | 
-| **findutils**: | Provides the find utility for finding files.  | +| **grep**: |Предоставляет утилиту grep, используемую для поиска строк в файлах или выводимых в нее данных. | 
-| **grep**: | Provides the grep utility, used for finding strings within files or output you pipe into it. | +| **gzip**: |Предоставляет утилиту gzip, используемую для работы с файлами, использующими кодировку LZ77. | 
-| **gzip**: | Provides the gzip utility, used for working with files using LZ77 encoding. | +| **hostname**: |Предоставляет набор утилит для управления именем хоста системы. | 
-| **hostname**: | Provides the a set of utilities for manipulating the system's host name. | +| **libc-bin**: |Предоставляет реализацию GNU стандартной библиотеки C. Необходим для создания и использования программ. | 
-| **libc-bin**: |  Provides the GNU implementation of the standard C library. Essential for creating and using programs. | +| **init**: |Предоставляет стандартный набор средств инициализации системы для Debian. | 
-| **init**: | Provides the standard system initialization suite for Debian. | +| **mount**: |Предоставляет стандартные системные утилиты для монтирования и размонтирования файловых систем, включая файлы подкачки.  | 
-| **mount**: | Provides the standard system utilities for mounting and unmounting filesystems, including swapfiles.  | +| **perl-base**: |Предоставляет язык программирования Perl.  | 
-| **perl-base**: | Provides the perl programming language.  | +| **sed**: |Предоставляет язык программирования sed, обычно используемый для редактирования текста.  | 
-| **sed**: | Provides the sed programming language, generally used for editing text.  | +| **sysvinit-utils**: |Предоставляет утилиты типа system-v. | 
-| **sysvinit-utils**: | Provides system-v like utilities. | +| **tar**: |Предоставляет программу tar, используемую для хранения и извлечения файлов из архива на ленте.  | 
-| **tar**: | Provides the tar program, used for storing and retrieving files from a taped archive.  | +| **util-linux**: |Предоставляет множество жизненно важных системных утилит. |
-| **util-linux**: | Provides many vital system utilities. |+
  
-### Installing the kernel+==== Установка ядра ====
  
-You have two options here: either you can install the latest kernel image for your system architecture provided by the Debian project, or you can compile your own.+Здесь у вас есть два варианта: вы можете либо установить последний образ ядра для архитектуры вашей системы, предоставленный проектом Debian, либо скомпилировать свой собственный.
  
-#### Installing Debian's kernel+=== Установка ядра Debian===
  
-If you want to install Debian's standard kernel, you will want to search for the available images provided for your architecture, and then install the approriate image.+Если вы хотите установить стандартное ядро ​​Debian, вам нужно будет найти доступные образы, соответствующие вашей архитектуре, а затем установить соответствующий образ.
  
-```+<code bash>
 apt-cache search linux-image apt-cache search linux-image
 apt-get install (selected image) apt-get install (selected image)
-```+</code>
  
-#### Compiling and installing your own custom kernel+=== Компиляция и установка собственного ядра===
  
-You can also compile your own custom kernel if you feel like it. +При желании вы также можете скомпилировать свое собственное ядро.
  
-To do this, you will need a tarball of the Linux kernel source, which you probably already have.+Для этого вам понадобится tar-архив исходного кода ядра Linux, который у вас, вероятно, уже есть.
  
-You will also need to install the gcc package (which incidentally installs most other software needed to compile), the libncurses5-dev package (which provides the libraries needed to use the command line configuration utility for the kernel source), the bc package (a language that supports precision numbers), and the make package (the make utility used for compiling the source into binary). +Вам также потребуется установить пакет gcc (который, кстати, устанавливает большую часть другого программного обеспечения, необходимого для компиляции), пакет libncurses5-dev (который предоставляет библиотеки, необходимые для использования утилиты конфигурации командной строки для исходного кода ядра), пакет bc (язык, поддерживающий точные числа) и пакет make (утилита make, используемая для компиляции исходного кода в двоичный файл).
  
-`apt-get install gcc libncurses5-dev bc make`+<code bash> 
 +apt-get install gcc libncurses5-dev bc make 
 +</code>
  
-Now open up your extracted kernel source. Ensure that there are no stale files left behind from the developers in the source tree:+Теперь откройте извлеченный исходный код ядра. Убедитесь, что в дереве исходного кода нет устаревших файлов, оставленных разработчиками:
  
-`make mrproper`+<code bash> 
 +make mrproper 
 +</code>
  
-Install the header files for this particular kernel. You will need these in the future if you intend to compile software that will take advantage of this kernel's API in the future:+Установите файлы заголовков для этого конкретного ядра. Они вам понадобятся в будущем, если вы собираетесь компилировать программное обеспечение, которое будет использовать API этого ядра в будущем:
  
-```+<code bash>
 make INSTALL_HDR_PATH=dest headers_install make INSTALL_HDR_PATH=dest headers_install
 cp -rv dest/include/* /usr/include cp -rv dest/include/* /usr/include
-```+</code>
  
-I recommend that you use the default configuration as the base for your kernel build, as it will at the very least ensure that your system will be able to boot using the image we create later.+Я рекомендую вам использовать конфигурацию по умолчанию в качестве основы для сборки ядра, так как это, по крайней мере, гарантирует, что ваша система сможет загрузиться с использованием образа, который мы создадим позже.
  
-`make defconfig`+<code bash> 
 +make defconfig 
 +</code>
  
-Then, customize your kernel according to your heart's desire.+Затем настройте свое ядро ​​по своему вкусу.
  
-`make menuconfig`+<code bash> 
 +make menuconfig 
 +</code>
  
-This book cannot help you figure out what exact modules to add to the kernel - you need determine the exact hardware that exists on your system yourself, and do research as to what modules will make those pieces of hardware functional. Google is your friend. +Эта книга не поможет вам разобраться, какие именно модули следует добавить в ядро ​​— вам нужно самостоятельно определить точное оборудование, которое есть в вашей системе, и провести исследование относительно того, какие модули сделают это оборудование функциональным. Google — ваш друг.
  
-After you've customized your kernel, compile it.+После настройки ядра скомпилируйте его.
  
-`make`+<code bash> 
 +make 
 +</code>
  
-If you've created a modular kernel, install the compiled modules into it:+Если вы создали модульное ядро, установите в него скомпилированные модули:
  
-`make modules_install`+<code bash> 
 +make modules_install 
 +</code>
  
-Copy the completed kernel into the /boot/ directory, and make sure that it's name starts with 'vmlinuz'. It's a good idea to append an identifying string to the name of this file. The version number of this kernel will do. We also copy the System.map file, and the config for this kernel (so we can easily examine how this kernel was built). We append our identifying string to this too, because as time passes by we may want to install more kernels.+Скопируйте готовое ядро ​​в каталог /boot/ и убедитесь, что его имя начинается с 'vmlinuz'. Хорошей идеей будет добавить идентификационную строку к имени этого файла. Номер версии этого ядра подойдет. Мы также копируем файл System.map и конфигурацию для этого ядра (чтобы мы могли легко проверить, как было собрано это ядро). Мы также добавляем к этому нашу идентификационную строку, потому что со временем мы можем захотеть установить больше ядер.
  
-```+<code bash>
 cp -v arch/x86/boot/bzImage /boot/vmlinuz-(identifier) cp -v arch/x86/boot/bzImage /boot/vmlinuz-(identifier)
 cp -v System.map /boot/System.map-4.4.2 cp -v System.map /boot/System.map-4.4.2
 cp -v .config /boot/config-(identifier) cp -v .config /boot/config-(identifier)
-```+</code>
  
-### Adding modular functionality to the system+==== Добавление модульной функциональности в систему====
  
-Regardless of if you installed the standard Debian GNU/Linux kernel, or compiled your own, you are going to need to provide your system with the binaries needed to load, remove and manipulate kernel modules. +Независимо от того, установили ли вы стандартное ядро ​​Debian GNU/Linux или скомпилировали свое собственное, вам потребуется снабдить свою систему двоичными файлами, необходимыми для загрузки, удаления и управления модулями ядра. 
  
-`apt-get install kmod `+<code bash> 
 +apt-get install kmod 
 +</code>
  
-The only exception to this case would be if you compiled your own monolithic kernel with no modules, and do not intend on adding any beyond the ones you've already compiled into the kernel (which would generally be the case if you're doing embedded development).+Единственным исключением из этого случая может быть случай, когда вы скомпилировали свое собственное монолитное ядро ​​без модулей и не собираетесь добавлять ничего, кроме тех, которые вы уже скомпилировали в ядро ​​(что обычно и происходит, если вы занимаетесь разработкой встраиваемых систем).
  
-### Making the system bootable+==== Делаем систему загрузочной==== 
 +=== Переконфигурирование диска с предустановленным загрузчиком GRUB2=== 
 +Если эта система Debian Linux находится на разделе уже загрузочного диска, все, что нужно сделать, чтобы сделать эту систему загрузочной, — это заменить файл конфигурации загрузчика диска, включив соответствующий раздел этой системы в список загрузочных разделов.
  
 +Если вы используете GRUB2, то использование ''grub2-mkconfig'' утилиты делает это очень простым. Просто укажите ей местоположение уже существующего файла grub.cfg:
  
-#### Reconfiguring a drive with a pre-installed GRUB2 bootloader +<code bash> 
-If this Debian Linux system is on a partition of an already bootable drive, all one needs to do to make this system bootable is to replace the configuration file of the drive's bootloader to include this system's corresponding partition in its list of bootable partitions. +grub2-mkconfig -o /boot/(path to grub.cfg) 
- +</code>
-If using GRUB2, then using the `grub2-mkconfig` utility makes it very simple to do so. Merely point it to the location of the already existing grub.cfg file: +
- +
-`grub2-mkconfig -o /boot/(path to grub.cfg)`+
  
-#### Installing GRUB2 onto a drive with no pre-installed bootloader +=== Установка GRUB2 на диск без предустановленного загрузчика=== 
-In the event that the partition is on a drive that does not yet have its own bootloader, you must install it and configure it yourself. To install GRUB2, you must first exit your chroot.+В случае, если раздел находится на диске, на котором еще нет собственного загрузчика, вы должны установить и настроить его самостоятельно. Чтобы установить GRUB2, вы должны сначала выйти из chroot.
  
-```+<code bash>
 exit exit
 grub2-install /dev/(location of drive that holds this partition)` grub2-install /dev/(location of drive that holds this partition)`
-```+</code>
  
-Since this GRUB2 install does not have a configuration file yet, let's create one via template:+Поскольку в этой установке GRUB2 пока нет файла конфигурации, давайте создадим его с помощью шаблона:
  
-```+<code bash>
 cat > /boot/grub/grub.cfg << "EOF" cat > /boot/grub/grub.cfg << "EOF"
 # Begin /boot/grub/grub.cfg # Begin /boot/grub/grub.cfg
Строка 613: Строка 671:
 } }
 EOF EOF
-```+</code>
  
-Then, edit this file to replace the (kernel-location) string in the file with the actual location of said kernel inside the partition.+Затем отредактируйте этот файл, заменив строку (kernel-location) в файле фактическим местоположением указанного ядра внутри раздела.
  
-Afterwards, use the previously aforementioned `chroot` command provided in the 'Entering our chroot' section to return to the chroot.+После этого используйте ранее упомянутую ''chroot'' команду, приведенную в разделе «Вход в chroot», чтобы вернуться в chroot.
  
-### Creating /etc/fstab+==== Создание /etc/fstab====
  
-Before you boot into your system, it is absolutely -vital- for you to create and configure your /etc/fstab file. +Перед загрузкой системы вам абсолютно необходимо создать и настроить файл /etc/fstab.
  
-If you do -not- have an /etc/fstab file or fail to specify what partition is to be mounted as the root filesystem, you will be stuck within a temporary, read-only filesystem created by the kernel, located only in RAM. It uses this to switch into the supposed root filesystem. You do not want to be stuck here.+Если у вас нет файла /etc/fstab или вы не указали, какой раздел должен быть смонтирован как корневая файловая система, вы застрянете во временной файловой системе только для чтения, созданной ядром, расположенной только в оперативной памяти. Оно использует ее для переключения на предполагаемую корневую файловую систему. Вы не хотите застрять здесь.
  
-So we create a base /etc/fstab:+Итак, создаем базу /etc/fstab:
  
-```+<code bash>
 cat > /etc/fstab << "EOF" cat > /etc/fstab << "EOF"
 # Begin /etc/fstab # Begin /etc/fstab
Строка 639: Строка 697:
 # End /etc/fstab # End /etc/fstab
 EOF EOF
-``` +</code>
- +
-Modify the first entry with the partition location of this system, and the type of filesystem. The second entry should contain the location of your swap partition. If you don't intend on using one, remove the line.+
  
-### The End+Измените первую запись на расположение раздела этой системы и тип файловой системы. Вторая запись должна содержать расположение вашего раздела подкачки. Если вы не собираетесь его использовать, удалите строку.
  
-Congratulations! You've finished building your Debian system, and now have the complete range of functionality expected of a Debian system on top of your regular LFS install.+==== Конец==== 
 +Поздравляем! Вы завершили сборку своей системы Debian и теперь имеете полный набор функций, ожидаемых от системы Debian, в дополнение к обычной установке LFS.
  
-### Comments, suggestions, bugs+==== Комментарии, предложения, ошибки====
  
-If you found this guide useful, or have suggestions, the author would love to hear from you. Email him at +Если вы нашли это руководство полезным или у вас есть предложения, автор будет рад услышать от вас. Напишите ему по адресу
  
-scottwilliambeasley AT gmail .com . Replace the AT with @, and remove spaces.+[[mail>]]scottwilliambeasley@gmail.com
  
-Also, contributions or additions to this manual are very much welcomed. You may do so by using this repository:+Также, вклады или дополнения к этому руководству очень приветствуются. Вы можете сделать это, используя этот репозиторий:
  
-  * https://github.com/scottwilliambeasley/debian-from-scratch/+  * [[https://github.com/scottwilliambeasley/debian-from-scratch/|Ссылка на оригинальную статью]]
   * https://git.wwoss.ru/lfs/debian-from-scratch   * https://git.wwoss.ru/lfs/debian-from-scratch
 +==== Дополнения и Файлы ====
 +{{ :software:linux_server:dfs:debian-from-scratch-master.zip |}}
software/linux_server/dfs/dfs.1743010047.txt.gz · Последнее изменение: — VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki