Создаем Live USB на основе Debian Squeeze
У всех ИТ-шников, и не только, валяются дома/на работе старые флешки, которые остались не у дел в связи с бурным НТП или по другим причинам. Выбрасывать их не стоит, так как подобный девайс вполне сгодится как носитель для «заточенной» под ваши нужды live системы. Что такое live системы и зачем они нужны думаю рассказывать ненужно. Оспорить выбор флеш носителя по сравнению с CD/DVD тоже, думаю, врятли кто-то сможет. Удобство транспортировки и хранения налицо. И даже если флешка сдохнет сама по себе, img образ, который мы создадим, всегда можно накатить на другой USB носитель (или даже CD/DVD если очень захочется). Итак, если все-таки у вас есть флешка (подойдет размер от 128MB до бесконечности ) и желание создать live систему на основе Debian — тогда вперед!
Для создания своего live-USB я выбрал программу live-build. Она представляет из себя набор скриптов для облегчения конфигурирования и сборки образов. Перед установкой рекомендую глянуть на документацию проекта на официальном сайте в интернете.
Начнемс, установим нужный пакетик live-build из стандартного репозитария Debian:
Основной инструмент установлен, теперь создадим директорию где мы будем собирать live систему:
Переходим в нее:
И самое интересное — такой вот огромной командой я задаю большинство из нужных мне параметров будущей live системы:
что это все значит:
lb config — говорит live-build-у что нужно сконфигурить будущую live систему (если дальше свои конфиги не задавать — получим некий default)
—syslinux-timeout 3 — time out для загрузчика 3 секунды — после этого автозагрузка ливки
—bootappend-live «username=admin» — пользователь который будет в live системе — admin
—architecture i386 — архитектура
-b usb-hdd — говорим что образ в результате нужен img для использования на USB HDD
—mirror-binary http://debian.org.ua/debian/ — основной репозитарий в live системе
—mirror-binary-security http://debian.org.ua/debian-security/ — security репозитарий в live системе
—archive-areas «main contrib non-free» — директории репозитария для использования в live системе
—packages «gzip bzip2 rar unzip mc vim rsync ….» — пакеты которые нужно установить в live систему во время сборки
К сожалению не все настройки данной командой можно сделать. Мне нужен ssh-server при загрузке с ливки, для реализации этого в официально документации рекомендуют применять так называемые hook-и. По своей сути это просто sh скриптик который выполнится автоматически при создании live системы. Мой вариант выглядит вот так:
#!/bin/sh
echo "HOOK: ssh server"
# install
apt-get install --yes --force-yes -y openssh-server
root@test-686:~/liveusb#
его нужно скопировать в директорию /root/liveusb/config/chroot_local-hooks :
и сделать исполняемым:
Также мне нужен определенный (известный мне) пароль рута на ливке. Для этого мне пришлось ваять такой вот hook:
#!/usr/bin/expect --
# wrapper to make passwd(1) be non-interactive
# username is passed as 1st arg, passwd as 2nd
# Executable only by root
set password _my_password_
spawn /usr/bin/passwd root
expect "password:"
send "$password\r"
expect "password:"
send "$password\r"
expect eof
root@test-686:~/liveusb#
И опять же, скопировать в директорию config/chroot_local-hooks
и дать права на выполнение:
Также я хочу чтобы live система стартовала со статическими настройками сети (по умолчанию dhcp)
Для этого я извернулся вот так:
создаем директорию config/chroot_local-includes/etc
и туда закидываем файлик rc.local с вот таким содержимым
#!/bin/sh -e
#
# rc.local
/sbin/ifconfig eth0 192.168.1.99/24
exit 0
root@test-686:~/liveusb#
И делаем данный файл исполняемым:
С конфигурацией будущей ливки закончили.
Дальше собираем! Для этого командуем:
Если у вас все нормально с инетом — то все соберется без проблем. Все что останется — записать образ на флешку. Делается это старой доброй командой dd вот так (у меня флешка /dev/sdc):
После этого можно пользоваться 🙂
На самом деле инструмент live-build для создания live системы очень хороший — настоятельно рекомендую заглянуть на офсайт и почитать о возможностях в принципе и конкретных реализациях в примерах.
Свою задачу считаю решенной, а вы дерзайте, если заинтересовались 😉
Огромное спасибо за ман.
Очень красиво и докладно описано. Вкурил структуру и сейчас играюсь с своей флешкой блекджеком, шлюхами и partimage+скрипты самописные.
в файле rc.local я бы добавил /sbin/route add default gw 192.168.1.1 =)