Олон үйлдлийн систем нэг дискэн дээр

Анх линукс үйлдлийн систем сонирхож эхлэж байхад виндовс суулгачихсан хард дискэн дээрээ нэмж линукс суулгах гэж нилээд юм болдог байв. Нэг удаа виндовсоо ахиж суулгах хэрэг гараад, тэгсэн чинь компьютерээ дахин ачаалтал үйлдлийн систем сонгодог цэс маань гарч ирэхгүй шууд виндовс ачаалагдаж байна. Ингээд эхний гашуун туршлага : виндовс бол найзархаг үйлдлийн систем биш, бусад үйлдлийн системтэй нэг дискэн дээр байхыг хүсдэггүй юм байна. Ингээд дараа нь өөр өөр линуксуудыг нэмж суулгаж туршив, бүр FreeBSD -г нөгөөдүүлтэйгээ хамт суулгаж үзэв. Ингэж олон үйлдлийн систем суулгахад дараалал чухал бөгөөд хамгийн найзархаг бусаас нь эхлэж суулгах хэрэгтэй юм байна гэдгийг ойлгов. Тухайн үед бол Windows->FreeBSD->Linux-ууд(Mandrake, RedHat, Debian, Slackware,…) байсан. Тэгэхээр хамгийн найзархаг нь Линукс болж таарч байна. Тэр үед эдгээр үйлдлийн системүүдийг бүгдийг нь хэрэглээд ч гавьсан юмгүй, суулгахаас цааш хэтрээгүй ч хатуу дискний партишнууд болоод үйлдлийн системийн ачаалагчдын талаар жаахан мэдлэгтэй болсон юм.

Өнөөдөр бидний хамгийн түгээмэл хэрэглэдэг PC нь нэг хатуу дискэн дээр 4 өөс дээшгүй primary partition байхыг зөвшөөрдөг, учир нь дискний мастер бүүт бичлэг дээр 4 өөс дээш паритишн бүртгэгддэггүй. Түүнээс олон партишн үүсгэхийн тулд 4 партишнийхаа аль нэгийг өргөтгөгдсөн партишн(extended partition) болгоод, өргөтгөгдсөн партишн дотроо дуртай тооны логик партишн(logical partition) үүсгэж болно. Логик партишний мэдээлэл нь өргөтгөгдсөн партишний эхний сектороос эхэлдэг. Компьютер асаад хатуу дискний хамгийн эхэнд байрлах бүүт сектороос үйлдлийн систем ачаалах кодыг ажиллуулдаг ба энэ нь секторт(512 байт) үйлдлийн систем ачаалах код, дискний партишнуудын мэдээлэл байрлах ёстой. Ер нь стандартаараа бол мастер бүүт дээр байрлах код нь идэвхтэй партишний эхний сектор луу үйлдлийн систем ачаалах эрхийг шилжүүлдэг. Ингэж партишны эхний сектор руу үйлдлийн систем ачаалах эрхийг шилжүүлэх үйлдлийг гинжин ачаалалт(chain-loading) гэдэг. Өмнө бидний цухас дурдсан олон үйлдлийн систем суулгасан үед хэрэглэдэг үйлдлийн систем сонгох цэс нь энэ эхний сектор дээр сууж байгаад цэснээс сонгох үед харгалзах партишн руу нь үйлдлийн систем ачаалах эрхийг шилжүүлнэ. Тэр үед сонгогдсон партишн дээр мөн үйлдлийн систем сонгох програм суусан байвал дахин тэндээсээ өөр үйлдлийн систем сонгосон ч болно, зүгээр тухай партишн дээрээсээ үйлдлийн системийг ачаалсан ч болно. Ингэхээр гинжин хэлхээс шиг дүр зураг бууж байгаа биз.

