Установка Debian 9 на флешку.

Автор Роман846, 13 октября 2017, 14:18:51

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Роман846

Здравствуйте. Занимается кто либо этим?
Хочется сделать себе такую флешку, но не знаю, какие есть нюансы, для уменьшения износа флешки при таком способе ее использования(отключение swap, перенос логов и т.д. в tmp, отключение журналирования или выбор другой фс). И еще хочется понять, как с этим обстоят дела у systemd?
Есть тут инструкция, но уже не актуально.
Открыть содержимое (спойлер)

1. Создание и подготовка образа диска
2. Установка базовой системы
3. Установка пользовательского окружения
4. Настройка системы и загрузки
5. Конец настройки, запись на флешку


Итак, сейчас я попробую установить Debian 8 Jessie на флешку... Как оказалось, при установке нового Дебиана есть некоторые проблемы, о которых старый гайд даже не подозревал! А я тем более, поскольку моя флешка сидит ещё на седьмой версии... Так или иначе, вот шаги, которые я выполнял.
Установка производится из графического интерфейса в Gentoo, все программы легко можно найти в других дистрибутивах, либо делать вещи по-другому.
1. Создание и подготовка образа диска
Ну, тут всё просто:

$ dd if=/dev/zero of=flash.img bs=1M count=4x1024
Так мы создаём новый образ диска под именем flash.img. Позже мы запишем его на реальную флешку, но сейчас будет куда проще и быстрее работать с образом. Однако, работать с ним как с файлом ужасно неудобно. Поэтому мы используем устройство-петлю (loop device), с помощью которого можно представить образ диска как блочное устройство:

$ sudo losetup -P /dev/loop0 flash.img
А теперь разобъём диск:

$ sudo gparted /dev/loop0
Первым делом - создаём таблицу разделов msdos. Затем, чтобы на флешке можно было хранить пару файлов, я создаю небольшой раздел на 200 МиБ, форматированный в FAT32, и ещё один, занимающий всё остальное место и отформатированный в ext4, для установки системы. Разделы я называю F-DATA и F-DEBIAN соответственно, впрочем подойдут и другие простые имена. Важно указать метку хотя бы для раздела с системой, так как потом эта метка понадобится для загрузки. И хотя эта метка необязательна для автоматической загрузки, учтите, что с меткой будет куда проще зайти в систему при неработающем загрузчике. И не забудьте установить флаг "boot" для системного раздела, чтобы помочь потом GRUB'у с загрузкой!
Получилось в итоге вот это:

$ sudo fdisk -l /dev/loop0
Disk /dev/loop0: 4 GiB, 4294967296 bytes, 8388608 sectors
Единицы: sectors по 1 * 512 = 512 байт
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Тип метки диска: dos
Идентификатор диска: 0x06867f26

Устр-во      Загрузочный  Start Конец Секторы  Size Id Тип
/dev/loop0p1               2048  411647  409600  200M  b W95 FAT32
/dev/loop0p2 *           411648 8388607 7976960  3,8G 83 Linux
Ещё один важный шаг перед началом работы - отключение журнала ext4. Делается это тоже просто и незамысловато:

$ sudo tune2fs -O ^has_journal /dev/loop0p2
Отключение журнала необходимо, чтобы ускорить работу системы на флешке (поскольку скорость случайной записи у них обычно очень низкая) и продлить её жизнь.
2. Установка базовой системы
Итак, для начала смонтируем системный раздел в конкретную папку:

$ sudo mkdir /mnt/flash
$ sudo mount /dev/loop0p2 /mnt/flash
После чего запустим debootstrap:

$ sudo debootstrap --arch=i386 --include=aptitude,locales,pciutils jessie /mnt/flash/ http://mirror.yandex.ru/debian
Заодно сразу укажем дополнительные пакеты для установки (aptitude необязателен, locales понадобится для настройки языка, pciutils - для программ для работы с шиной PCI, в частности lspci). Кстати, параметр --arch тоже обязателен, если производите установку из 64-битной системы.
Установка же 32-битной системы необходима для создания более универсальной и лёгкой системы - она будет грузиться на всех компьютерах, даже если они не поддерживают 64-битные системы, и занимать несколько меньше оперативной памяти и места на флешке.
Теперь нам понадобится правильно настроить систему для смены корневого каталога. Для этого свяжем через mount --bind виртуальные ФС на работающей системе с точками входа в системе в образе:

$ for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt/flash$i; done
И войдём в подготовленную систему:

