Есть такой замечательный дистрибутив, Linux который позиционируется как спасательная флешка — SystemRescueCD. Есть конечно и еще какие то, но я пользуюсь этим, потому как привычно и собран он на базе Gentoo Linux. Мне довольно часто приходится его использовать как на работе, так и при обслуживании своих личных ПК. В дистрибутиве есть практически все для восстановления данных и различных тестировок, но лично мне не хватает некоторых инструментов идущих в дистрибутиве по умолчанию. В связи с этим я немного модифицирую состав установленных инструментов и собираю загрузочный образ заново. Именно о процессе пересборки загрузочной флешки от SystemRescueCD и пойдет речь в этой статье.
Для начала пара слов о том, что нам понадобится для этого:
1. Машина с линухом. Дистрибутив скорее всего не важен, если не использовать какой нибудь очень экзотический.
2. Squasfstools. Установить эти инструменты через пакетный менеджер Вашего дистрибутива не составит труда. В Ubuntu ставится с помощью одной строчки в терминале.
sudo apt-get isntall squashfs-tools
3. ISO образ скачанный с оффсайта
Гентушникам, или пользователям других дистров, которые используют pure amd64 и выбросили из ядра поддержку 32 битного кода, советую включить IA32 в конфиге ядра. Без этого Вы не сможете чрутнуться в целевую систему после ее распаковки.
Executable file formats / Emulations ---> [*] IA32 Emulation
Создадим директорию /ISO в которую примонтируем скачанный образ System Rescue CD командой
sudo mkdir /ISO
sudo mount -o loop /path/to/sysrescue.iso /ISO
После этого создаем еще одну директорию например /SRC
sudo mkdir /SRC
На самом деле Вы вольны выбирать сами где будете создавать эти временные директории, скажу лишь, что лучше ничего не монтировать в /mnt, так как эту директорию использует скрипт с помощью которого заливается собранный дистрибутив на флешку.
Теперь копируем все содержимое из директории /ISO в /SRC
cd /ISO
sudo cp -Rav . /SRC
После этого мы получим копию распакованного образа. Нас больше всего интересует файлик sysrcd.dat. Это сжатый образ файловой системы squashfs, который распаковывается при загрузке с флешки являясь корневой файловой системой LiveCD.
Следующим шагом мы смонтируем как файловую систему файлик sysrcd.dat Например в /DAT
mount -t squashfs /SRC/sysrcd.dat /DAT
Так как squashfs это файловая система которую Вы сможете примонтировать только на чтение, необходимо создать еще одну директорию в которую скопировать содержимое из /DAT. Делаем по аналогии
sudo mkdir /DEST
cd /DAT
cp -Rav . /DEST
Выполним смену окружения (chroot) в директорию /DEST для изменения корневой системы LiveCD
sudo su
mount -o bind /dev/ /DEST/dev
mount -t proc none /DEST/proc
chroot /DEST /bin/bash
Теперь мы находимся в окружении, так же как если бы загрузились с флешки. Сейчас мы вольны собрать любой софт в нашу загрузочную флешку, какой только есть в дереве portage Gentoo. Я обычно добавляю WHDD
Обновим дерево портежа до актуального состояния.
emerge --sync
Если на хост системе имеется уже настроенный доступ в интернет, то и chroot оно тоже скорее всего будет, поэтому синхронизация дерева не должно быть проблемой.
Осталось только скомпилировать нужные пакеты, выставив USE флаги и приступать к пересборке образа заливаемого на флешку. Не забываем выйти из окружения в которое мы делали chroot
exit
umount /DEST/proc umount /DEST/dev
Для того чтобы собрать измененный образ, как я уже говорил требуется squashfstools
mksquashfs /DEST /SRC/sysrcd_new.dat -comp xz
Сборка образа может занять достаточно много времени, все зависит от производительности компьютера. После успешной сборки образа в директории /SRC/ появится файлик
sysrcd_new.dat который мы переименуем в sysrcd.dat предварительно удалим исходный sysrcd.dat или переместив его в другое место.
И завершающим этапом будет собственно заливка измененного образа на флешку. Если работает автомонтирование съемных устройств, то перед началом следует ее отмонтировать и находясь в директории /SRC запустить скрипт
./usb_inst.sh
Он автоматом найдет флешку и запишет измененный образ на нее. Советую быть внимательным, так как съемные HDD подключенные в момент операции тоже могут предлагаться в качестве устройства для записи. Поэтому советую тщательно проверить на какое устройство будет производиться запись.
//Также хочу отметить, что можно создать и LiveCD из того, что находится в директории /SRC с помощью mksiofs.
//Замечания по ошибкам, опечаткам и просто пожелания прошу оставлять в коментариях к материалу.