Комментарии

Галерея

Опрос

Из каких стран идет больше всего спама, попыток взлома на ваши серверы?:

Создание загрузочной флешки SystemRescueCd с использованием Grub2

     

В прошлой статье было рассказано как сделать спасательную флешку с extlinux. Сегодня с появлением таких технологий как GPT и UEFI, появляются более мощные и современные средства, такие как Grub2. Grub2 на сегодняшний день стал довольно стабилен и не является более сложным в освоении по сравнению с Grub 0.97 или даже Lilo, накоплено множество мануалов на русском языке. Основанием для миграции с extlinux является возможность в новом Grub загружать iso-образа, подключая их как блочные устройства, таким образом на флешке не будет валяться кучи мелких файлов от распакованных iso'шников.

Необходимые средства
Установленный в системе пакет grub2 (не обязательно используемый в данный момент при загрузке), fdisk, dosfstools.

Мне лично нужна универсальная флешка, на которой можно переносить данные и между виндовыми машинами, поэтому я использую fdisk для создания msdos-таблицы разделов, vfat на первом разделе. Если вам не требуется это, то рекомендую разметить с gdisk в GPT (пакет gptfdisk) по своему вкусу.

Создание таблицы разделов

Команда (m для справки): p
 
Disk /dev/sdf: 16.1 GB, 16064184320 bytes, 31375360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd22454ac
 
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdf1            2048    31244287    15621120    c  W95 FAT32 (LBA)
/dev/sdf2   *    31244288    31375359       65536   83  Linux

На втором разделе будут файлы от Grub2 (чтобы не мешались на основном разделе), 64Мб будет достаточно.

Создание ФС

mkfs.vfat -F 32 -n fleshka /dev/sdf1
mkfs.ext2 -L boot /dev/sdf2

Установка загрузчика

mkdir /mnt/fboot
mount /dev/sdf2 /mnt/fboot
grub2-install --boot-directory=/mnt/fboot/ /dev/sdf

После этого grub2-install должен выдать в консоль:

Установка завершена. Ошибок нет.

Создание меню загрузки
Создайте файл /mnt/fboot/grub2/grub.cfg со следующим содержимым:

insmod part_msdos
insmod fat
 
search -u 9999-6666 -s
 
menuentry "SystemRescueCd 3.1.0 (altker32)" {
    set isofile="/boot/iso/systemrescuecd-x86-3.1.0.iso"
    loopback loop $isofile
    linux (loop)/isolinux/altker32 usbstick setkmap=ru docache isoloop=$isofile
    initrd (loop)/isolinux/initram.igz
}
 
menuentry "SystemRescueCd 3.1.0 (altker64)" {
    set isofile="/boot/iso/systemrescuecd-x86-3.1.0.iso"
    loopback loop $isofile
    linux (loop)/isolinux/altker64 usbstick setkmap=ru docache isoloop=$isofile
    initrd (loop)/isolinux/initram.igz
}
 
menuentry "SystemRescueCd 3.1.0 (rescue32)" {
    set isofile="/boot/iso/systemrescuecd-x86-3.1.0.iso"
    loopback loop $isofile
    linux (loop)/isolinux/rescue32 usbstick setkmap=ru docache isoloop=$isofile
    initrd (loop)/isolinux/initram.igz
}
 
menuentry "SystemRescueCd 3.1.0 (rescue64)" {
    set isofile="/boot/iso/systemrescuecd-x86-3.1.0.iso"
    loopback loop $isofile
    linux (loop)/isolinux/rescue64 usbstick setkmap=ru docache isoloop=$isofile
    initrd (loop)/isolinux/initram.igz
}

В строке search -u 9999-6666 -s нужно поставить значение UUID первого раздела. Используйте blkid, чтобы его узнать:

blkid | grep fleshka
/dev/sdf1: LABEL="fleshka" UUID="9999-6666" TYPE="vfat"
umount /mnt/fboot

Копирование iso-образов
Образы с SystemRescueCD предполагается держать на первом разделе в каталоге /boot/iso:

mkdir /mnt/fleshka
mount /dev/sdf1 /mnt/fleshka
mkdir /mnt/fleshka/boot
mkdir /mnt/fleshka/boot/iso
cp ~/systemrescuecd-x86-3.1.0.iso /mnt/fleshka/boot/iso
umount /mnt/fleshka

Проверка в qemu
Убедитесь, что в настройках BIOS включена поддержка виртуализации. В современных матплатах производители часто выключают эту опцию поумолчанию. Если она вырублена, то модуль kvm-intel не стартует.

modprobe kvm-intel
qemu-system-x86_64 -m 1024 -localtime -hda /dev/sdf -boot once=c,menu=off -enable-kvm