Устанавливаем базовый Debian sid с помощью debootstrap
prolinux
Debian sid — нестабильная ветка свободной операционной системы, и поэтому он не имеет собственного дистрибутива — установочного iso-образа. Установить эту версию Debian можно либо из iso-образа тестовой ветки с последующим обновлением до sid, либо с помощью debootstrap — специальной программы для установки базовой системы Debian любой версии. В этом обзоре я покажу последовательность действий при установке базового Debian sid с помощью debootstrap в пошаговом режиме и со всеми необходимыми пояснениями и лирическими отступлениями.
Почему Debian sid
Debian sid — это нестабильная ветка популярной операционной системы, с помощью которой сообщество Debian в течение двух лет разрабатывает новый, очередной, стабильный выпуск. В сути, Debian sid можно считать полноценным rolling release, почти как Arch, но с некоторыми строгими ограничениями в политике безопасности и с самым обширным, официально поддерживаемым сообществом хранилищем пакетов свободных программ.
Когда нам нужен Debian sid? Примеров можно привести много.
Если у нас новый с иголочки компьютер, и его hardware не поддерживается ядром текущего стабильного выпуска (bookworm), есть шанс, что нам повезёт, и в Debian sid эта поддержка окажется уже или в ближайшее время.
Если нам нужно с нуля разработать какую-то программу, будь то оконное приложение или web, выгодней всего разрабатывать её на Debian sid, в нём самые свежие версии программ и библиотек, которые обязательно понадобятся для работы над проектом.
Это всего лишь пара примеров из моей повседневной практики, именно эти обстоятельства заставили меня в своё время перейти со стабильного выпуска Debian на sid.
Базовое окружение
debootstrap — это утилита командной строки, для запуска и адекватной работы этой программы необходимо соответствующее окружение. Если устанавливать Debian sid на стационарный компьютер, тогда, чтобы запустить debootstrap, потребуется любой deb-совместимый Live: Debian, Ubuntu, Mint или MX Linux. Увы, эти вендоры по каким-то неведомым причинам не считают нужным включить debootstrap в состав своих Live систем, но на всех эту программу можно установить с помощью apt прямо в Live-сессии, понадобится только подключение к сети. Наиболее выгодно для достижения поставленной цели на фоне остальных конкурентов выглядит MX Linux Libretto Live.
В рамках этой демонстрации я буду устанавливать базовую систему Debian sid не на стационарный диск своего компьютера, а на внешний HDD. Это обстоятельство даёт мне возможность использовать в качестве базового окружения установленную на стационарном диске моего лэптопа операционную систему, её штатный терминал и подключение к сети Интернет. При этом первый тестовый запуск устанавливаемой операционной системы можно осуществить в виртуальной машине VirtualBox без перезагрузки рабочего компьютера.
Почему на внешний HDD
С внешнего HDD можно загрузить любой компьютер. С внешнего HDD удобней всего перенести уже готовую операционную систему на любой компьютер, несколько компьютеров. С внешнего HDD удобней всего создать iso-образ живой операционной системы и перенести его на флешку, это я тоже покажу чуть позже в этом блоге. Ну и наконец, с внешнего HDD можно работать на виртуальной машине и все показанные здесь действия выполнять на виртуальной машине, имея в распоряжении удобную и хорошо настроенную операционную систему хост-машины с уже подключенной сетью.
Показанный в этой и нескольких последующих демонстрациях способ установки операционной системы имеет максимально возможную кастомизацию, то есть оператор может выбирать программное обеспечение и настройки самостоятельно уже в процессе установки, а не после... Более того, так можно установить любую версию Debian, отличия процессов будут минимальны.
В рамках этой демонстрации я установлю только базовую систему, а в последующих выпусках блога я покажу, как эту систему довести до приемлемых кондиций и перенести на десктоп или "живую" флешку. Рекомендую следить за обновлениями блога.
Подготовка внешнего HDD
В моём хозяйстве имеется внешний HDD с дисковым пространством 2ТБ. На этом накопителе выделено два раздела. В первом разделе 50 ГиБ, во втором разделе всё оставшееся пространство. Для установки любой deb-совместимой операционной системы в самом общем случае достаточно одного единственного раздела. Я буду устанавливать операционную систему на первый раздел, который отформатирован в файловую систему ext4 и существует в рамках таблицы msdos.
При подключении накопителя в USB-разъём компьютера, устройство определилось по адресу /dev/sdb
, а его первый раздел — /dev/sdb1
. С этим адресом я и буду работать далее.
Получаем файлы базовой системы
Поскольку все продемонстрированные здесь команды требуют прав суперпользователя, запускаю терминал и становлюсь root-ом.
$ sudo -i
При этом приглашение командной строки изменит свой вид, вместо знака доллара появится решётка, как подтверждение супер полномочий.
Монтирую выбранный раздел накопителя в системный каталог /mnt
.
# mount /dev/sdb1 /mnt
С помощью debootstrap, который уже установлен в операционной системе моего компьютера, получаю из официального зеркала файлы базовой системы Debian sid.
# debootstrap --arch amd64 sid /mnt http://ftp.ru.debian.org/debian/
Здесь с помощью ключа --arch
я указал интересующую меня архитектуру, sid
указывает на версию операционной системы, /mnt
— целевой каталог, куда будут копироваться и распаковываться файлы полученных пакетов. Замыкает команду адрес официального сетевого зеркала Debian, откуда пакеты будут загружаться. Жму enter
.
На снимке экрана видно, что программа подключилась к указанному зеркалу и начала загрузку и распаковку всех необходимых пакетов в каталог /mnt
, создавая при этом вложенные каталоги. Действие занимает некоторое время и имеет упорядоченный выхлоп, который заканчивается, как показано на следующем снимке экрана.
Base system installed successfully.
Если по окончании этого действия посмотреть на содержимое каталога /mnt
, можно увидеть все характерные для Debian функциональные каталоги будущей операционной системы.
Монтируем временные файловые системы
Всё идёт по плану, базовая система уже распакована и установлена на внешний HDD, чтобы воспользоваться её окружением, необходимо смонтировать её временные файловые системы. Для этого выполняю последовательно следующие четыре команды.
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
# mount --bind /dev/pts /mnt/dev/pts
Как видно на снимке экрана выше, при исполнении этих команд не возникло никаких ошибок или сбоев, в каталоге /mnt
уже присутствуют указанные в командах точки монтирования.
Меняем окружение
В итоге всех выполненных до этого момента действий, на внешнем смонтированном разделе HDD образовалось новое окружение Debian, и в него, соответствующие его каталоги, смонтированы все временные файловые системы текущей операционной системы моего рабочего компьютера. Это обстоятельство даёт возможность очень просто сменить окружение.
# LANG=C.UTF-8 chroot /mnt /bin/bash
Как видно на снимке экрана выше, в результате исполнения команды приглашение командной строки в моём рабочем терминале изменило свой вид, теперь я нахожусь в корне файловой системы смонтированного в /mnt
раздела внешнего диска и могу с помощью текущего командного интерпретатора управлять этим окружением.
Настраиваем пакетный менеджер
Для начала, следует посмотреть на настройки пакетного менеджера apt нового окружения командной строки. Открываю в текстовом редакторе файл sources.list
.
# nano /etc/apt/sources.list
В уже присутствующую в этом файле одну единственную строчку дописываю все ветки официального хранилища Debian sid.
deb http://ftp.ru.debian.org/debian sid main contrib non-free non-free-firmware
Сохраняю изменения в файл.
И покидаю текстовый редактор. Пришло время обновить базу данных пакетного менеджера apt.
# apt update
На снимке экрана выше видно, что обновление базы данных прошло успешно, никаких сбоев и ошибок не зарегистрировано. Это обстоятельство даёт мне возможность установить в текущее окружение любой пакет из подключенного сетевого хранилища.
Формируем fstab будущей операционной системы
Впоследствии, когда все работы по установке базовой операционной системы будут закончены, её необходимо будет загрузить. При загрузке любой операционной системы с Linux на её начальной стадии происходит монтирование всех указанных в системном файле /etc/fstab
файловых систем. Для новой системы этот файл необходимо сформировать.
Монтировать файловые системы можно несколькими способами, в том числе, по системному адресу раздела накопителя, или по системному UUID раздела накопителя. В текущем окружении системный адрес корневого раздела имеет вид /dev/sdb1
, и при загрузке операционной системы с этого раздела его системный адрес изменится. Поэтому в fstab я должен указать системный UUID раздела, дабы избежать впоследствии ненужных коллизий. Этот UUID уже можно определить в текущем окружении с помощью команды blkid.
# blkid /dev/sdb1
Поскольку я нахожусь в эмуляторе терминала в графическом окружении своей рабочей операционной системы, мне всё ещё доступен её буфер обмена. Копирую полученное с помощью blkid значение в буфер обмена. Открываю файл fstab текущего окружения в текстовом редакторе.
# nano /etc/fstab
В этот файл, а на данный момент в нём присутствует только комментарий, вписываю две следующие строчки.
UUID=0605b674-2a66-45c9-a38d-f80ac6b9bde8 / ext4 errors=remount-ro 0 1
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Вторая строчка определяет порядок монтирования дисков в приводе CD-ROM, поскольку на моей машине такой привод есть, но в принципе, без неё можно и обойтись. Сохраняю изменения в файл.
Всё готово к установке ядра и базового загрузчика.
Установка ядра и базового загрузчика
Базовая система, файлы и каталоги которой я распаковал с помощью команды debootstrap, пока не содержит ядра, его требуется установить. Вместе с ядром я установлю ещё и базовый загрузчик GRUB, с его помощью операционную систему с этого внешнего накопителя можно будет загрузить впоследствии.
# apt install -y linux-image-amd64 grub-pc dbus
Жму enter
, и, поскольку в команде я указал ключ -y
, пакетный менеджер сразу приступит к загрузке и распаковке всех запрошенных пакетов.
Дожидаюсь полного завершения этого процесса.
Устанавливаем базовый загрузчик на диск
На внешнем накопителе, с которым я работаю в рамках этой демонстрации будет установлена одна единственная операционная система. При её загрузке впоследствии мне очень хочется избежать установленного по-умолчанию таймаута базового загрузчика. Открываю в текстовом редакторе следующий файл.
# nano /etc/default/grub
В этом файле нахожу строчку GRUB_TIMEOUT
и изменяю установленное в ней значение на ноль.
Сохраняю изменения в файл и покидаю текстовый редактор.
Устанавливать базовый загрузчик я буду в MBR внешнего HDD, на текущий момент он идентифицируется по адресу /dev/sdb
.
# grub-install /dev/sdb
Как видно на снимке экрана выше, установка GRUB прошла успешно, без сбоев и ошибок. No error reported. Это обстоятельство даёт мне возможность обновить этот системный загрузчик в соответствии с файлом настроек, который я только что отредактировал.
# update-grub
В конце выхлопа исполненной команды мы видим строчку done. Системный загрузчик готов к исполнению возложенной на него миссии.
Задаём пароль root
В базовой операционной системе, которую я только что установил и выполнил её начальную настройку, на текущий момент имеется только один пользователь — root. Других пользователей я создам чуть позже, после локализации этой системы. Чтобы root мог войти — залогиниться, ему необходимо создать пароль.
# passwd root
Эта команда исполняется в интерактивном режиме, будет запрошен ввод пароля и подтверждение пароля повторным вводом. При вводе пароль не будет отображаться на терминал. Внимание на следующий снимок экрана.
Всё..! Базовый Debian sid установлен на раздел внешнего HDD накопителя, настроен и готов к первой тестовой загрузке.
Отключаем текущее окружение
Перед первой тестовой загрузкой только что установленной базовой операционной системой Debian sid необходимо отключить все смонтированные файловые системы текущего окружения. Последовательно выполняю следующие команды.
# umount /dev/pts
# umount /sys
# umount /proc
# umount /dev
Текущее окружение нужно покинуть.
# exit
И отключить смонтированный раздел внешнего накопителя.
# umount /mnt
Вынимать разъём девайса из гнезда USB торопиться не следует. Только что установленную операционную систему следует протестировать.
Загружаем с внешнего накопителя машину VirtualBox
Внешний накопитель, с которым я работал в рамках этой демонстрации подключен к виртуальной машине VirtualBox, и поэтому я имею возможность протестировать первый запуск только что установленного базового Debian sid на виртуальной машине, без перезагрузки своего рабочего компьютера. Запускаю VirtualBox, включаю виртуальную машину. На старте наблюдаю окно базового загрузчика без таймаута.
Дожидаюсь полной загрузки установленной на накопителе операционной системы и получаю возможность войти от имени пользователя root.
Как видно на снимке экрана виртуальной машины выше, на текущий момент Debian sid имеет ядро версии 6.12.9
и его базовая система готова принимать команды во всех виртуальных консолях. Цель этой демонстрации полностью достигнута.
Подводим промежуточный итог
Увы, но базовая система Debian sid предлагает пользователю только интерфейс командной строки. И чтобы она стала удобной и дружелюбной к своему благодарному пользователю, в эту базовую систему требуется установить ещё очень и очень много разного полезного пользовательского программного обеспечения. О всех мелких деталях этой работы я планирую рассказать на страницах этого блога. Ваша активность в блоге будет дополнительным мотивирующим автора фактором, не оставайтесь в стороне, поставьте лайк, оставьте комментарий, поддержите меня своим безвозмездным и благородным донатом. А в следующем выпуске этого блога я покажу процесс локализации базового Debian sid. Продолжение следует...