Создание Live-usb или Как сделать загрузочную флэшку с линукс

Очень часто бывает полезно иметь при себе загрузочную 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/