$ sudo chroot /mnt/flash
Теперь необходимо сделать ещё пару вещей, которые пригодятся нам впоследствии. Во-первых, нужно разобраться с локалями. Вводим

# dpkg-reconfigure locales
и выбираем нужные нам локали. Вероятно это будут en_US.UTF-8 и ru_RU.UTF-8. Также нам предложат установить локаль по-умолчанию для системы. Можно выбрать английскую локаль, чтобы не было вероятных проблем с кодировками и выводом в консоль... А можно установить русскую, чтобы система говорила с нами на родном языке. Новая локаль станет активна при следующем входе в систему.
Далее следует поправить наш sources.list. По-умолчанию он содержит то зеркало, с которого производилась установка. При желании туда можно добавить свои зеркала и репозитории, но мы сейчас просто добавим софт из contrib и non-free.

# nano /etc/apt/sources.list
...
deb http://mirror.yandex.ru/debian jessie main contrib non-free
...
Теперь не помешает установить кой-какие базовые пакеты. Можете зайти в aptitude и выполнить всё через интерфейс, а можете использовать команды. Я предпочитаю всё делать через интерфейс, так как в нём сразу видны изменения, да и вообще многие вещи происходят нагляднее, но если заранее известно, что мы делаем, то это необязательно. Итак, первым делом - ядро.

# aptitude update
# aptitude install linux-image-686-pae
Вторым делом - некоторые пакеты с прошивками для устройств. Без установки этих пакетов система может не заработать как следует... а может и заработать нормально, зависит от компьютера.

# aptitude install firmware-linux firmware-atheros firmware-brcm80211 firmware-realtek
Если у вас есть идеи, что можно ещё добавить к этим пакетам - добавляйте. Никогда не помешает расширить набор поддерживаемых устройств.
Ещё одним важным пакетом, особенно на флешке, будет localepurge. Он занимается удалением файлов от ненужных локалей, которые не будут использоваться в системе в любом случае, так как эти локали не сгенерированы изначально. Это может сэкономить несколько сотен мебибайт, что, казалось бы, не так уж и много, но на небольшом разделе вполне может помочь освободить место для ещё пары программ... Установим его:

# aptitude install localepurge
... и тут же настроим. По-умолчанию для сохранения отмечены сгенерированые локали, что нас как раз устраивает. А вот когда скрипт настройки спросит, использовать ли "dpkg --path-exclude", нажмите "Нет", иначе не сможете удалить уже установленные лишние файлы. После окончания настройки нужно будет запустить сам скрипт для очистки локализаций и перенастроить его на использование этой опции:

# localepurge
# dpkg-reconfigure localepurge
... и на этот раз выберите "Да" для "dpkg --path-exclude", это предотвратит установку ненужных локализаций на корню, без необходимости очищать систему каждый раз после установки новых пакетов.
Наконец, не забудьте установить пароль суперпользователя:

# passwd
... и добавить пользователя обычного:

# adduser dias
Если пользуетесь - добавьте в систему sudo, настройте его и добавьте своего пользователя в группу sudo:

# aptitude install sudo
# visudo
# gpasswd -a dias sudo
Теперь мы имеем вполне работоспособную систему... без окружения и возможности загрузки. Займёмся этим!
3. Установка пользовательского окружения
Ну, тут уж кто во что горазд. По многочисленным заявкам, я попробую установить Xfce. Мета-пакет сделает за меня всю грязную работу:

# aptitude install xfce4 xfce4-goodies
Заодно не забудьте установить менеджер входа, а то не сможете зайти в сессию:

# aptitude install lightdm
А для упрощения работы с сетью (в том числе с Wi-Fi) - установим NetworkManager вместе с его апплетом:

# aptitude install network-manager network-manager-gnome
Он, конечно же, необязателен, но, во-первых, так проще будет с настройкой сети на разных компьютерах, а во-вторых, он за собой потянет поддержку Wi-Fi, что само по себе полезно.
Если вам нужны ещё какие-то программы, лучше будет установить их прямо сейчас, пока система ещё не записана на флешку:

# aptitude install gpm libreoffice firefox vlc pidgin rrootage
Если вдруг не хватает места для установки некоторых пакетов - попробуйте очистить кэш APT:

