- Создание live-usb для бэкапа/восстановления системы
- Подготовка
- Что понадобится:
- BusyBox
- Подготовка устройства:
- Собираем систему
- /dev
- /etc
- /bin
- /sbin
- /boot
- Устанавливаем GRUB
- Заключение
- Create a Boot Repair Live USB disk drive in Linux
- Create a Bootable Boot-Repair USB disk drive in Ubuntu, Linux Mint, and elementary OS
Создание live-usb для бэкапа/восстановления системы
Каждый раз, когда мне приходится делать резервную копию системы я искал незанятую USB флэшку, на которую заливал установочный образ ArchLinux и грузился в него. В этом способе был очень неприятный момент — мне приходилось искать незанятую USB флэшку размером >512 MiB, при том что под рукой всегда лежала SD карточка на 64 MB, которой для нужд бэкапа и восстановления вполне хватило бы. Но с SD карточкой была одна проблема — редкий дистрибутив мог загрузиться с нее на моем Eee PC 900. Перепробовав с дюжину различных мелких дистрибутивов, ни один из которых мне не подошел полностью, я решил сделать свою live систему.
Подготовка
Что понадобится:
- USB Флэшка или SD/MMC/CF/… карта памяти
- Рабочая Linux система, желательно с полным набором для компиляции либо с любым пакетным менеджером
- Ядро Linux, не требующее дополнительных модулей для работы
BusyBox
Сразу хочу сказать, что я использовал BusyBox — утилиту, заменяющую очень большой набор других утилит, пусть и с немного урезаным функционалом. Фокус ее в том, что в зависимости от того, как вы ее запустите — так она себя и будет вести. Например, если сделать символьную ссылку на busybox с именем ln, то мы получим ln. Если ссылка будет называться dd — получим dd. При весе в 1,5 мегабайта и без зависимостей — это просто чудо.
Если запустить busybox без парамтров, то вы увидите список доступных в вашей версии утилит, чьи функции может заменить busybox. Если размер вам очень важен, то можете собрать BusyBox из исходников, отключив ненужный функционал и уменьшив тем самым размер бинарного файла. Я же использовал готовый пакет из репозиториев.
Подготовка устройства:
С помощью fdisk создайте на устройстве флэшки один раздел и сделайте его загрузочным.
fdisk /dev/sdc
Сначала удалите все разделы на этом устройстве. Скорее всего раздел только один, поэтому введите d один раз. Затем создайте новый первичный раздел. Нажмите n, [Ввод], p, [Ввод], 1, [Ввод], [Ввод], [Ввод]. Сделайте этот раздел загрузочным — введите a. Чтобы записать новую таблицу разделов на устройство — нажмите w.
Теперь создайте новую файловую систему на первом разделе флэшки. В качестве файловой системы я выбрал Ext2 — ее поддержка давно есть везде, а журналирование в такого рода системе не имеет особого смысла. Для форматирования раздела в Ext2 выполните следующую команду:
mke2fs -m 0 -N 2000 /dev/sdc1
-m 0 отключит резервирование места под корень (что бы это ни значило)
-N 2000 обеспечит достаточное количество inod’ов.
Собираем систему
Смонтируйте новый раздел в отдельную директорию (например, /newroot):
mkdir /newroot
mount /dev/sdc1 /newroot
В каждом дистрибутиве Linux есть набор обязательных директорий. Создайте следующие директории:
/bin
/boot
/dev
/etc
/proc
/sbin
/var
Необязательными являются /sys, /lib, /var, /mnt, /usr и /home — можете создать их позже, если в них появится необходимость.
/dev
Для начала заполним каталог /dev необходимыми устройствами. Таковыми являются console, kmem, mem, null, ram0 и tty1. Скопируйте их прямо из вашей рабочей системы с помощью cp -dpR /dev/DEVICE /newroot/dev где DEVICE — каждый из вышеперечисленных устройств. Параметры -dpR обеспечат копирование самих файлов, а не их содержимого, а также сохранит все права доступа к ним. Если вам не по душе такой способ — можете делать более трудоемким, но, возможно, более правильным путем — с помощью ls -l узнайте главный и меньший номера каждого из устройств и создайте их с помощью mknod.
Кроме вышеупомянутых обязательных устройств скопируйте также ваши устройства жестких дисков (hd* и sd*), а также с десяток терминальных устройств (tty*). Возможно, вам также понадобится loop*. Скопируйте также остальные файлы устройств по мере необходимости.
/etc
В этом каталоге должны храниться настройки системы. Обязательными файлами здесь будут rc (в разных системах называется по-разному), inittab, fstab, passwd, group и shadow. Хотя, group, возможно и не является обязательным, но проверить это я не пытался.
После того как скопируете эти файлы в свою новую систему необходимо будет отредактировать следующие файлы:
inittab — его запускает /bin/init. Он определяет поведение системы при разных уровнях исполнения. Подробнее о формате записей в файле inittab вы можете прочитать в man inittab Однако есть очень важный момент: в отличии от стандартного inittab, версия для busybox не должна содержать поля id и runlevel. Мой примитивный inittab выглядит следующим образом:
# Spawn some gettys
::respawn:/sbin/getty -L 115200 tty1 vt100
::respawn:/sbin/getty -L 115200 tty2 vt100
::respawn:/sbin/getty -L 115200 tty3 vt100
::respawn:/sbin/getty -L 115200 tty4 vt100
# Stuff to do when restarting the init process
::restart:/sbin/init
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
fstab — здесь все как обычно. Только указываете в качестве корневой системы не ваш жесткий диск, а флэшку.
passwd и shadow — в этих файлах оставьте только запись для root. Остальные вам не понадобятся. Кроме того, возможно вы захотите изменить домашнюю директорию и оболочку командной строки по умолчанию. Обычно в качестве оболочки прописан /bin/bash или /bin/zsh, но в busybox есть только примитивный sh. Конечно, никто не мешает сделать символьную ссылку bash —> sh.
rc — срипт загрузки, прописанный в вашем inittab. Он может быть суперсложный и включать в себя другие rc.скрипты, однако для простых систем можно его сильно упростить (пример моего rc):
# Uncomment next line, if you have sane rc.conf and are able to use it
#/etc/rc.conf
/bin/mount -av
/bin/hostname localhost
/bin
В этот каталог установлен busybox. Этого можно добиться разными способами. Например, если вы собираете его вручную, то при конфигурировании добавьте параметр —prefix=/newroot. Если вы используете менеджер пакетов, то почитайте справку к нему — должна быть опция, которая позволяет указать корневую директорию для устанавливаемого пакета. Например в ArchLinux, в pacman это ключ -r:
pacman -S busybox -r /newroot -b /var/lib/pacman Параметр -b необходим, потому что pacman не сможет найти базу пакетов внутри /newroot.
После установки перейдите в каталог /newroot/bin. Запустите busybox и определитесь с тем, какие встроенные утилиты вам нужны, а какие — нет. Для каждой из утилит сделайте символьную ссылку на busybox с соответствующим утилите именем. Например:
Обязательно сделайте ссылки с именами sh, login и mount!
/sbin
Перейдите в эту директорию и создайте необходимые ссылки на ../bin/busybox. Вообще разделение на две директории — /bin и /sbin — в этой системе особого смысла не имеет, так как пользователь всего один, и тот root.
Обязательно сделайте ссылки с именами init, getty, poweroff, shutfown, reboot, halt!
/boot
Устанавливаем GRUB
Установка загрузчика GRUB производится командой grub-install:
grub-install —root-directory=/newroot /dev/sdc1
После того, как установка завершится, создайте простой файл меню GRUB (/boot/grub/menu.lst):
В строке root, возможно, придется изменить устройство, однако на моем Eee PC 900 при выборе в BIOS загрузки с карты памяти GRUB определил ее именно так.
Кроме того, важным параметром является rootdelay — без него ядро не успевало найти устройство кардридера и я получал:
Заключение
Вот, собственно и все. Теперь вы можете перезагрузиться и опробовать новую систему. Конечно, с BusyBox вы вряд ли получите супер функциональную систему, однако система будет способна на многое с точки зрения обслуживания рабочей системы. Кроме того, так как этот вариант live-OS не использует сжатых образов файловой системы, то все изменения, которые вы внесете в нее останутся после перезагрузки, поэтому вы можете смело дополнять функционал скриптами прямо во время использования и не бояться потерять ваши наработки.
Конечно, здесь много еще чего можно оптимизировать, и я этим буду постепенно заниматься, однако, для базовых нужд создания резервных копий диска и их восстановления система вполне готова.
Create a Boot Repair Live USB disk drive in Linux
B oot-Repair utility is a free & open-source utility that lets you fix and recover the GRUB bootloader. It can reinstate those lost operating systems for you. Earlier, we published a detailed post on the utility and how to install it on Ubuntu, Linux Mint, and elementary OS.
Now, we shall see more options to use Boot Repair. You can run it in two ways:
In this article, we shall look into option two on creating a bootable Boot Repair Live USB flash drive. I recommend to create a disk and keep one readily available just in case you have it when you need it the most. You never know when disaster strikes.
There is more to it than just a Boot Repair. The live USB desktop comes loaded with not only the Boot-Repair utility, but also other handy utilities like GParted, OS-Uninstaller, Synaptic Package Manager, Firefox web browser, LX Terminal, and File Manager. It’s a customized version of Lubuntu OS running in your USB flash drive! Since there is the Synaptic Package Manager, you also open to those thousands of other utilities.
Create a Bootable Boot-Repair USB disk drive in Ubuntu, Linux Mint, and elementary OS
STEP 1: Plug in a blank USB flash drive of at least 1 GB capacity to the PC.
STEP 2: Download Boot-Repair ISO image.
STEP 3: I recommend to use ‘GNOME Disks’ utility to write the bootable image to the USB flash drive. Ubuntu and Linux Mint ships with this utility pre-installed. Elementary OS users first need to enable PPA and then use the following commands in terminal to install the gnome-disks utility.
sudo apt-get install gnome-disk-utility
STEP 4: After installation is complete, right-click on the downloaded boot-repair-disk-64bit.iso file and select ‘Open With’ > ‘Disk Image Writer.’
STEP 5: Make sure to select the USB flash drive in the ‘Destination.’
Select the USB drive in the Destination field
STEP 6: Click ‘Start Restoring…’ and wait for the process to finish.
Your Boot Repair Live USB flash drive should be ready!
Boot-Repair USB Flash Drive is Ready!
You can plug in this USB flash drive to your computer at startup and boot into it. You will have to enable UEFI mode in BIOS settings. You will have to search in your computer manufacturer website to know how to boot into BIOS and enable the UEFI mode.
Once you boot into the flash drive, you should be taken to the Boot Repair live desktop, where you can fix your GRUB 2 boot problems. It reinstalls the GRUB bootloader.
Boot-Repair Live USB Desktop