Българско ръководство за Grub4dos bootloader
Има два вида картографиране, директно картографиране и картографиране на паметта. Директното картографиране обикновено се използва за големи изображения/устройства. Ако използвате директно картографиране, тогава, за да създадете виртуално устройство от изображение на диск, файлът с изображение трябва да бъде непрекъснат (не фрагментиран). Тези помощни програми, contig или wincontig, могат да дефрагментират файла с изображение. Опитът за картографиране на фрагментиран файл ще доведе до - Грешка 60: Файлът за емулация на устройство трябва да бъде в една непрекъсната дискова област, с това съобщение трябва да картографирате в паметта или да дефрагментирате изображението и да опитате отново.
Картографиране на паметта, което означава, че устройството/изображението е картографирано към RAM, обикновено се използва за малки изображения - например изображения на флопи дискове. Когато се картографира в паметта, изображението на диска може да бъде фрагментирано. Размерът на наличната RAM ще определи максималния размер на изображението, което може да бъде заредено.
Процесът на "карта" се извършва с INT 13 - и емулираният диск ще бъде достъпен от други операционни системи, които използват споделяне на файлове, като DOS и Windows 9x. Няма да има достъп до дискове с изображения на ОС, които използват режим на защитен драйвер (Windows NT/2000/XP/Vista, Linux, FreeBSD), след като защитеният режим е в сила.
Директно картографиране
Изтегляне на изображения на дискове
Пример за директно картографиране на изображение на флопи диск вече беше даден по-рано в това ръководство:
Ето какво виждаме, когато правим всичко това в командния ред:
grub> map (hd0,0)/win98.ima (fd0) FAT12 BPB намерен с 0xEB (jmp), водещ зареждащия сектор.
сондирани C/H/S =80/2/18, сондирани общо сектори = 2880
floppies_orig=0, harddrives_orig=2, floppies_curr=1, harddrives_curr=2
grub> верижно зареждане (fd0)+1
grub> rootnoverify (fd0)
grub> map --floppies=1
Когато се използва директно картографиране, изображението на диска трябва да има валиден MBR. Изображение с множество дялове трябва да бъде картографирано като (hd) устройство. Ако изображението на диска се състои от един дял (без MBR), тогава трябва да го картографирате като дискета.
Редица примери за съпоставяне могат да бъдат намерени във файла README_GRUB4DOS.txt.
Смяна на диск
Например, можем да използваме командата map за размяна на дискове, когато зареждаме от USB устройство (например флаш устройство или USB твърд диск). Когато настройките на BIOS са настроени да стартират от USB, твърдият диск ще стане (hd1). DOS и Windows 9x няма да могат да стартират от този твърд диск. Windows NT системите теоретично могат да стартират от друг диск, но пътеките в boot.ini няма да бъдат правилни при стартиране от USB устройство. Ако Windows е инсталиран на твърдия диск, той няма да стартира.
Например, поставяме нов твърд диск в компютъра. И превръщаме стария хард диск с инсталиран Windows XP от основен (master) във вторичен (slave) (става (hd1)). Новият диск става основен (master) (hd0), на него се инсталира Vista и вече няма как да стартира Windows XP от стария диск.
В такъв случай можем да стартираме системата не от първия дял чрез размяна на дискове (Например: променете (hd1) на (hd0)).
(hd0,0) съдържа файла с етикети hd0.tag и (hd1,0) съдържа файла с етикети hd1.tag. Съветникът за MBR е на (hd1,0), за да провери кое устройство ще бъде достъпно от DOS след експериментиране с командата map.
В резултат на това получаваме грешка
ЗАБЕЛЕЖКА - използвайки горния набор от команди, замяната на (hd1) с (hd0) няма да има ефект, докато не бъде издадена командата за зареждане. Въпреки че устройството (hd1) е картографирано като (hd0),всички препратки към действителни устройства остават в (hd1) в Grub4dos. Въвеждането на командата find /hd0.tag от командния ред ще върне устройството (hd0,0), въвеждането на командата find /hd1.tag от командния ред ще върне устройството (hd1,0) - вижте примера по-долу:
grub> карта (hd1) (hd0)
grub> намери /hd0.tag (hd0,0)
grub> намери /hd1.tag (hd1,0)
grub> корен (hd1,0) Типът на файловата система е дебел, тип дял 0xe
grub> chainloader /io.sys Ще стартира MS-DOS 7.x от устройство=0x81, дял=0x0(скрити сектори=0x3f)
Забележете какво извежда командата chainloader. от устройство=0x81. След като заредите DOS, изпълнете командата mbrwizd.exe /list. Сега можете да видите по размера и типа на файловата система на снимка 1 - пред нас устройството (hd1) се показва като Disk:0 и Disk:1 - а устройството (hd0) не се вижда.
ЗАБЕЛЕЖКА – Използването на горния набор от команди ще замени (hd1) с (hd0) веднага след изпълнението на командата map --hook. Въвеждането на командата find /hd0.tag от командния ред ще има резултат - "File not found" (файлът не е намерен), въвеждането на командата find /hd1.tag от командния ред ще върне устройствата (hd0,0) и (hd1,0) - вижте примера по-долу:
grub> карта (hd1) (hd0)
grub> find /hd0.tag Грешка 15: Файлът не е намерен
grub> намери /hd1.tag (hd0,0) (hd1,0)
grub> корен (hd0,0) Типът на файловата система е дебел, тип дял 0xe
grub> chainloader /io.sys Ще стартира MS-DOS 7.x от устройство=0x80, дял=0x0(скрити сектори=0x3f)
Забележете какво извежда командата chainloader. от устройство=0x80. След като заредите DOS, изпълнете командата mbrwizd.exe /list. Резултатът ще бъде същият като в предишния пример, устройството (hd1) ще се покаже като Disk:0 иDisk:1 - и устройството (hd0) отново не се вижда.
ЗАБЕЛЕЖКА - след подаване на командите map (hd1) (hd0) и map (hd0) (hd1), въвеждането на командата find /hd0.tag от командния ред ще върне устройството (hd0). Въвеждането на командата find /hd1.tag ще върне устройството (hd1). Когато DOS е зареден, и двата диска ще бъдат налични, въпреки че физическото устройство (hd1) ще бъде показано като Диск: 0, а устройството (hd0) ще бъде Диск: 1 - вижте снимка 2.
Обърнете внимание, че емулираните дискове са достъпни само от операционни системи, използващи INT 13. В примера, показан по-горе, Windows-подобна система ще види устройството (hd0) като "диск 0" и устройството (hd1) като "диск 1".
Когато картографирането на дял се извършва в следния синтаксис (hdm,n)+1, то се използва за представяне на целия дял (където m=номер на диска и n=номер на дял), а не само първия сектор.
Пример за отговор на Grub4dos на горните команди:
grub> карта (hd1,0)+1 (hd0) FAT16 BPB намерен с 0xEB (jmp), водещ сектор за зареждане.
изследван C/H/S =40/16/63, изследван общ брой сектори = 40257 Опитайте се да намерите разширен дял (hd1)0+40320 за виртуалния (hd0).
сондирани C/H/S =40/16/63, сондирани общо сектори = 40320
grub> карта (hd1) (hd0)
grub> chainloader /io.sys Ще стартира MS-DOS 7.x от устройство=0x80, дял=0x0(скрити сектори=0x3f)
grub> rootnoverify (hd0)
Извадка от предупреждение от README_GRUB4DOS.txt:
Картографиране на паметта
Картографирането на паметта се използва с командите, както в примерите по-горе, и е добавена опцията --mem.
Когато използваме картографиране на паметта, се предполага, че изображението на диска може да е фрагментирано. Устройството се поставя в RAM - Например: map--mem(hd0,0)+1 (fd0) (както беше споменато по-рано, +1 се използва с командата map за обозначаване на цяло числодиск). Ако картографирате дисково изображение, което не е MBR, в паметта, то може да бъде (hd) устройство и MBR ще бъде създаден в Grub4dos - въз основа на данните за дяла.
Компресирано изображение може да се използва и за картографиране на паметта. Изображението трябва да бъде компресирано с gzip (ще получите файл с разширение .gz), това е безплатен архиватор с отворен код. Тъй като много дискови изображения не са „пълни“, компресирането им може да освободи много място. Стандартните образи на дискети (1440 KB) обикновено се оставят такива, каквито са. Препоръчително е изображенията да се компресират, тъй като това спестява място и ускорява стартирането им.
gzip можете да изтеглите тук. Ако архивираме bcdl201a.ima 1440Kb флопидисков образ, тогава в компресиран вид той ще тежи 10,4Kb.
Grub4dos поддържа само формат .gz, докато ядрото memdisk (част от пакета syslinux) поддържа формат .zip - като например формата .imz на Winimage. Ядрото на memdisk може да бъде gzip и заредено с Grub4dos.
- намери --set-root /memdisk.gz[въведете]
- ядро /memdisk.gz[въвеждане]
- initrd /win98.ima.gz[въведете]
- зареждане[въвеждане]
- намери --set-root /memdisk.gz[въведете]
- ядро /memdisk.gz[въвеждане]
- initrd /win98.ima.zip[въведете]
- зареждане[въвеждане]
ЗАБЕЛЕЖКА – в примерите по-горе win98.ima трябва да е на същия дял като memdisk.gz.
Зареждане от .ISO изображение
В следващия пример е направен CD образ, съдържащ сектор за зареждане под формата на дискета за зареждане на DOS, с различни DOS програми на компактдиска (не в зоната за зареждане). Когато зареждаме от този (истински) компактдиск, изображението в сектора за зареждане се определя като устройство A:, а самият CD-ROM (и програмите в неговия корен) заематследващата налична буква на устройството. Файлът с изображение на CD (hd0,0)/dos.iso ще бъде зареден с помощта на командите по-горе, ето какво ще покаже Grub4dos в резултат на тези команди:
grub> map(hd0,0)/dos.iso(hd32)
grub> root (hd32) Типът на файловата система е iso9660, използвайки целия диск
grub> верижен товарач (hd32)
Заредете сегмент: 0x0 Тип система: 0x0 Брой сектори: 0x1 Заредете RBA: 0x3E Тип зареждане: 2 = 1,44M флопи
Компактдискът изглежда стартира нормално. Секторът за стартиране на компактдиска беше идентифициран като A:, а CD-ROM беше идентифициран като E:. За съжаление, опитът за достъп до файлове на устройство E: (основната част на CD изображението) завършва с грешка.
Файлът README_GRUB4DOS.txt казва:
ЗАБЕЛЕЖКА - Ако командата mkisofs --iso-level 4 е била използвана за създаване на .iso изображение (както се прави в PE компилации), MSCDEX.EXE не трябва да се използва - премахнете го от SHSUCDX (Подробности тук).
Редактирани config.sys и autoexec.bat и с eltorito.sys файл, добавен към изображението за зареждане, записано на dos.iso. Този преобразуван компактдиск стартира както преди с изображението за зареждане, налично като A: и с недостъпен корен на компактдиска.
Когато картографираме .iso, съдържащ eltorito.sys, към сектора за зареждане на устройството (0xFF), CD-ROM се зарежда и сега както изображението за зареждане (A:), така и коренът на CD са налични!
Този пример показва трудностите, които идват с емулацията на CD-ROM. Ако искате да видите работещи примери, можете да го направите тук
Вложено картографиране
С помощта на най-новите версии на Grub4dos е възможно да картографирате изображение от друго картографирано изображение - това понякога се нарича двойно картографиране. Проектът UBCD, например, използва стартиращ компактдиск, съдържащ стартиращо изображение на дискета. Използвайки CDROM емулация, можем да картографираме UBCD .iso файла като (hd32), след товакартирайте флопи образа от (hd32) като устройство (fd0), след което стартирайте от прясно картографирания флопи образ.
Например:
- map --mem (hd0,0)/ubcd34-basic.iso (hd32)[въведете]
- map --hook[въвеждане]
- карта --mem (hd32)/IMAGES/MAXBLAST.IGZ (fd0)[въведете]
- map --hook[въвеждане]
- корен (fd0)[въведете]
- верижен товарач +1[въведете]
- зареждане[въвеждане]