Очень часто бывает полезно иметь при себе загрузочную usb-флешку с нужным набором софта. Флэшка намного удобнее и компактнее чем оптический диск, да и usb порты сейчас есть на каждом компьютере.
В этой статье я расскажу как имея образ любого live-cd дистрибутива собрать загрузочный live-usb с нужным набором софта.
Первым попавшимся под руку образом оказался live-cd дебиана debian-live-501-amd64-xfce-desktop.iso. Итак, начнем.
Подготовка usb диска
При помощи команды fdisk создадим на usb диске раздел нужного размера и сделаем его загрузочным. Должно получиться что-то вроде этого:
# fdisk -l /dev/sdc
Disk /dev/sdc: 2021 MB, 2021654528 bytes
33 heads, 63 sectors/track, 1899 cylinders
Units = cylinders of 2079 * 512 = 1064448 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdc1 * 1 1900 1974256 b W95 FAT32
Затем создаём файловую систему:
# mkdosfs -F 32 /dev/sdc1
Утилита mkdosfs находится в пакете dosfstools
Затем устанавливаем загрузочную запись из пакета syslinux
# dd if=/usr/share/syslinux/mbr.bin of=/dev/sdc
0+1 records in
0+1 records out
304 bytes (304 B) copied, 0.0162317 s, 18.7 kB/s
Копирование файлов
Монтируем ораз live-cd и usb диск
# mount -o loop -t iso9660 ./debian-live-501-amd64-xfce-desktop.iso /mnt/cdrom
# mount -t vfat /dev/sdc1 /mnt/usb
Копируем файлы, после чего немного изменяем их расположение и конфиг syslinux
# cp -r /mnt/cdrom/* /mnt/usb
# mv /mnt/usb/isolinux/* /mnt/usb
# mv /mnt/usb/isolinux.cfg /mnt/usb/syslinux.cfg
# rm -rf /mnt/usb/isolinux*
Правим конфиг:
Было:
# cat /mnt/cdrom/isolinux/isolinux.cfg
include menu.cfg
default /isolinux/vesamenu.c32
prompt 0
timeout 00
Стало:
# cat /mnt/usb/syslinux.cfg
include menu.cfg
default /vesamenu.c32
prompt 0
timeout 00
Установка загрузчика
# umount /mnt/usb
# syslinux /dev/sdc1
После этого наш live-usb готов к эксплуатации: перезагружаем компьютер, в настройках биоса указываем что загружаться надо с usb-диска и наслаждаемся.
Установка и удаление программ
Можно пойти дальше и самому выбрать софт для своего live-usb. Для этого понадобятся некоторые утилиты из пакета squashfs-tools
При помощи команды unsquashfs распаковываем образ файловой системы:
# mkdir /mnt/debianroot/
# unsquashfs -d /mnt/debianroot/ /mnt/usb/live/filesystem.squashfs
Важно чтобы версия squashfs-tools совпадала с той, которой был сделан образ. (т.к. от версии к версии могут меняться дефолтные настройки, в результате чего собрвнный повторно образ может не загрузиться)
Монтируем файловые системы и чрутимся в распакованную директорию:
# mount --bind /proc/ /mnt/debianroot/proc/
# mount --bind /dev/ /mnt/debianroot/dev/
# mount --bind /sys/ /mnt/debianroot/sys/
#chroot /mnt/debianroot/ /bin/bash
Теперь с помощью соответствующего пакетного менеждера можем устанавливать или удалять пакеты. Для дебиана: правим /etc/apt/sources.list, синхронизуемся с репозитарием и устанавливаем то что нужно.
По окончанию — выходим из чрута CTRL-D
# umount /mnt/debianroot/proc/
# umount /mnt/debianroot/dev/
# umount /mnt/debianroot/sys/
И собираем файловую систему обратно в образ:
# mksquashfs /mnt/debianroot/ /mnt/usb/live/filesystem.squashfs
# umount /mnt/usb/