Создание загрузочной флешки SystemRescueCd с GRUB

Материал из LORWiki
Перейти к навигацииПерейти к поиску

Предоставлено пользователем GArik.

В нашем примере на USB‐накопитель будет установлен SystemRescueCD, дистрибутив Tails и будет место для хранения файлов. Вы можете использовать нижеприведенную инструкцию под свои нужды.

Для начала необходимо разбить USB-накопитель в на разделы следующим образом:

sdc3            Основной  ext4             [SystemRescueCD]       524,29
sdc2            Основной  ext4             [Tails]           734,01
sdc1            Основной  vfat             [GArik]         14971,57

Вы можете использовать для этого любую программу для работы с разделами дисков. Я использовал cfdisk.

sdc3 — для SystemRescueCD, на него хватит где‐нибудь 500 Мб. Основной раздел должен быть обязательно первым, иначе Windows может не увидеть флешку при подключении. После разбиения флешки форматируем разделы: основной в FAT, а под систему лучше в ext4 без журнала:

# mkdosfs -n GArik /dev/sdc1
# mke2fs -L Tails -T floppy -m 0 -t ext4 -O ^has_journal /dev/sdc2 
# mke2fs -L SystemRescueCD -T floppy -m 0 -t ext4 -O ^has_journal /dev/sdc3

Потом монтируем образ с SystemRescueCD и копируем содержимое на свежий раздел:

# mount /dev/sdc3 /media/SystemRescueCD/
# mount -o loop SystemRescueCD/systemrescuecd-x86-2.5.0.iso /media/hd/
# cp -a /media/hd/* /media/SystemRescueCD/

Затем нужно установить GRUB (лучше хотя бы версии 1.99):

# grub-install --no-floppy --root-directory=/media/SystemRescueCD/ /dev/sdc

После установки grub'а появится новый каталог /media/SystemRescueCD/boot/grub/. Туда нужно положить конфиг примерно такого вида:

if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
  set saved_entry=${prev_saved_entry}
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z ${boot_once} ]; then
    saved_entry=${chosen}
    save_env saved_entry
  fi
}
insmod ext2
set root='(hd0,3)'
set menu_color_normal=white/black
set menu_color_highlight=blue/light-gray
set timeout=5

submenu "SystemRescueCD" {
	menuentry "SystemRescueCD x86" {
		linux  /isolinux/rescuecd scandelay=1 setkmap=ru
		initrd /isolinux/initram.igz
	}

	menuentry "SystemRescueCD x86_64" {
		linux  /isolinux/rescue64 scandelay=1 setkmap=ru
		initrd /isolinux/initram.igz
	}

	menuentry "SystemRescueCD alt x86" {
		linux  /isolinux/altker32 scandelay=1 setkmap=ru
		initrd /isolinux/initram.igz
	}

	menuentry "SystemRescueCD alt x86_64" {
		linux  /isolinux/altker64 scandelay=1 setkmap=ru
		initrd /isolinux/initram.igz
	}
}

menuentry "Tails" {
	set root='(hd0,2)'
	linux	/live/vmlinuz root=/dev/sda2 boot=live config noswap live-media=removable nopersistent noprompt keyboard-layouts=us,ru
	initrd	/live/initrd.img
}

menuentry "FreeDOS" {
	linux16  /isolinux/memdisk floppy
	initrd16 /bootdisk/freedos.img
}

menuentry "MemTest+" {
	linux16  /bootdisk/memtestp
}

menuentry "MHDD (HDD diagnostic tool)" {
	linux16  /isolinux/memdisk floppy
	initrd16 /bootdisk/mhdd.img
}

menuentry "HDT (Hardware Detection Tool)" {
	linux16  /isolinux/memdisk floppy
	initrd16 /bootdisk/hdt.img
}

menuentry "Boot from HDD" {
	exit
}

menuentry "Reboot" {
	reboot
}

menuentry "Halt" {
	halt
}

menuentry можно добавить свои, по желанию. Вот и всё, мы получили загрузочную USB‐флешку с SystemRescueCD и Tails.