Үйлдлийн систем болгонд ачаалагч програм байх бөгөөд эдгээр нь партишний эхний сектор дээрээс дуудагдаж, үйлдлийн системийн цөм хэсгийг эхлүүлнэ. Үйлдлийн систем ачаалагч болгонд тохиргооны файл бий.

Линуксийн хувьд grub, lilo гэж үйлдлийн систем ачаалагчид түгээмэл хэрэглэгддэг. grub -ийг авч үзье. Ер нь үйлдийн систем ачаалагчыг мастер бүүт дээр аль болох суулгахгүйгээр, тухайн партишн дээр нь суулгавал зүгээр. Ингэснээр дараа нь мастер бүүт дээр өөр ачаалагч суулгахад эрх чөлөөтэй болно. Үүний тулд үйлдлийн систем ачаалагчаа хуулж авах хэрэгтэй. Хуулж аваагүй тохиолдолд, линуксаа логик партишн дээр суулгачихсан бол линукс руугаа дахин орж болохгүй л болчих болов уу. Линукс маань мастер хатуу дискний 2-р партишн дээр суусан гэж үзвэл доорх командаар ачаалагчийг хуулж авч болно.

dd if=/dev/hda2 of=/mnt/usb/linux.bin bs=512 count=1

Windows NT төрлийн үйлдлийн системийг ачаалагч нь NT Loader гэж програм байдаг. Энэ програмын тохиргооны файл нь boot.ini гэж файл бий. Түрүүн хуулж авсан файлаа С дискэн дээр хуулаад C:\linux.bin="Linux" гэсэн мөрийг boot.ini файлд нэмж өгвөл бид линукс руугаа орох боломжтой болно. Мэдээж Виндовс байгаа партишнийг идэвхтэй(active partition) гэж үзэв.

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP" /noexecute=optin /fastdetect
C:\linux.bin="Linux"

Хэрэв линуксийн партишн нь идэвхтэй бол Линуксийн ачаалагч дээрээ Виндовсийг тохируулж өгнө. grub -ийн тохиргоо нь /boot/grub/menu.lst файлд байна. Дараах мөрүүдийг menu.lst файлд нэмж өгнө.

title Windows XP
root (hd0,3)
makeactive
chainloader +1

Энд нэг анхаарах зүйл бол хатуу дискний нэрлэлт юм. grub дээр хатуу дискүүд hd0(master harddisk), hd1(slave harddisk) гэх мэт нэрлэгдээд, партишнууд нь (hd0, 3) гэх мэтээр илэрхийлэгдэнэ. (hd0, 3) гэдэг нь мастер хатуу дискний 4 дэх партишнийг илэрхийлнэ. Хэрэв линуксийг мастер хатуу дискэн дээр, виндовсыг дэд(slave) хатуу дискэн дээр суулгасан бол grub дээр нилээд юм бичиж өгөх хэрэгтэй, учир нь виндовс бол мастер хатуу дискэн дээрээс л ажиллана гэсэн амбицтай үйлдлийн систем юм.

title           Windows XP
root            (hd1,0)
savedefault
makeactive
map             (hd0) (hd1)
map             (hd1) (hd0)
chainloader     +1

Энд map гэдэг командаар виндовсыг "зальдаж" байна.

FreeBSD дээр партишнийг slice -гэдэг. slice нь дотроо label-уудтай. label нь логик партишнтэй төстэй гэж ойлгож болно. FreeBSD суулгахын тулд нэг primary партишний нөөц хэрэгтэй. Хатуу дискэн дээрээ ямар ч партишнгүй хоосон зай үлдээж байгаад суулгана. Ингэхэд мастер бүүт бичлэг дээр нэг ширхэг primary партишн нэмэгдсэн байх ба тэр нь FreeBSD ийн slice юм. BSD -ийн ачаалагчыг мөн мастер бүүт дээр эсвэл өөрийнх нь slice дээр суулгаж болно. Ер нь бол slice дээр нь суулгах нь илүү уян хатан гэж зөвлөх байна.

Эх сурвалжууд: