Showing posts with label grub. Show all posts
Showing posts with label grub. Show all posts

Thursday, December 27, 2007

GRUB Splash Image HowTo

http://forums.fedoraforum.org/showthread.php?t=1243
http://ruslug.rutgers.edu/~mcgrof/grub-images/
http://gentoo-wiki.com/HOWTO_Splash_image_in_GRUB

Instructions

Requirements for GRUB splashimages:

1. xpm.gz file type
2. 640x480
3. 14 colors only

If you already have your image:

1. Gzip your xpm file and put it into your /boot/grub directory (as root)
Code:
# gzip myfile.xpm

2. Edit your grub.conf file
Code:
# nano /boot/grub/grub.conf

and add this line:
splashimage=(hd0,0)/GRUB/myfile.xpm.gz
NOTE Change the partition and directory according to your system's setup.
3. reboot

How to convert an image to only 14 colors
To get the GIMP to use only a 14 color palette, right click on your file and press ALT+I and put 14 where it says "Generate Optimal Palette:" on the top of the menu. If ALT+I doesn't get you there then right click on the image and go to:

Image-->Mode-->Indexed

Specify you want 14 colors and then if you want (*recommended*) select NO DITHERING. This will tell the gimp not to try to guess colors in between areas.

It does not have to be filename.xpm.gz only, but, compressed files load quicker that uncompressed files.

You can also change the foreground and background color of the menu, like this:
Just put something like the following in your menu.lst file:
foreground = ffffff (for text color)
background = 000000 (for background color)

Colors:
ffffff = white
000000 = black
333333 = cyan dark
666666 = cyan light

View images of currently available splashimages

Download working publically available GRUB splash images

------------------------------------------
The complete GRUB Splash Image Howto is here

Good Luck !!!
___________________________
Greetings
gonzalo


===================

Introduction

The splash image is the image shown in the background when GRUB is displaying the list of operating systems you can boot. All you need to customize it is the GIMP or Imagemagick. You will need to make sure your GRUB supports the splashimage command. I took image from gentoo.org and cut a little for the GRUB background.

Creating image (GIMP)

1. Start the GIMP.
2. Click on File » New or type Ctrl+n
3. In the new image dialog, change Width to 640 pixels and Height to 480 pixels (the image should be of size 640x480 pixels). Now click OK.
4. Create the image which you would like to be the splash image. It's quite fun to experiment with the various tools of the GIMP!
5. After you have finished creating the image, hit Alt+i or right click on the image and click on Image » Mode » Indexed.
6. In the Indexed Color Conversion dialog that appears, click on the radio button Generate optimal Palette and in # of colors enter 14. Click OK (the image should be of only 14 colors).
7. Now right-click on the image and click on File » Save As.... Save the file as ImageName.xpm in a directory of your choice. If you can't create ImageName.xpm you can save it as ImageName.png and then convert it with convert ImageName.png ImageName.xpm (convert is a part of imagemagick).
8. Open a terminal, change directory to where the ImageName.xpm was saved, then compress it using GNU-zip: gzip ImageName.xpm

But be careful if you create you work with GIMP under Windows. It will use the standard Windows newline CR+LF. Nethertheless it seems as if GRUB can only cope with plain LF newlines. You have to convert the lineformat manually.

Creating image (Imagemagick)

You can also pick an image (any type supported by ImageMagick) and execute:

convert picture.jpg -resize 640x480! -colors 14 -depth 8 ImageName.xpm.gz

Installing the Image

Make sure you are root, then run the following in the terminal:

# mount /boot
# mv ImageName.xpm.gz /boot/grub/


In the /boot/grub/grub.conf you have to point splashimage to newly created image i.e.:
File: /boot/grub/grub.conf

# Splash Image
splashimage=(hd0,0)/grub/ImageName.xpm.gz

If your boot splash did not change,then try the following:

# cp ImageName.xpm.gz /boot/grub/splash.xpm.gz

That's it! When you reboot, you will find your image in the background, with the menu of operating systems etc. in the foreground.
Changing text colors

If you do not like the look of the default text settings (white text with black shadow and highlighting) or it turns out to be hard to read with your splashimage even though the color command wont work, there is a way to modify these. Use the command foreground to edit the text and border color background will do for the shadows and highlighted background of the selected item.
File: /boot/grub/grub.conf

# Set text color to RRGGBB
foreground RRGGBB

# Set shadows and selected highlight to RRGGBB
background RRGGBB

RRGGBB must be a HEX-Colorcode, i.e. numbers 0-9 and letters A-F, each group of two representing a color. You can either try it out (R means red, G means green, B means blue, so the range from 00 to FF allows you to address a range of 0 to 255 for each color that will then be combined with those of the others to make up the color you chose) or (more conveniently ;-) copy the 6-digit code that e.g. the KDE or GIMP color choosers provide.
Credits

