Grub
Grub 2
- prepare a filesystem (or a pendrive, for that you could follow Bootable_pendrive)
Install
For BIOS partition table (MBR)
- note, first you needs i386 grub modules
apt-get install grub-pc-bin
- then, you can use grub-install to setup grub (and a list of pre-loaded modules) in your bootable drive
WARNING! the pendrive device name on your computer will be different, in this example /dev/sdX is used for the main device and /dev/sdX2 for the grup partition, change them accordingly with your ones!
mkdir /tmp/sdX2 mount /dev/sdX2 /tmp/sdX2 grub-install --target=i386-pc --boot-directory=/tmp/sdX2/boot --modules "part_msdos part_gpt part_apple ntfs ntfscomp hfsplus fat ext2 xfs reiserfs iso9660 udf loopback normal chain boot configfile linux multiboot iorw gfxterm font all_video gettext search" /dev/sdX # note, you can add a custom (bigger?) font for grub, example grub-mkfont -s 16 -o /tmp/sdX2/boot/grub/dv.pf2 /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf umount /tmp/sdX2 rmdir /tmp/sdX2
For GUID partition table (GPT)
- note, first you needs efi-amd64 grub modules
apt-get install grub-efi-amd64-bin
- then, you can use grub-mkimage to setup grub (and a list of pre-loaded modules) in your bootable drive
WARNING! the pendrive device name on your computer will be different, in this example /dev/sdX is used for the main device and /dev/sdX2 for the grup partition, change them accordingly with your ones!
mkdir /tmp/sdX2 mount /dev/sdX2 /tmp/sdX2 mkdir -p /tmp/sdX2/EFI/boot grub-mkimage --format x86_64-efi --prefix "/EFI/boot" --output /tmp/sdX2/EFI/boot/bootx64.efi part_msdos part_gpt part_apple ntfs ntfscomp hfsplus fat ext2 xfs reiserfs iso9660 udf loopback normal chain boot configfile linux multiboot iorw gfxterm font all_video gettext search # note, you can add a custom (bigger?) font for grub, example grub-mkfont -s 32 -o /tmp/sdX2/EFI/boot/dv.pf2 /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf umount /tmp/sdX2 rmdir /tmp/sdX2
Configuration
Create a new config file in the bootloader partition, eg
- for MBR: /tmp/sdX2/boot/grub/grub.cfg
- for GPT: /tmp/sdX2/EFI/boot/grub.cfg
set timeout=10 set default=0 set menu_color_normal=white/black set menu_color_highlight=black/light-gray insmod all_video if loadfont "$prefix/dv.pf2" ; then set gfxmode=640x480x16,auto set gfxpayload=keep load_video insmod gfxterm insmod gettext fi terminal_output gfxterm if [ -e "$prefix/menu.cfg" ]; then configfile "$prefix/menu.cfg" fi
Now you can customize this config file, for instance adding a menu, or better, you can add a menu in a menu.cfg file in the same path of the grub.cfg file.
Grub Legacy (v 0.x)
Install
[root@host ~]$ grub grub> help install install: install [--stage2=STAGE2_FILE] [--force-lba] STAGE1 [d] DEVICE STAGE2 [ADDR] [p] [CONFIG_FILE] [REAL_CONFIG_FILE] Install STAGE1 on DEVICE, and install a blocklist for loading STAGE2 as a Stage 2. If the option `d' is present, the Stage 1 will always look for the disk where STAGE2 was installed, rather than using the booting drive. The Stage 2 will be loaded at address ADDR, which will be determined automatically if you don't specify it. If the option `p' or CONFIG_FILE is present, then the first block of Stage 2 is patched with new values of the partition and name of the configuration file used by the true Stage 2 (for a Stage 1.5, this is the name of the true Stage 2) at boot time. If STAGE2 is a Stage 1.5 and REAL_CONFIG_FILE is present, then the Stage 2 CONFIG_FILE is patched with the configuration filename REAL_CONFIG_FILE. If the option `--force-lba' is specified, disable some sanity checks for LBA mode. If the option `--stage2' is specified, rewrite the Stage 2 via your OS's filesystem instead of the raw device. grub>
install file_stage1 [d] disco_di_avvio file_stage2 [p] [file_di_configurazione]
Questa è la sintassi già mostrata per il comando install. Si tratta di una forma semplificata rispetto a quella reale, che è sufficiente nelle situazioni più comuni. L'opzione d serve a stabilire la collocazione del file stage2 nel disco e nella partizione indicati, senza una relazione con il disco di avvio; l'opzione p è necessaria quasi sempre e serve a richiedere una serie di modifiche al file stage2 e anche al settore di avvio. Si veda eventualmente la documentazione originale per un dettaglio maggiore nell'uso di questo comando.
example:
- install (hd0,6)/grub/stage1 d (hd0) (hd0,6)/grub/stage2 p (hd0,6)/grub/menu.lst
- write the "install partition" number into the first sector of the stage2 (the "p" at the end)
install= (hd0,2)/boot/grub/stage1 (hd1) (hd1,a)/boot/grub/stage2 0x8000 p /grubdir/configfile
Installare Grub in in pendrive USB
# dopo aver creato una partizione e formattato la stessa, # monto la partizione, copio componenti di Grub e smonto [root@host ~]$ mount /dev/sdd1 /mnt/usb [root@host ~]$ mkdir /mnt/grub [root@host ~]$ cp -a /usr/lib/grub/i386-pc/* /mnt/usb/grub [root@host ~]$ umount /dev/sdd1 # avvio grub [root@host ~]$ grub # indico come radice la partizione del device dove ho copiato grub grub> root (hd3,0) Filesystem type is ext2fs, partition type 0x83 # installo i componenti di Grub nel device grub> install /grub/stage1 (hd3) /grub/stage2 p /grub/menu.lst # fine grub> quit
Installare Grub in una immagine su file
# CREO L'IMMAGINE [root@host ~]$ dd if=/dev/zero of=grub-initrd.raw bs=1024 count=2880 # FORMATTO L'IMMAGINE [root@host ~]$ mkfs.ext3 -cFq -m0 grub-initrd.raw # MONTO L'IMMAGINE [root@host ~]$ mount -o loop grub-initrd.raw tmp/ # CREO NELL'IMMAGINE LA CARTELLA PER GRUB [root@host ~]$ mkdir -p tmp/boot/grub # COPIO NELL'IMMAGINE I FILES DI GRUB [root@host ~]$ cp /usr/share/grub/i386-pc/* tmp/boot/grub/ # SMONTO L'IMMAGINE DA DOVE L'AVEVO MONTATA [root@host ~]$ umount tmp NON SO PERCHE' MA FORSE SE IL PERCORSO E' TROPPO LUNGO IL COMANDO device DI GRUB NON FUNZIONA # DUNQUE SPOSTO L'IMMAGINE APPENA CREATA SULLA DIRECTORY RADICE [root@host ~]$ mv grub-initrd.raw / # AVVIO IL BINARIO DI GRUB PER LINUX [root@host ~]$ grub Probing devices to guess BIOS drives. This may take a long time. GNU GRUB version 0.94 (640K lower / 3072K upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ] # MONTO LA MIA DIRECTORY RADICE grub> root (hd0,7) Filesystem type is ext2fs, partition type 0x83 # DICO A GRUB DI CONSIDERARE LA MIA IMMAGINE COME IL DEVICE (fd1) grub> device (fd1) /grub-initrd.raw # INSTALLO GLI STAGES DI GRUB NELL FINTO DEVICE grub> install (fd1)/boot/grub/stage1 d (fd1) (fd1)/boot/grub/stage2 p (fd1)/boot/grub/menu.lst # ESCO grub> quit # FINE [root@host ~]$ mv /grub-initrd.raw ./ [root@host ~]$