В прошлой статье было рассказано как сделать спасательную флешку с 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 лет 28 недель назад
10 лет 29 недель назад
10 лет 29 недель назад
10 лет 29 недель назад
10 лет 31 неделя назад
10 лет 32 недели назад
10 лет 32 недели назад
10 лет 42 недели назад
10 лет 42 недели назад
10 лет 42 недели назад