В прошлой статье было рассказано как сделать спасательную флешку с 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
Комментарии
10 лет 48 недель назад
10 лет 49 недель назад
10 лет 49 недель назад
10 лет 50 недель назад
10 лет 51 неделя назад
11 лет 1 день назад
11 лет 1 день назад
11 лет 10 недель назад
11 лет 10 недель назад
11 лет 10 недель назад