Упатство:Конфигурирање и употреба на GRUB

Од Сподели wiki
Прејди на прегледникот Прејди на пребарувањето

Кога се вклучува компјутерот BIOS-oт ја пронаоѓа примарната активна партиција обично на тврдиот диск. Потоа контролата ја превзема MBR (Master Boot Record), првите 512 бајти од дискот.

MBR ја содржи првата фаза од GRUB. Тој само ја вклучува втората фаза која може да се наоѓа каде и да е на дискот. Кога втората фаза се повикува, таа дава интерфејс со кој може да се избере оперативен систем за да се вклучи. Ова е обично формата со графичко мени, меѓутоа, GRUB има командна линија во која корисникот може сам да внесе параметри за стартување. Може да се намести и тајмер, време за кое избраната слика ќе се вклучи.

Откога ќе биде избрана слика, GRUB го внесува јадрото во меморијата и му ја предава контролата нему.

Инсталација

Откако ќе извршите промени во конфигурацијата, GRUB нема потреба да се преинсталира. Неговите конфигурациони датотеки се наоѓаат на партицијата што се користи, а ако не може да се пронајдат, првата фаза го префрла корисникот на командната линија.

Името и локацијата на дискот на GRUB конфигурационите датотеки варираат од систем до систем. На пр., во Debian GNU/Linux и OpenSUSE датотеката е во /boot/grub/menu.lst, додека во Fedora Core во /boot/grub/grub.conf. Fedora исто така додава и врска до /etc/grub.conf. GRUB, наместо да биде инсталиран на тврдиот диск, може да се инсталира и на преносен медиум како оптички диск, дискета или USB flash меморија со цел да се стартува систем кој не може да се вклучи од самиот диск. GRUB командна линија

Што апсолутно мора да се знае за да може едно јадро да се вклучи:

  1. Партицијата каде се наоѓа јадрото
  2. Неговата локација на таа партиција
  3. Дали партицијата ја има програмата /sbin/init

Дополнително, може да биде потребно да се знае адресата на initrd датотеката, но обично не е неопходно.

Покренување од една партиција

Систем во кој сликата од кернелот се наоѓа во /boot, името е vmlinuz-i686-up-4GB, а /dev/hda1 e самата партиција:

grub> root (hd0,0)
grub> kernel /boot/vmlinuz-i686-up-4GB root=/dev/hda1
grub> boot

Пребарување со GRUB

Често ја знаеме партицијата на која е инсталиран GRUB, кернелот и потребните партиции за монтирање. Меѓутоа, понекогаш може да се направат грешки. Нешто се измешало со LILO, или некој инсталирал Windows по грешка, па го презапишал МBR... Тогаш GRUB ни е најпотребен.

Првиот чекор е да се пронајде партицијата која го содржи /sbin/init. Потоа го пишувате следното во grub> командната линија:

find /sbin/init

На машина со инсталирани три GNU/Linux оперативни системи, би се појавило нешто како ова:

 grub> find /sbin/init
   (hd0,8)
   (hd0,11)
   (hd1,11)
 grub>

Беа пронајден трите партиции со системот, што го содржат /sbin/init:

 (hd0,8)
  /dev/hda9
 (hd0,11)
  /dev/hda12
 (hd1,11)
  /dev/hde12

Следно, ги пронаоѓате сите партиции кои содржат кернел:

 grub> find /vmlinuz
  (hd0,0)
  (hd0,11)
  (hd1,11)
 grub>

Потоа пребарувате во директориумот /boot:

 grub> find /boot/vmlinuz
  (hd0,11)
  (hd1,11)
 grub>

Функцијата find е ограничена, бидејќи може да пребарува само датотеки, а не и директориуми. Друга помош во grub> e Таb, кој врши надополнување на командите и зборовите.

Создавање на GRUB дискета за покренување

Ова може да се прави на секоја GNU/Linux дистрибуција на која има инсталирано GRUB. Претпоставуваме дека дискетата е без податочен систем.

 # mkfs -t ext2 -c /dev/fd0u1440
 # umount /dev/fd0
 # umount /dev/fd0u1440
 # mkdir /mnt/test
 # mount /dev/fd0u1440 /mnt/test
 # mkdir -p /mnt/test/boot/grub
 # cp /boot/grub/stage1 /mnt/test/boot/grub
 # cp /boot/grub/stage2 /mnt/test/boot/grub
 # chmod a-w /mnt/test/boot/grub/stage2
 # umount /dev/fd0u1440
 # grub
 
 grub> root (fd0)
 grub> setup (fd0)
 grub> quit

На дискетата мора да се додаде и menu.lst, која би користела за GRUB мени. Напомена: menu.lst не се става на дискетата пред сите овие чекори. Mount и umount мора да се применуваат. Еве како да се стави menu.lst:

 # mount /dev/fd0u1440 /mnt/test
 # cp -p /usr/share/doc/grub-doc-0.93/menu.lst /mnt/test/boot/grub/

