6 Август 1996
Този документ дискутира как да направим FreeBSD да съществува заедно с други популярни операционни системи като Linux, MS-DOS, OS/2 и Windows 95. Специални благодарности към: Annelise Anderson <andrsn@stanford.edu>, Randall Hopper <rhh@ct.picker.com>, и Jordan K. Hubbard <jkh@FreeBSD.org>.
Повечето хора не могат да съберат тези операционни системи заедно добре, без да имат голям твърд диск, така че е включена специална информация за EIDE дискове. Понеже има толкова много комбинации на възможни операционни системи и конфигурации на твърди дискове, секцията Section 5 може би ще ви е най-полезна. Съдържа описания на определени работещи настройки на компютър, който използва няколко операционни системи.
Този документ предполага, че вече сте направили място на вашият твърд диск за допълнителна операционна система. Всеки път, когато променята дяловете на вашият твърд диск, поемате риска да разрушите информацията на оригиналните дялове. Все пак, ако целият ви твърд диск е зает от DOS, програмата FIPS (включена във FreeBSD CDROM в директорията \TOOLS или чрез ftp) може да ви бъде полезна. Позволява ви да промените дяловете на твърдият ви диск без да разрушите данните, които вече са там. Има също и комерсиална програма, наречена Partition Magic, която ви позволява да промените размера, или изтриете, дялове без последствия.
Това са само кратки описания на някои от различинте стартиращи мениджъри, които може да срещнете. В зависимост от настройките на компютъра ви, може да ви се стори полезно използването на повече от един във вашата система.
Това е мениджърът по подразбиране използван при FreeBSD. Има възможност да стартира почти всичко, включително BSD, OS/2 (HPFS), Windows 95 (FAT и FAT32) и Linux. Дяловете се избират чрез функцийните копчета (function keys).
Този ще стартира FAT, FAT32, HPFS, FFS (FreeBSD) и EXT2 (Linux). Дяловете се избират със стрелките на клавиатурата. Единствено OS/2 Boot Manager ползва собствен дял, за разлика от другите, които ползват главният стартиращ запис (master boot record, MBR). Следователно, трябва да бъде инсталиран преди 1024-тия цилиндър, за да се избегнат проблеми при стартирането. Може да стартира Linux използвайки LILO, когато е част от стартиращият сектор, не MBR. Отидете на Linux HOWTOs в световната мрежа, за повече информация относно стартирането на Linux със стартиращият мениджър на OS/2.
Това е алтернатива на Boot Easy. Дава ви повече контрол върху процеса на стартиране и възможност да слагане на стартов дял по подразбиране, както и срок на време (timeout) на стартирането. Бета версията на тази програма ви позволява да стартирате ОС като я изберете със стрелките на клавиатурата. Включено е в диска на FreeBSD в директорията \TOOLS, какво и на ftp.
Това е ограничен стартиращ мениджър. Ще стартира FreeBSD, но след като модифицирате конфигурационният файл на LILO.
Относно FAT32: FAT32 е заместника на файловата система FAT, включена в Бета версията на Microsoft OEM SR2, която започна да заменя FAT на компютри използващи Windows 95 до края на 1996. Преработва нормалната FAT система и ви позволява да използвате по-малък размер на клъстерите за по-големи твърди дискове. FAT32 също така модифицира традиционният стартиращ сектор на FAT и разпределната таблица (allocation table), правеща я несъвместима с някой други стартиращи мениджъри.
Да кажем, че имам два големи EIDE твърди диска и искам да инсталирам FreeBSD, Linux и Windows 95 на тях.
Ето как мога да го направя, използвайки тези твърди дискове:
/dev/wd0 (първи физически твърд диск
/dev/wd1 (втори твърд диск)
И двата диска имат 1416 цилиндъра.
Пускам системата чрез стартираща дискета на MS-DOS или Windows 95, която съдържа програмата FDISK.EXE и правя малък 50 MB главен дял (primary partition) (35-40 за Windows 95, плюс малко място за дишане) на първият диск. Също създавам по-голям дял на вторият твърд диск за програмите и данните ми на Windows.
Рестартирам и инсталирам Windows 95 (по-лесно казано, отколкото изпълнено) на дял C:.
Следващото нещо, което правя, е да инсталирам Linux. Не съм сигурен за всички дистрибуции на Linux, но Slackware включва LILO (виж Section 2). Когато разделям дяловете на твърдият ми диск с fdisk на Linux, ще сложа целият Linux на първият диск (може би 300 MB за добър главен (root) дял и малко място за swap).
След като инсталирам Linux и ме приканят да инсталирам LILO, убеждавам се че го инсталирам в стартиращият сектор на главният ми Linux дял, не в MBR (master boot record).
Оставащото място на твърдият диск може да отиде за FreeBSD. Също така се подсигурявам, че главният ми дял на FreeBSD не е зад 1024-тият цилиндър. (1024-тият цилиндър е 528 MB в диска с нашите хипотетични 720 MB дискове). Ако поискам ще използвам остатъка от твърдият диск (около 270 MB) за /usr и /. Остатъкът от вторият твърд диск (големината зависи от размера на дяла, който създадох за програмите и данните за Windows в първата стъпка) може да отиде за /usr/src дяла и място за swap.
Погледнати с програмата на Windows 95 fdisk, твърдите ми дискове трябва да изглеждат подобно на това:
--------------------------------------------------------------------- Display Partition Information Current fixed disk drive: 1 Partition Status Type Volume_Label Mbytes System Usage C: 1 A PRI DOS 50 FAT** 7% 2 A Non-DOS (Linux) 300 43% Total disk space is 696 Mbytes (1 Mbyte = 1048576 bytes) Press Esc to continue --------------------------------------------------------------------- Display Partition Information Current fixed disk drive: 2 Partition Status Type Volume_Label Mbytes System Usage D: 1 A PRI DOS 420 FAT** 60% Total disk space is 696 Mbytes (1 Mbyte = 1048576 bytes) Press Esc to continue ---------------------------------------------------------------------** Може да каже FAT16 или FAT32, ако използвате ъпдейта OEM SR2. Вижте Section 2.
Инсталиране на FreeBSD. Уверявам се, че стартирам с първият ми диск, сложен на ``NORMAL'' в BIOS. Ако не е, ще трябва да сложа истинската геометрия на диска при процеса на стартиране (за да я видите, стартирайте Windows 95 и се консултирайте с Microsoft Diagnostic (MSD.EXE), или проверете вашият BIOS) с параметър hd0=1416,16,63, където 1416 е номерът цилиндри на твърдият ми диск, 16 е номерът на глави за звено (heads per track) и 63 е номерът на сектори за звено (sectors per track) на диска.
Когато разделям твърдият диск на дялове, се уверявам, че инсталирам Boot Easy на първият диск. Не се притеснявам относно вторият диск, нищо не се стартира от него.
Когато рестартирам, Boot Easy трябва да разпознае трите ми стартиращи дяла като DOS (Windows 95), Linux и BSD (FreeBSD).
Повечето операционни системи са доста придирчиви относно това къде и как са разположени на твърдият диск. Windows 95 и DOS трябва да бъдат на първият главен дял, на първият твърд диск. OS/2 е изключението. Може да бъде инсталиран на първият, или вторият диск, в главен, или разширен дял. Ако не сте сигурен, дръжте началото на стартиращи дялове под 1024-тият цилиндър.
Ако инсталирате Windows 95 на съществуваща BSD система, ще ``унищожи'' MBR и ще трябва да преинсталирате предишният си стартиращ мениджър. Boot Easy може да бъде преинсталиран чрез програмата BOOTINST.EXE включена в директорията \TOOLS на CDROM-а, и чрез ftp. Също така, може да пуснете наново инсталационният процес и да отидете до редактора на дялове. От там, маркирайте дяла на FreeBSD като стартиращ, изберете Boot Manager, и после напишете W за да запишете информацията в MBR. Сега може да рестартирате и Boot Easy би трябвало да разпознае Windows 95 като DOS.
Моля, имайте в предвид, че OS/2 може да чете FAT и HPFS дялове, но не и FFS (FreeBSD), или EXT2 (Linux). Подобно на това, Windows 95 може само да чете и пише на FAT и FAT32 (виж Section 2) дялове. FreeBSD може да чете повечето файлови системи, но в момента не може да чете HPFS дялове. Linux може да чете HPFS дялове, но не може да пише върху тях. Новите версии на Linux ядрото (2.x) може да чете и пише на Windows 95 VFAT дялове (VFAT е това, което позволява на Windows да използва дълги имена - почти същото като FAT). Linux може да чете и пише на повечето файлови системи. Разбрахте ли? Надявам се.
(секцията има нужда от работа, моля, пращайте вашите примери на <jayrich@sysc.com>).
FreeBSD+Win95: Ако инсталирате FreeBSD след Windows 95, в менюто на Boot Easy трябва да видите DOS. Това е Windows 95. Ако инсталирате Windows 95 след FreeBSD, прочетете Section 4. Докато твърдият ви диск няма 1024 цилиндъра, не би трябвало да имате проблем със стартирането. Ако някой от вашите дялове все пак излезе от 1024-тият цилиндър и получавате съобщения като ``invalid system disk'', DOS (Windows 95) и FreeBSD няма да се стартират, опитайте да видите настройка в BIOS наречена ``> 1024 cylinder support'' или ``NORMAL/LBA'' mode. DOS може да има нужда от LBA [Logical Block Addressing (Логично Адресиране на Блок)] за да се старира правилно. Ако идеята да сменяте всеки път настройките на BIOS не ви допада, можете да стартирате FreeBSD през DOS чрез програмата FBSDBOOT.EXE на диска (трябва да намери вашият FreeBSD дял и да го стартира.)
FreeBSD+OS/2+Win95: Нищо ново тук. Стартиращият мениджър на OS/2 може да пусне всички тези операционни систем, така че не би трябвало да е проблем.
FreeBSD+Linux: Също можете да използвате Boot Easy, за да стартирате и двете операционни системи.
FreeBSD+Linux+Win95: (виж Section 3)
Има много Linux HOW-TOs, които се занимават с много операционни системи на един твърд диск.
Linux+DOS+Win95+OS2 mini-HOWTO предлага помощ за конфигурацията стартиращият мениджър на OS/2, Linux+FreeBSD mini-HOWTO също така може да е интересно. Linux-HOWTO е също полезно.
NT Loader Hacking Guide предотставя добра информация относно стартирането Windows NT, '95 и DOS с други операционни системи.
И документа на Hale Landis ``How It Works'' съдържа добра информация за всички теми относно видове дискова геометрия и стартирането. Можете да го намерите на ftp://fission.dt.wdc.com/pub/otherdocs/pc_systems/how_it_works/allhiw.zip.
Накрая, не пренебрегвайте документацията за ядрото на FreeBSD относно процедурата по стариране, намираща се в дистрибуцията на сорса на ядрото (разархивира се в /usr/src/sys/i386/boot/biosboot/README.386BSD.
(Допринесено от Randall Hopper, <rhh@ct.picker.com>)
Тази секция се опитва да ви даде достатъчно начална информация относно вашите твърди дискове и стартиращият процес, така че да се справите с повечето проблеми, които може да възникнат, когато се опитате да стартирате няколко операционни системи. Започва с доста основни термини, така че може би ще искате да слезете надолу в тази секция, докато започне да ви изглежда непознато и тогава да почнете с четенето.
Три основни термина се използват за описване мястото на данните върхи твърдият ви диск: Цилиндри (Cylinders), Глави (Heads) и Сектори (Sectors). Не е особено важно да знаете с какво са свързани тези термини, освен това, че заедно, те определят къде физически са данните на твърдият ви диск.
Вашият диск има специфичен номер цилиндри, номер глави и номер сектори за цилиндър-глава [цилиндър-глава се знае и като звено (track)]. Заедно, тази информация дефинира ``геометрията на физическия диск'' за вашият твърд диск. Обикновенно има 512 байта (bytes) на сектор и 63 на звено, броя цилиндри и глави варира широко от диск за диск. Така може да разберете броя байтове, който ще се побере на вашият диск чрез пресмятане:
Например, на моя 1.6 GB Western Digital AC31600 EIDE твърд диск се получава:
което е 1,624,670,208 байта, или около 1.6 GB.
Можете да разберете физичната геометрия на диска (номера цилиндри, глави и броя сектори/звена) за вашият твърд диск чрез ATAID, или други програми в мрежата. Вашият твърд диск най-вероятно е дошъл с тази информация. Все пак внимавайте: ако използвате BIOS LBA (виж Section 7.3), не може да ползвате просто някоя програма за да разберете физичната геометрия. Това е така, защото много програми (пр. MSD.EXE или fdisk на FreeBSD) не могат да идентифицират физичната геометрия на диска; вместо това, те дават сведения за преведената геометрия (виртуални числа от използването на LBA). По-нататък ще разберете какво означава това.
Още едно полезно нещо относно тези термини. При 3 числа--номер на цилиндър, номер на глава и номер на сектор-в-звено--можете да идентифицирате специфичен абсолютен сектор (блок от данни, голям 512 байта) на вашият диск. Цилиндрите и Главите са номерирани от 0 нагоре, а Секторите са номерирани от 1 нагоре.
За тези, които се интересуват от още технически детайли, информация за геометрията на диска, стартиращи (boot) сектори, BIOS-и и т.н. може да бъде намерена навсякъде из мрежата. Запитайте Lycos, Yahoo и т.н. за boot sector или master boot record. Заедно с полезната информация, ще намерите и пакета документи How It Works на Hale Landis. Вижте секцията Section 6 за някои насоки към този пакет.
Добре, достатъчно терминология. Говорим за стартиране тук.
На първият сектор, на вашият диск (Цилиндър 0, Глава 0, Сектор 1) живее Главният Стартиращ Запис (Master Boot Record, MBR). Той съдържа карта на вашият диск. Идентифицира до 4 дяла , всеки от които, свързано парче от този диск. FreeBSD нарича дяловете парчета (slices) за да се избегне объркването със собствените си дялове, но тук няма да правим така. Всеки дял може да съдържа собствена операционна система.
Всеки запис за дял в MBR има ID на дяла (Partition ID), Стартиращ Цилиндър/Глава/Сектор и Краен Цилиндър/Глава/Сектор. ID на дяла казва какъв вид е дяла (каква OS), а Старт/Край казва къде е. Table 1 показва списък повърхностен списък на някой често срещани ID на дялове.
Table 1. ID на дялове
ID (hex) | Описание |
---|---|
01 | Главен DOS12 (12-битов FAT) |
04 | Главен DOS16 (16-битов FAT) |
05 | Разширен DOS |
06 | Главен голям DOS (> 32MB) |
0A | OS/2 |
83 | Linux (EXT2FS) |
A5 | FreeBSD, NetBSD, 386BSD (UFS) |
Забележете, че не всички дялове са стартиращи (пр. Разширен DOS). Някои са--други не. Това, което прави дяла стартиращ, е конфигурацията на Стартиращият Сектор на Дяла (Partition Boot Sector), който съществува в началото на всеки дял.
Когато конфигурирате любимият ви стартиращ мениджър, той гледа записите в дяловите таблици на MBR за всичките ви твърди дискове и ви позволява да наименувате записите в този списък. После, когато стартирате, стартиращият мениджър е извикан от специален код в Главният Стартиращ Сектор на първият проучен твърд диск, на вашата система. Гледа в записите на дяловата таблица на MBR отговарящ на избора на дяла, който сте направили, използва информацията на Стартиращият Цилиндър/Глава/Сектор за този дял, зарежда Стартиращият Сектор на Дяла за този дял, и му дава контрол. Този Стартиращ Сектор за дяла, сам по себе си съдържа достатъчно информация за да започне зареждането на операционната система на този дял.
Нещо, което минахме преди и е важно да се знае. Всички ваши дискове имат MBR. Все пак, този, който е важен, е първият, който е проучен от BIOS. Ако имате само IDE твърди дискове, то е първият IDE диск (пр. основният (primary) диск на първият контролер). Подобно е и за SCSI системите. Ако имате заедно IDE и SCSI твърди дискове, обикновенно BIOS първо проучва IDE диска, така че първият IDE диск е първият изучен диск. Стартиращият мениджър, който ще инсталирате, ще се закачи в MBR на този първи изучен диск, който току-що описахме.
Сега, интересните неща, за които трябва да внимавате.
Първата част от стартиращият процес се извършва чрез BIOS (ако това е нов термин за вас, BIOS представлява софтуерен чип на вашата дънна платка, който предотставя стартиращ код за вашият компютър). Като такава, тази първа част от процеса е тема относно ограниченията интерфейса на BIOS.
Интерфейсът на BIOS, използван за четене на твърдият диск през този период (INT 13H, Subfunction 2) разпределя 10 бита към Номера на Цилиндъра, 8 бита към Номера на Главата и 6 бита към Номера на Сектора. Това ограничава потребителите на този интерфейс (пр. стартиращи мениджъри закачени в MBR на вашият диск, както и зареждачи на OS, закачени в Стартиращите Сектори) до следните лимити:
1024 цилиндъра, макс
256 глави, макс
64 сектора/звено, макс (всъщност 63, 0 не е достъпно)
Сега големите твърди дискове имат много цилиндри, но не и много глави, така че неизменимо с големи твърди дискове, броя цилиндри е по-голям от 1024. Предотставено така, и чрез интерфейса на BIOS, не можете просто да стартирате където и да е на вашият твърд диск. Стартиращият код (стартиращият мениджър и зареждача на OS, закачени във всички Стартиращи Сектори на стартиращите дялове) трябва да пребивава под 1024-тият цилиндър. Всъщност, ако вашият твърд диск е обикновен и има 16 глави, това се равнява на:
което е около, често споменавания, лимит от 528MB.
Тук е мястото, където идва BIOS LBA (Logical Block Addressing). BIOS LBA дава на потребителя на BIOS API обажданията, достъп до физически цилиндри над 1024, въпреки интерфейса на BIOS, чрез предефиниране на цилиндър. Това е, прави нова карта на вашите цилиндри и глави, правейки ги да се появят през BIOS, въпреки, че диска има по-малко цилиндри и повече глави, отколкото са всъщност. С други думи, възползва се от факта, че твърдите дискове имат относително малко глави и много цилиндри, като подвига баланса между броя цилиндри и броя глави, така че и двата броя да са под гореспоменатите лимити (1024 цилиндъра, 256 глави).
С BIOS LBA, ограничението на твърдият диск, за големината, е виртуално отстранена (е, поне качена до 8 гигабайта). Ако имате LBA BIOS, можете да сложите FreeBSD, или всяка OS където поискате и да не достигнете ограничението на 1024-тият цилиндър.
Като използвам отново моят 1.6GB Western Digital за пример, неговата физична геометрия е:
Както и да е, моят BIOS LBA прави нова карта на това на:
давайки същата ефективна големина на диска, но броя цилиндри и глави е в обхвата на BIOS API (по случайност, имам заедно Linux и FreeBSD, използващи един от твърдите ми дискове, над 1024-тият физически цилиндър, и двете операционни системи се стартират добре, благодарение на BIOS LBA).
Още нещо, за което трябва да гледате, когато инсталирате стартиращи мениджъри, е разпределението на място за вашият стартиращ мениджър. По-добре е да мислите за това предварително, за да си спесите преинсталацията на една или повече, от вашите OS.
Ако сте следели дискусията в Section 7.2 относно Главният Стартиращ Сектор (където е MBR), Стартиращият Сектор на Дяла и стартиращият процес, може да се чудите къде ще живее точно стартиращият мениджър на вашият твърд диск. Е, някои стартиращи мениджъри са достатъчно малки за да се съберат изцяло в Главния Стартиращ Сектор (Цилиндър 0, Глава 0, Сектор 0) заедно с таблицата за дяловете. Други се нуждаят от малко повече място и всъщност разширяват няколко сектора след Главният Стартиращ Сектор в звено Цилиндър 0 Глава 0, това е типично свободно...типично.
Уловката е такава. Някои операционни системи (включително FreeBSD) ви позволяват, ако поискате, да пуснете техните дялове точно след Главният Стартиращ Сектор на Цилиндър 0, Глава 0, Сектор 2. Всъщност, ако дадете на sysinstall-а на FreeBSD диск с празен къс отпред, или цял празен диск, по подразбиране там ще се стартира и FreeBSD. (поне стана, когато аз попаднах в този капан). После, когато инсталирате вашият стартиращ мениджър, ако е такъв, че да окупира няколко сектора отгоре след MBR, ще презапише началото на данните за първият дял. В случая на FreeBSD се презаписва името на диска, и прави вашият FreeBSD дял така, че да не може да се стартира.
Лесният начин да избегнете този проблем (и да си оставите възможността по-късно да използвате различни стартиращи мениджъри) е да оставяте винаги първото пълно звено на диска ви неразпределено (unallocated), когато разделяте диска си. Това означава да оставите място от Цилиндър 0, Глава 0, Сектор 2 през Цилиндър 0, Глава 0, Сектор 63 неразBпределено и да стартирате вашият първи дял в Цилиндър 0, Глава 1, Сектор 1. Когато създавате дялове на DOS в началото на вашият диск, DOS оставя това място по подразбиране отворено (заради това някои стартиращи мениджъри предполагат, че е свободно). Така че създаване на DOS дял в началото на диска ви, също избягва този проблем. Аз обичам да правя така, да създам 1MB DOS дял отпред, защото също така избягва главните букви на DOS дисковете да се изместят след ново разпределение на дяловете.
За справка, следните стартиращи мениджъри използват Главният Стартиращ Сектор за да запазят техният код и данни:
OS-BS 1.35
Boot Easy
LILO
Тези стартиращи мениджъри използват няколко допълнителни сектора след Главният Стартиращ Сектор:
OS-BS 2.0 Beta 8 (sectors 2-5)
OS/2's boot manager
Понякога, когато инсталирате стартиращи мениджъри, може да оставите MBR в състояние, в което машината ви няма да може да се стартира. Това е рядко срещано, но възможно, когато използвате отновно fdisk върху вече инсталиран стартиращ мениджър.
Ако имате стартиращ DOS дял на диска ви, можете да пуснете DOS флопи дискета, и изпълните:
за да сложите оригиналният, прост стартиращ код на DOS обратно в системата. После можете да стартирате DOS (и само DOS) от твърдият диск. Алтернативно, просто пуснете отново инсталационната програма на стартиращият ви мениджър от стартиращо флопи (bootable floppy).
Този и други документи можете да намерите в ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
За въпроси отностно FreeBSD, прочетете
документацията
преди да попитате в <questions@FreeBSD.org>.
За въпроси отностно този документ, e-mail <doc@FreeBSD.org>.