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

Дата публикации: 12-01-2014 | Автор: MelfisFettel | Рубрика: Ubuntu Server, Без рубрики

Загрузочная флешка GRUB 2В общем хотел я себе флешку такую, что бы с нее ставить Ubuntu Desktop, да еще и версий разных. Обзавелся отдельной флешкой на 16 гигов. Вот сидел думал, а если использовать GRUB в качестве загрузчика, распаковать ISO с дистрибутивами и распихать их по папочкам, сделать в GRUB загрузочное меню…. Оказалось все немного проще (ну или сложнее). Начиная с версии 2, GRUB поддерживает загрузку прямо из ISO файлов находящихся в принципе где Вам угодно. Создадим сегодня загрузочную флешку с Ubuntu 12.04, Ubuntu 13.04 и memtest.

Хотелось бы сказать что на мой взгляд, на данный момент у Grub4DOS поболее возможностей, но с ним я не экспериментировал, пока не экспериментировал.

Для начала нам необходимо:

1 — Флешка
2 — Дистрибутив какой ни будь Ubuntu с версией загрузчика GRUB 2 работающий как Live CD (ну они по моему все такие сейчас). (Версия GRUB 1.98 не подойдет, я пробовал, ничего не вышло.)
3 — Немного времени.
4 — ISO образы. Я использовал Ubuntu 12.04 и Ubuntu 13.04

Вставляем флешку и загружаемся с Live CD. Тепреь по порядку:

1
2
sudo fdisk –l (смотрим имя флешки. Находим ее в виде /dev/sdX. Где X какая либо буква, например d.)
sudo fdisk /dev/sdX
sudo fdisk –l (смотрим имя флешки. Находим ее в виде /dev/sdX. Где X какая либо буква, например d.)
sudo fdisk /dev/sdX

Далее просто вводим следующие буквы:

1
2
3
4
5
6
7
8
d (Удаляем раздел на флешке. Все данные будут уничтожены!)
n (Создаем новый раздел на флешке)
p (Создст первичный раздел Primary partition)
1 (Создадим первый раздел на флешке)
Дважды Нажите Enter что бы пометить начало и конец нового диска на флешке.
a  (сделает раздел активным)
1 (Сделаем первый раздел загрузочным.)
w (Записать изменения.)
d (Удаляем раздел на флешке. Все данные будут уничтожены!)
n (Создаем новый раздел на флешке)
p (Создст первичный раздел Primary partition)
1 (Создадим первый раздел на флешке)
Дважды Нажите Enter что бы пометить начало и конец нового диска на флешке.
a  (сделает раздел активным)
1 (Сделаем первый раздел загрузочным.)
w (Записать изменения.)

Теперь флешка размечена, необходимо создать файловую систему.
Вводим:

1
2
sudo fdisk –l (Узнаем имя смонтированного первого раздела флешки, например /dev/sdc1)
sudo umount /dev/sdc1 (У Вас будет скорее всего не sdc1, а что то другое)
sudo fdisk –l (Узнаем имя смонтированного первого раздела флешки, например /dev/sdc1)
sudo umount /dev/sdc1 (У Вас будет скорее всего не sdc1, а что то другое)

Отформатируем флешку в fat 32 (У Вас будет скорее всего не sdc1, а что то другое):

1
sudo mkfs.vfat -F 32 -n MULTIBOOT /dev/sdc1
sudo mkfs.vfat -F 32 -n MULTIBOOT /dev/sdc1

Приготовления флешки завершены. Теперь нам необходимо создать точку монтирования флешки. Допустим так:

1
sudo mkdir /media/BootFlash
sudo mkdir /media/BootFlash

и примонтируем туда флешку:

1
sudo mount /dev/sdc1 /media/BootFlash
sudo mount /dev/sdc1 /media/BootFlash

Теперь нам необходимо установить загрузчик GRUB 2 на флешку, для этого:

1
grub-install --force --no-floppy --root-directory=/media/BootFlash /dev/sdc (помните, у Вас скорее всего не sdc а что то другое!)
grub-install --force --no-floppy --root-directory=/media/BootFlash /dev/sdc (помните, у Вас скорее всего не sdc а что то другое!)

Система подумает немножко, и перейдем в каталог со свежим GRUB 2:

1
cd /media/BootFlash/boot/grub
cd /media/BootFlash/boot/grub

Теперь, необходимо создать файл конфигурации загрузчика grub.cfg.

1
touch grub.cfg
touch grub.cfg

Мой файл имеет следующий вид:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# GRUB 2 BOOT.CFG from Melfis.ru
 
set timeout=10
set default=0
######################################################################################
insmod font
loadfont /boot/grub/fonts/unicode.pf2
set gfxmode=640x480
insmod vbe
insmod gfxterm
insmod iso9660
terminal_output gfxterm
insmod png
insmod jpeg
background_image /boot/logo.png
set color_normal=black/black
set color_highlight=red/black
 
######################################################################################
 
menuentry " 01. Main OS from ISO  ################"{
true
}
 
menuentry "Ubuntu Desktop 13.04 (64bit)" {
 loopback loop /u130464.iso
 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/u130464.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}
 
menuentry "Ubuntu Desktop 12.04 (64bit)" {
 loopback loop /u120464.iso
 linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/u120464.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}
 
 
