Создание 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/