# aptitude clean
Это же следует сделать после того, как закончите с установкой. Если же места всё равно не хватает - выйдите из системы, отмонтируйте всё, что примонтировали, отключите петлю, допишите в конец файла пару гибибайт с помощью dd или подобного, а затем вернитесь к этому шагу, между делом запустив gparted и расширив раздел с системой.
4. Настройка системы и загрузки
Так, с окружением разобрались, давайте разбираться с загрузкой! Первым делом стоит установить grub2:

# aptitude install grub2
После чего установить его на образ:

# grub-install --allow-floppy /dev/loop0
Теперь создадим файл конфигурации:

# grub-mkconfig > /boot/grub/grub.cfg
И... пожалуй, всё. При желании можно отредактировать этот файл так, как будет необходимо, добавить фоновую картинку, изменить шрифт и прочее... но это не в этом гайде. Данный файл конфигурации уже должен загрузить систему с флешки, хотя он, возможно, и не самый универсальный в этом отношении.
Поправим имя хоста:

# echo "dia9-debian" > /etc/hostname
# echo "127.0.0.1 dia9-debian" >> /etc/hosts
# hostnamectl set-hostname dia9-debian[a]
И, чуть ли не самое важное, настроим монтирование файловых систем. Отредактируем файл /etc/fstab:

# nano /etc/fstab
(Он оказывается очень страшный и не даёт использовать tmpfs для логов и прочего. А мы попробуем обмануть systemd!)
Во-первых, добавим наши разделы. Их лучше добавить через пути (потому что systemd ненавидит меня...):

/dev/sda2  /         ext4[c] errors=remount-ro,noatime    0 1
/dev/sda1  /mnt/data vfat gid=disk,umask=0000,exec     0 0 
Кроме этих файловых систем, нужно ещё добавить записи для отправки некритичных, но часто переписываемых данных (таких, как логи) в память - в tmpfs:

tmpfs   /tmp       tmpfs   noatime   0 0
tmpfs   /var/lock  tmpfs   noatime   0 0
tmpfs   /var/log   tmpfs   noatime   0 0
(А сейчас будут пляски с systemd и загрузкой, посмотрим, что получится сделать... Оно вообще загрузится?..)
5. Конец настройки, запись на флешку
Ура! Мы закончили разбираться с этим делом, образ содежит систему и готов к загрузке. Осталось из него выйти и протестировать...
Если вы ещё не догадались, первым делом нужно выйти:

# exit
Полдела сделано! Теперь проверим, не использует ли что-то наш образ:

$ sudo lsof /mnt/flash
Скорее всего, какой-нибудь демон оказался запущенным, и он не даст нам отмонтировать образ. Убъём его (число замените на нужный PID, а если их много - выполните команду несколько раз):

$ sudo kill 1704
$ sudo lsof /mnt/flash
Теперь отмонтируем все специальные ФС аналогичной командой:

$ for i in /sys /proc /dev/pts /dev; do sudo umount /mnt/flash$i; done
Отмонтируем образ:

$ sudo umount /mnt/flash
Отвяжем его от петли:

$ sudo losetup -d /dev/loop0
И таки попробуем загрузить получившийся образ в виртуалке!

$ qemu -hda flash.img -netdev user
И если всё прошло нормально... мы в системе! Можно попробовать настроить её под себя перед первым реальным запуском, после чего выключить обычным способом. Куда интереснее будет запустить её на реальном железе!
Что ж, начнём с записи образа на реальную флешку. Воткнём флешку в комп, определим название устройства и запишем образ с помощью dd:

$ sudo dd if=flash.img of=/dev/sde bs=1M
Поосторожнее с этой командой, а то сотрёте себе загрузочную запись на важном диске!
В зависимости от скорости вашей флешки запись может занять различное время, но тут главное - терпение. Когда образ будет записан, нам нужно будет исправить размер системного раздела. Для этого натравим GParted уже на реальную флешку:

$ sudo gprated /dev/sde
... и изменим размер системного раздела таким образом, чтобы он занимал всё свободное место. Всё, можно тестировать на реальной машине!
[a]Нужно проверять и читать документацию! Потом поправлю.
а не ext4? Или когда мы отключили журналирование, то можно писать так?
[c]Таки да, ext4, это я скопировал со своей флешки не глядя..
[свернуть]
Acer Aspire 5750G Debian 11 XFCE4

Grig96


I-Jurij

В чем профит?
Есть же пуппи, тиникоре на базе debian.
https://debiandog.github.io/doglinux/zz02stretchdog.html, к примеру.
http://www.tinycorelinux.net/dCore/x86/release/ или по образу tinycore linux.