* Some splash images
* Some more splash images
* Even more splash images
* ImageMagick Tricks book

Wednesday, January 24, 2007

Dual boot Linux-Windows (Leaving MBR untouched)

Disclaimer: This document is provided "as is" without warranty. Use at your own risk. In no event shall I be liable for any damage resulting from the use of this work.

This HOWTO applies if:

  • Your machine already has Windows installed, and you are installing Linux as a second operating system, and
  • You want to leave the Windows boot loader (NTLDR) on the MBR (Master Boot Record). This allows you to continue to boot Windows with no issues. I've heard that Windows 2000/Windows XP or anti-virus software may complain if the MBR does not contain the Windows boot loader

You can use either GRUB or LILO to dual-boot Windows 2000/Windows XP and Linux. Both functionally work fine, but from what I've read, GRUB requires less maintenance, as LILO requires you to reinstall the boot loader (by running /sbin/lilo) every time you rebuild the kernel or make changes to /etc/lilo.conf.

Requirements for /boot Partition

The location of the /boot partition on the hard drive is critical so that you don't get screwed by the infamous BIOS 1024 cylinder limit. The BIOS of older systems can't access data beyond cylinder 1024, which is ~8.5 GB. A simple way to avoid the BIOS 1024 limit is to create /boot within the first 1024 cylinders (~8.5 GB) of the hard drive. If you have multiple hard drives (disks), /boot must be on the same hard drive (probably the first hard drive) that has the Windows boot loader (NTLDR) on the MBR.

Here are some options for where to create /boot partition.

  1. (What I did) Shrink the Windows partition such that there is 50 MB of unused disk space at the beginning of the drive and lots of space after the Windows partition. You can install the /boot Linux partition in this first 50 MB and avoid any potential issues with the 1024-cylinder limit entirely.
  2. Shrink the Windows partition such that it does not cross the 1024 cylinder (~8.5 GB), and install the /boot partition right after the Windows partition.
  3. Use LBA (Logical Block Addressing). LBA allows you to boot beyond the 1024 cylinder. In order to use LBA, your BIOS must support it. In addition, for LILO, you must also add a flag to enable LBA support. GRUB supports LBA "out-of-the-box"

To non-destructively shrink the Windows partition, you can use the free software program fips (please note that fips does not currently support NTFS partitions). Another option is the excellent commercial product Partition Magic. It has an easy-to-use GUI. Unfortunately, the tool that comes with Red Hat 7.2, Disk Druid, does not have the ability to shrink existing partitions. Once you've shrunk the Windows partition, you can use Disk Druid during the Red Hat Installation to create all the partitions you need for Linux.

Dual-Boot Setup

Following are the steps to get dual-boot working with GRUB; I figured out how to do this by looking at a similar procedure for LILO. I've verified that this works for Windows 2000 and Windows XP, and this should work on Windows NT (all 3 OSs use the same booting architecture).

  1. Install GRUB on the first sector of the /boot partition. DO NOT INSTALL IT ON THE MBR!.
    If you are performing the Red Hat installation, for the "Boot Loader Installation" screen:
    • Select "Use GRUB as the boot loader"
    • Select Install Boot Loader record on "...First sector of boot partition".
    • After finishing the Red Hat installation, reboot into Linux. If you don't have a boot disk, try booting in linux rescue mode
    If you already have Linux installed:
    • Run the following command (e.g. assuming /boot is /dev/hda2): grub-install /dev/hda2.
      If you don't know which partition contains /boot, run the df command and check the output.
    • Edit /etc/grub.conf and make sure there is an entry for your version of Windows. For reference, here is a copy of my /etc/grub.conf file.
  2. Determine which partition contains the /boot partition by running the df command. You'll see output like this:
    Filesystem           1k-blocks      Used Available Use% Mounted on
    /dev/hda3 8665372 1639580 6585612 20% /
    /dev/hda2 46636 5959 38269 14% /boot
    /dev/hda6 513776 189504 324272 37% /osshare
    none 256624 0 256624 0% /dev/shm
    From this output, we see that /boot is on /dev/hda2.
  3. Make a copy of the Linux boot sector onto a floppy or onto a FAT32 partition. We'll name this copy linux.bin.
    To make a copy onto a floppy:
    • Mount the floppy drive if it's not mounted (assumes /mnt/floppy exists): mount -t msdos /dev/fd0 /mnt/floppy
    • Run the following command: dd if=/dev/hda2 of=/mnt/floppy/linux.bin bs=512 count=1
      Substitute the path for the if= parameter (the input file) with the appropriate partition from the previous step. E.g., set if= to /dev/hda2.
    To make a copy onto a FAT32 (vfat) partition:
    • Mount the FAT32 partition if it's not mounted yet. If it isn't listed in the df output, it hasn't been mounted yet. Check out steps 3a-3c for mounting a FAT32 partition on the "Share Partitions HOWTO".
    • Run the following command: dd if=/dev/hda2 of=/osshare/linux.bin bs=512 count=1
      Substitute the path for the if= parameter (the input file) with the appropriate partition from the previous step. E.g., set if= to /dev/hda2. Substitute the path for the of= parameter (the output file) with whatever is appropriate for your system. The example here (of=/osshare/linux.bin) is for copying onto a FAT32 partition called osshare.
  4. Reboot into Windows
  5. Copy the linux.bin file to C:\
  6. Run notepad and edit C:\boot.ini. Note that C:\boot.ini is a hidden system file, so it probably won't show up in Windows Explorer. To edit the file, try: Start->Run and enter: notepad C:\boot.ini. Add the following line at the end: c:\linux.bin="Linux"
    If your C: filesystem is NTFS (not FAT32), you must edit C:\boot.ini as a user with administrator-level privileges.
    To make C:\boot.ini writable, you can either :
    • Use Explorer:
      • Go to Tools->Folder Options->View and select Show hidden files and folders and deselect Hide protected operating system files (Recommended).
      • Right-click on the file, view the Properties and uncheck Read-only. You can now edit the file.
      • After editing the file, restore the settings to their original state.
    • Use the command-line:
      • Make the file writable: attrib -R -S -H C:\boot.ini.
      • After you've finished editing the file, put the settings back: attrib +R +S +H C:\boot.ini
    For reference, here is a copy of my boot.ini file.
  7. Reboot again. You should be able to pick either Windows or Linux. Selecting Linux will start GRUB

Troubleshooting

  • When I select Linux from the boot menu, I get a frozen "GRUB" (or an "L" in the case of LILO)
  • Make sure you created the linux.bin file correctly with the dd command. If you think you ran the command correctly, the problem may be that your /boot partition is beyond cylinder 1024 and your BIOS can't reach it. At system startup, the Windows boot loader lists the choices from boot.ini. When you select Linux, the boot loader then loads the 512-byte linux.bin file, and then BIOS tries to access the /boot partition to run GRUB. Some BIOS implementations can only address the first 1024 cylinders of a hard drive, which corresponds to ~8.5 GB. How do you fix this? Create your /boot partition before cylinder 1024; i.e. before ~8.5 GB.
  • If I select Linux from the boot menu, I get an error message that says "Windows XP could not load: The file hal.dll (windows/system32/) is missing or corrupt. Please reinstall.
  • This is usually caused by an error in the boot.ini file. If you are unable to find and fix the error, check out Kelly Theriot's page that provides various methods for addressing the problem.

Acknowledgments

  • Jimmy Andriambao: for recommending the link regarding hal.dll problems
  • Leif Roger Kolberg: for creating a Norwegian translation of this page
  • Dirk Goepfert: for creating a German translation of this page
  • Fred van Lieshout: for creating a Dutch translation of this page
  • Rostislav "Udo" Galicek: for creating a Czech translation of this page
  • Arun Swami: for validating the dual-boot setup with multiple hard drives. Thanks Arun!
  • Adrián I. Correa: for enthusiastically providing a Spanish translation of this page. Adrián said it best: "I love this wonder called The Internet!"
  • Devesh Mistry: for pointing out the use of chroot /mnt/sys/mnt/syimage when in linux rescue mode
  • Emmanuel Brun: for graciously providing a French translation of this page
  • Jason Noll: for reporting the hal.dll problem resulting from error(s) in boot.ini
  • Garth Patil: for helping to troubleshoot why GRUB was freezing and having a great sense of humor
  • Piete Brooks: for pointing out that editing C:\boot.ini requires administrator-level privileges and providing the content for making the file editable using Explorer
  • Paul Feehan: for providing the commands to make C:\boot.ini editable for Windows XP
  • Jan Holm Jensen: for reporting that C:\boot.ini is a hidden system file
  • Hampus Hedberg Hankell: for the following suggestion:
    I think you should add help for users in despair that already have installed grub on mbr ,thus loosing the their ability to boot into windows xp. Procedure for this is ,boot from a windows start disc and do a fdisk /mbr At least then they can reach their windows and this time doing it right
  • Mark Jordan: for verifying that this works on Windows XP and suggesting the content for copy to floppy
  • Darryl Eaton: for introducting me to Red Hat Linux

If you are interested in creating a translation of this page, please read the translation policy.