Grub Chain load: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 7 промежуточных версий этого же участника)
Строка 1: Строка 1:
  +
[[Категория:Linux]]
  +
[[Категория:Grub2]]
 
=Загрузка с образров дисков=
 
=Загрузка с образров дисков=
 
Дано:
 
Дано:
*образ диска (iso) - в моем случае это кастомизированная сборка ISXi, и образ "спасательный" (в примере - gentoo)
+
*образ диска (iso) - в моем случае это кастомизированная сборка ESXi, и образ "спасательный" (в примере - убунта)
 
Требуется:
 
Требуется:
 
* Нормальная загрузка - загрузить систему установленную на диске если это возможно. Возможность загрузки определяю по наличию файла-флага (/OK)
 
* Нормальная загрузка - загрузить систему установленную на диске если это возможно. Возможность загрузки определяю по наличию файла-флага (/OK)
Строка 10: Строка 12:
 
* загрузка grub2 - этот загрузчик дает возможность проверять файлы на дисках.
 
* загрузка grub2 - этот загрузчик дает возможность проверять файлы на дисках.
 
* загрузка grub4dos - этот загрузчик позволяет грузить образы дисков
 
* загрузка grub4dos - этот загрузчик позволяет грузить образы дисков
  +
  +
На флешке 2 раздела, на первом - убунта и файлы относящиеся к grub2. Для grub4dos - нужен vfat раздел.
  +
<PRE>
  +
ls -1
  +
boot
  +
lost+found
  +
recovery
  +
ubuntu-11.10-desktop-i386.iso
  +
</PRE>
  +
  +
на втором разделе (ФАТ!) - то что относиться к grub4dos, menu.lst в корне диска - это нормально.
  +
<PRE>
  +
ls -1
  +
boot
  +
menu.lst
  +
vm.iso
  +
</PRE>
 
==Grub2==
 
==Grub2==
 
Устанавливаю груб2 на флешку: (флешка - /dev/sdb):
 
Устанавливаю груб2 на флешку: (флешка - /dev/sdb):
 
{{Root|<nowiki>#grub-install --boot-directory=/media/e0f8e1c7-496b-4a2c-abe3-b96ead21a8f3/boot/ --no-floppy /dev/sdb</nowiki>}}
 
{{Root|<nowiki>#grub-install --boot-directory=/media/e0f8e1c7-496b-4a2c-abe3-b96ead21a8f3/boot/ --no-floppy /dev/sdb</nowiki>}}
 
обратить внимание - указать boot директорию, в моем случае это автогенеренный путь убунтой.
 
обратить внимание - указать boot директорию, в моем случае это автогенеренный путь убунтой.
в grub.conf:
+
в grub.cfg:
   
 
<PRE>
 
<PRE>
Строка 45: Строка 64:
 
}
 
}
 
</PRE>
 
</PRE>
  +
  +
==Grub4Dos==
  +
На втором разделе - лежит груб4дос, который в отличии от груб2 может грузить с ИСО. Отмечу, что его не нужно устанавливать - достаточно просто скопировать, управление передается явно.<BR>
  +
menu.lst
  +
<PRE>
  +
default 0
  +
timeout 3
  +
title ESXi
  +
map (hd0,1)/vm.iso (0xff)
  +
map --hook
  +
chainloader (0xff)
  +
boot
  +
</PRE>
  +
подробнее про маппинг - тут http://greenflash.su/Grub4Dos/files/map.htm

Текущая версия на 16:42, 28 сентября 2012

Загрузка с образров дисков

Дано:

  • образ диска (iso) - в моем случае это кастомизированная сборка ESXi, и образ "спасательный" (в примере - убунта)

Требуется:

  • Нормальная загрузка - загрузить систему установленную на диске если это возможно. Возможность загрузки определяю по наличию файла-флага (/OK)
  • Загрузка "спасательного образа" если на флешке установлен флаг (создан файл) recovery
  • Если отстутвует файл ОК на диске и отсутвует файл рековери - запустить установку.


Задача разбита на 2 части

  • загрузка grub2 - этот загрузчик дает возможность проверять файлы на дисках.
  • загрузка grub4dos - этот загрузчик позволяет грузить образы дисков

На флешке 2 раздела, на первом - убунта и файлы относящиеся к grub2. Для grub4dos - нужен vfat раздел.

ls -1
boot
lost+found
recovery
ubuntu-11.10-desktop-i386.iso

на втором разделе (ФАТ!) - то что относиться к grub4dos, menu.lst в корне диска - это нормально.

ls -1
boot
menu.lst
vm.iso

Grub2

Устанавливаю груб2 на флешку: (флешка - /dev/sdb):

#grub-install --boot-directory=/media/e0f8e1c7-496b-4a2c-abe3-b96ead21a8f3/boot/ --no-floppy /dev/sdb

обратить внимание - указать boot директорию, в моем случае это автогенеренный путь убунтой. в grub.cfg:

insmod loopback.mod

menuentry "Boot" {
# check for flag
    echo "Check for recovery mode"
    if [ -f (hd0,1)/recovery ]; then
        echo "Recovery file found, Ububtu will be loaded"
        set isofile="/ubuntu-11.10-desktop-i386.iso"
        loopback loop (hd0,1)$isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile nomodeset
        initrd (loop)/casper/initrd.lz
    else
# Normal boot
        echo "Check OK on (hd1,2)"
        if [ -f (hd1,2)/OK ]; then
            echo "OK file found ... "
            set root=(hd1)
            chainloader +1
            boot
        else
# Finally - Re-install
            echo "Re-install mode"
            set root=(hd0,2)
            linux16 /boot/grub/grub.exe
        fi
    fi
}

Grub4Dos

На втором разделе - лежит груб4дос, который в отличии от груб2 может грузить с ИСО. Отмечу, что его не нужно устанавливать - достаточно просто скопировать, управление передается явно.
menu.lst

default 0
timeout 3
title ESXi
map (hd0,1)/vm.iso (0xff)
map --hook
chainloader (0xff)
boot

подробнее про маппинг - тут http://greenflash.su/Grub4Dos/files/map.htm