Автор Тема: Установка Debian 9 на флешку.  (Прочитано 2840 раз)

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

Оффлайн Роман846

  • Местный житель
  • ***
  • Topic Author
  • Сообщений: 106
  • tuxzer92
Установка Debian 9 на флешку.
« : 13 Октябрь 2017, 14:18:51 »
Здравствуйте. Занимается кто либо этим?
Хочется сделать себе такую флешку, но не знаю, какие есть нюансы, для уменьшения износа флешки при таком способе ее использования(отключение swap, перенос логов и т.д. в tmp, отключение журналирования или выбор другой фс). И еще хочется понять, как с этим обстоят дела у systemd?
Есть тут инструкция, но уже не актуально.
Spoiler: ShowHide

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, это я скопировал со своей флешки не глядя..
« Последнее редактирование: 13 Октябрь 2017, 14:26:56 от Роман846 »
Acer Aspire 5750G Debian 10(buster) XFCE4
 
Пользователи, которые поблагодарили этот пост: sidbar

Оффлайн Grig96

  • Местный житель
  • ***
  • Сообщений: 100
Re: Установка Debian 9 на флешку.
« Ответ #1 : 17 Октябрь 2017, 20:01:14 »
Может knoppix
 

Оффлайн I-Jurij

  • Местный житель
  • ***
  • Сообщений: 441
  • Slitaz
Re: Установка Debian 9 на флешку.
« Ответ #2 : 17 Октябрь 2017, 21:21:33 »
В чем профит?
Есть же пуппи, тиникоре на базе debian.
https://debiandog.github.io/doglinux/zz02stretchdog.html, к примеру.
http://www.tinycorelinux.net/dCore/x86/release/ или по образу tinycore linux.
 

Теги:
 

[Решено] Установка Erlang.

Автор shaly

Ответов: 7
Просмотров: 3986
Последний ответ 20 Июнь 2014, 05:02:50
от ihammers
Установка windows 10 с ОС Linux Debian10

Автор sergey_klcv

Ответов: 1
Просмотров: 746
Последний ответ 24 Август 2019, 21:57:57
от G_r_i_g_a
установка второго диска

Автор igor

Ответов: 6
Просмотров: 8575
Последний ответ 12 Март 2013, 23:21:43
от PbI6A
Компиляция и установка из исходников

Автор Ethanol

Ответов: 14
Просмотров: 3655
Последний ответ 02 Сентябрь 2016, 21:14:39
от Ethanol
Установка MySQL Workbench

Автор Fire

Ответов: 1
Просмотров: 2460
Последний ответ 23 Март 2011, 00:13:17
от Ghostdmn