menuentry "Debian 6 (32bit)" {
  echo "Loading Debian 6 (32 bit)"
  loopback loop /debian632.iso
  linux (loop)/install.386/vmlinuz vga=normal --
  initrd (loop)/install.386/initrd.gz
}
 
menuentry "Memtest 86+" {
 linux16 /memtest86+.bin
}
 
#menuentry "SystemRescueCd" {
# loopback loop /systemrescuecd.iso
# linux (loop)/isolinux/rescuecd isoloop=/systemrescuecd.iso setkmap=us docache dostartx
# initrd (loop)/isolinux/initram.igz
#}
 
menuentry " 02. AntiVirus ########################"{
true
}
 
menuentry "Dr Web Live CD 19.12.2013 NOT WORK!" {
 echo "Starting Dr Web Live CD 19.12.2013..."
 loopback loop /drweb.iso
 linux (loop)/boot vga=normal --
 initrd (loop)/boot/initrd
}
 
menuentry "Kaspersky Rescue Disk 10 NOT WORK!" {
 echo "Starting Kaspersky Rescue Disk 10..."
 loopback loop /kav.iso
 linux (loop)/boot/rescue root=live:CDLABEL=MelfisBoot rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=en udev liveimg splash quiet doscsi nomodeset
 initrd /boot/rescue.igz
}
 
 
menuentry " 03. Simple Actions  ##################"{
true
}
 
menuentry "Boot from HDD"{
set root=(hd1)
chainloader +1
boot
}
 
menuentry "Reboot"{
reboot
}
 
menuentry "Power Off"{
halt
}
# GRUB 2 BOOT.CFG from Melfis.ru

set timeout=10
set default=0
######################################################################################
insmod font
loadfont /boot/grub/fonts/unicode.pf2
set gfxmode=640x480
insmod vbe
insmod gfxterm
insmod iso9660
terminal_output gfxterm
insmod png
insmod jpeg
background_image /boot/logo.png
set color_normal=black/black
set color_highlight=red/black

######################################################################################

menuentry " 01. Main OS from ISO  ################"{
true
}

menuentry "Ubuntu Desktop 13.04 (64bit)" {
 loopback loop /u130464.iso
 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/u130464.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}

menuentry "Ubuntu Desktop 12.04 (64bit)" {
 loopback loop /u120464.iso
 linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/u120464.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}


menuentry "Debian 6 (32bit)" {
  echo "Loading Debian 6 (32 bit)"
  loopback loop /debian632.iso
  linux (loop)/install.386/vmlinuz vga=normal --
  initrd (loop)/install.386/initrd.gz
}

menuentry "Memtest 86+" {
 linux16 /memtest86+.bin
}

#menuentry "SystemRescueCd" {
# loopback loop /systemrescuecd.iso
# linux (loop)/isolinux/rescuecd isoloop=/systemrescuecd.iso setkmap=us docache dostartx
# initrd (loop)/isolinux/initram.igz
#}

menuentry " 02. AntiVirus ########################"{
true
}

menuentry "Dr Web Live CD 19.12.2013 NOT WORK!" {
 echo "Starting Dr Web Live CD 19.12.2013..."
 loopback loop /drweb.iso
 linux (loop)/boot vga=normal --
 initrd (loop)/boot/initrd
}

menuentry "Kaspersky Rescue Disk 10 NOT WORK!" {
 echo "Starting Kaspersky Rescue Disk 10..."
 loopback loop /kav.iso
 linux (loop)/boot/rescue root=live:CDLABEL=MelfisBoot rootfstype=auto vga=791 init=/init initrd=rescue.igz kav_lang=en udev liveimg splash quiet doscsi nomodeset
 initrd /boot/rescue.igz
}


menuentry " 03. Simple Actions  ##################"{
true
}

menuentry "Boot from HDD"{
set root=(hd1)
chainloader +1
boot
}

menuentry "Reboot"{
reboot
}

menuentry "Power Off"{
halt
}

К сожалению секции с Антивирусами Live CD у меня пока запустить не удалось :( .

Сохраняем все в файле grub.cfg:

1
sudo nano grub.cfg
sudo nano grub.cfg

Немного поясню что к чему:
Загрузка шрифтов (Файл unicode.pf2, должен присутствовать в каталоге fonts):

1
loadfont /boot/grub/fonts/unicode.pf2
loadfont /boot/grub/fonts/unicode.pf2

Установим фоновую картинку:

1
background_image /boot/logo.png
background_image /boot/logo.png

Загрузка Ubuntu 13.04 x64 из iso файла который находится в корне флешки. В принципе, вы можете создать каталог ISO и хранить образы там. (В этом случае не забудьте изменить пути загрузки.)

1
2
3
4
5
menuentry "Ubuntu Desktop 13.04 (64bit)" {
 loopback loop /u130464.iso
 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/u130464.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}
menuentry "Ubuntu Desktop 13.04 (64bit)" {
 loopback loop /u130464.iso
 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/u130464.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}

Теперь скачайте memtest:

1
wget memtest.org/download/4.10/memtest86+-4.10.zip 
wget memtest.org/download/4.10/memtest86+-4.10.zip 

и распакуйте полученный архив, после чего переименуйте полученный из архива файл memtest86+.bin в memtest86+-4.10.bin и закиньте его в /media/BootFlash/

На этом пока что все. К сожалению я не смог згарузить некоьторые операционные системы прямиком из ISO. :(

Понравилась статья? Расскажи друзьям:


Обсудить