Создаем с нуля LiveUSB на базе Debian Lenny

Давно когдато сделал себе LiveUSB брелок из старой флешки на 1GB. На днях случайно её форматнул 🙁 Ну чтож …. бывает — делал dd и случайно перепутал место назначения (упс!) Ну вот … вспоминаем как это делается. Заодно и запишем — ато вспоминается уже с трудом :-[ Вообщето по этому поводу есть целый проэкт с отличной документацией на офсайте вот тут. Согласно документации делаем так:

убедимся что в sources.list есть backports репозитарий — из него устанавливается наш главный инструмент для сборки:

black:~# grep backports /etc/apt/sources.list
deb http://www.backports.org/backports.org/ lenny-backports main contrib non-free
black:~#

Также процесс создания требует выполнения всего нескольких действий из под root, поэтому я основную массу действий производил под обычным пользователем black и переходил под root только если это действительно необходимо. Поэтому напоминаю: знак ‘$’ в приветствии означает ограниченный пользователь, а знак ‘#’ — пользователь root. Будьте внимательны!

Ставим пакет live-helper даже из названия ясно что он то нам поможет в процессе создания LiveUSB системы на все 100%:

black:~# apt-get install live-helper

Создаем директорию в которой будем собирать свой образ:

black@black:~$ mkdir work/LiveUSB

и переходим в нее:

black@black:~$ cd work/LiveUSB

Теперь выполняем следующие команды:

black@black:~work/LiveUSB$ lh_clean --binary
black@black:~work/LiveUSB$ lh_config -b usb-hdd

Это создаст необходимые для настройки и сборки директории. Вот они:

black@black:~/work/LiveUSB$ ls -a
.  ..  config  scripts  .stage
black@black:~/work/LiveUSB$

Обратите внимание на директорию config — она нам понадобится в будущем!

В принципе используя следующую команду, запущенную от root, можно уже собрать свой LiveUSB:

black:/home/black/work/LiveUSB# lh_build

После отработки данной команды появится собственно образ нашего свежесобранного LiveUSB в чем можно убедиться:

black@black:~/work/LiveUSB$ ls -lh
total 142M
drwxr-xr-x  6 root  root  4.0K 2010-01-27 17:37 binary
-rw-r--r--  1 root  root  143M 2010-01-27 17:37 binary.img
-rw-r--r--  1 root  root  2.2K 2010-01-27 17:37 binary.list
-rw-r--r--  1 root  root   16K 2010-01-27 17:36 binary.packages
drwxr-xr-x  6 root  root  4.0K 2010-01-27 17:36 cache
drwxr-xr-x 20 root  root  4.0K 2010-01-27 17:38 chroot
drwxr-xr-x 22 black black 4.0K 2010-01-27 16:52 config
drwxr-xr-x  2 black black 4.0K 2010-01-27 16:52 scripts

black@black:~/work/LiveUSB$

binary.img — это и есть наш образ 🙂 НО! Он был создан с умолчательными конфигами.  Вполне работоспособный, кстати.

На офсайте в работоспособности предлагают убедиться с помощью эмулятора qemu. Установим-ка и попробуем запустить то что собрали.

black:/home/work/LiveUSB# apt-get install qemu

Пробуем запустить:

black@black:~/work/LiveUSB$ qemu -hda binary.img

У меня получилось, и даже вполне успешно!

Однако, незнаю как вы, но я собираюсь собрать этот образ с некоторыми своими дополнительными настройками и пакетами.

  • Хочу добавить такие пакеты:

gzip bzip2 rar unzip mc vim rsync lftp elinks ntfsprogs smbfs ntfs-3g e2fsprogs xfsprogs reiserfsprogs mkisofs cdrecord jfsutils dosfstools centerim-utf8 nmap tcpdump iftop mtr-tiny

  • установить locale по умолчанию ru_RU.UTF8

Для того чтобы при следующей сборке все это поставилось, нужно немножко подправить файлы конфигурации в директории config (либо же можно использовать команду lh_config с огромным количеством ключей и параметров). Как видите, не все эти пакеты можно получить из директории main в репозитариях — а по умолчанию настроена только она. Добавить директории contrib и non-free можно вот здесь:

black@black:~/work/LiveUSB$ grep -i categories config/bootstrap
# $LH_CATEGORIES: select categories to use
LH_CATEGORIES="main contrib non-free"
black@black:~/work/LiveUSB$

Список пакетов для установки при сборке можно добавить вот тут:

black@black:~/work/LiveUSB$ grep -i lh_packages config/chroot
# $LH_PACKAGES: set packages to install
LH_PACKAGES="gzip bzip2 rar unzip mc vim rsync lftp elinks ntfsprogs smbfs ntfs-3g e2fsprogs xfsprogs reiserfsprogs mkisofs cdrecord jfsutils dosfstools centerim-utf8 nmap tcpdump iftop mtr-tiny"
# $LH_PACKAGES_LISTS: set package list to install
LH_PACKAGES_LISTS="standard"
black@black:~/work/LiveUSB$

Теперь очищаем остатки от предыдущей сборки:

black:/home/black/work/LiveUSB# lh_clean --binary
black:/home/black/work/LiveUSB# lh_clean

locale установим простенькой командой, заодно и тип LiveCD установим usb-hdd (мне же на флешку образ нужен):

black:/home/black/work/LiveUSB# lh_config -b usb-hdd "locale=ru_RU.utf8 keyb=us"

Мне этого достаточно — теперь еще раз соберем образ:

black:/home/black/work/LiveUSB# lh_build

В результате сборки получаем такойже binary.img но уже чуть побольше размером (наши пакеты все таки поставились).

locale такой как надо — вот скриншот 🙂

Все! Можем протестить опять же в qemu или сразу записать образ на флэшку (у меня флешка /dev/sdb) командой:

black:/home/black/work/LiveUSB# dd if=binary.img of=/dev/sdb

После окончания записи на флешку — можно пробовать забутиться с нашей новоиспеченной LiveUSB системы 🙂
Единственное что мне не понравилось в итоге — ожидающий нажатия Enter загружчик Syslinux — оказалось тоже легко поправить 🙂 Примонтировал раздел с ливкой и поправил в файлике /media/DEBIAN_LIVE/syslinux/prompt.cfg параметр timeout с 00 на 5.
Помните упоминал о том что конфигурить сборку можно одной «километровой» командой? Так вот пример такой команды:

black:/home/black/work/LiveUSB# lh_config -a i386 -d lenny -p xfce --categories "main contrib non-free" --linux-flavours 686 -b usb-hdd --packages "vim mc gzip bzip2 ntfs-3g ntfsprogs rar unzip rsync lftp elinks smbfs e2fsprogs xfsprogs reiserfsprogs mkisofs cdrecord jfsutils dosfstools centerim-utf8 nmap tcpdump iftop mtr-tiny screen"

Также нужные нам файлы можно закидывать в Live систему посредством папки config/chroot_local-include (напрмер я подложил свой vimrc сюда config/chroot_local-include/etc/vim/vimrc чтобы он применился в ливке). Короче конструктор еще тот …. вот подумываю создать из него роутер 🙂

Такой вот «хитрый брелок» я таскаю с собой почти всегда 🙂 Очень удобно — часто выручала. Надеюсь и вам поможет в нужный момент 😉

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?