stage1 stage2

 # cp -p /usr/share/doc/grub-doc-0.93/menu.lst /mnt/test/boot/grub/menu.lst.example
 # umount /dev/fd0u1440
 #

Инсталирање на GRUB од дискета

Не правете го инсталирањето пред претходните чекори успешно да завршат. Ставете ја дискетата во уредот и вклучете го компјутерот. Наместете во BIOS да побара boot-ирање од дискета. Основните процедури се:

  1. Пуштете го системот од дискетата
  2. Копирајте ги датотеките од /boot/grub од дискетата на тврдиот диск
  3. Конфигурирајте го /boot/grub/menu.lst за овој компјутер
  4. Инсталирајте GRUB и рестартирајте го компјутерот

Стартување од GRUB дискетата

 grub> root (hd0,0)
 grub> kernel /vmlinuz-i686-up-4GB root=/dev/hda9
 grub> boot

На крајот од вториот ред може да се додаде lang= и јазикот на кој сакате да работите. Пр. lang=us

Копирање на датотеките од дискетата на тврдиот диск

Прво, осигурајте се дека не постои /boot/grub на тврдиот диск. Потоа:

 # mkdir /mnt/test
 # mount /dev/fd0u1440 /mnt/test
 # cp -Rp /mnt/test/boot/grub /boot

Конфигурирање на menu.lst

menu.lst ги содржи сите команди кои се внесуваат преку командната линија, само што не пишувате boot. Овде ќе ги внесете сите команди за стартување на кернелите или оперативни системи на Вашата машина, ќе дадете наслов како објаснение за секој од нив, ќе изберете позадина или боја и време на автоматско вклучување. Еве еден едноставен пример:

 # Boot automatically after 30 secs.
 timeout 30

# By default, boot the first entry. default 0

# For booting GNU/Linux title GNU/Linux root (hd0,0) kernel /boot/vmlinuz-2.6.7 root=/dev/hda1 lang=us

Објаснување:

  1. default 0 – покажува кој кернел или оперативен систем ќе се вклучи по истекувањето на timeout периодот
  2. lang= е непотребно, освен ако се стартува дистрибуција која работи со друг јазик
  3. root (hd0,0) треба да биде поставено да покажува на партицијата што го содржи кернелот
  4. root=/dev/hda1 покажува на партицијата која ќе биде монтирана како root после стартувањето. Ова е ГНУ/Линукс, а не GRUB нотација
  5. /boot/vmlinuz-2.6.7 го покажува самиот кернел. Ако кернелот се наоѓа на друга локација, ова е местото каде што тоа треба да се каже

Рестартирање од дискетата и инсталирање GRUB

Ставете ја дискетата и ресетирајте. Кога ќе се прочита GRUB од дискетата, ќе бидете однесени на командната линија. Внесете:

 grub> root (hd0,0)
 grub> setup (hd0)
 grub> reboot

Компјутерот се рестартира уште еднаш, извадете ја дискетата и ќе го добиете мени за избор на дистрибуција. Во овој случај има само една. Додајте ги и другите кернели во menu.lst за да можете да ги вклучите на почетокот. Откако е инсталиран, нема потреба да се преинсталира за секоја промена која е направена. Изменете го menu.lst и внесете grub во конзолата, за да ги видите резултатите. Еве уште еден пример за menu.lst:

 # Boot automatically after 30 secs.
 timeout 30

# By default, boot the first entry. default 0

# Fallback to the second entry. fallback 1

# For booting GNU/Linux title 26 root (hd0,0) kernel /boot/vmlinuz-2.6.7 root=/dev/hda1 lang=us

# For booting GNU/Linux title 24 root (hd0,0) kernel /boot/vmlinuz-2.4.27 root=/dev/hda1 lang=us

Повикување на веќе инсталиран GRUB

Може и да се повика веќе инсталиран GRUB кој не може да се лоцира (презапишан MBR од друга инсталација)

Во терминалот од некоја жива дистрибуција, пронајдете го името на партицијата на која се наоѓа кернелот:

 # fdisk –l

Резултат од ова би бил, на пример:

 /dev/hda/host0/bus0/target0/lun0/part1

за IDE тврди дискови, или:

 /dev/scsi/host0/bus0/target0/lun0/part1

за SCSI дискови.

Направете директориум за оваа партиција и монтирајте ја:

 # mkdir /mydisk
 # mount /dev/hda/host0/bus0/target0/lun0/part1 /mydisk

Внесете:

 # chroot /mydisk

за директориумот да се однесува како root

 # grub-install /dev/hda

Ова ќе го преинсталира GRUB на Вашата партиција.

Внесете

 # exit

и рестартирајте го компјутерот.