One precondition to make clear:
My OS is a linux system and there is no Windows system installed on my PC.
There is no CD or USB with size of more than 2G. Now,
I'm gonna install new version of linux system via a iso file stored in my system, /opt/sys/iso/el5.5.iso.
Just make clear about grub and partition information about my PC.
[root@localhost ~]# fdisk -l
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 2611 20972826 83 Linux
/dev/sda2 2612 3133 4192965 82 Linux swap / Solaris
/dev/sda3 3134 14593 92052450 83 Linux
[root@localhost ~]#
as you see, there is no /boot partition on my pc. there are 3 partitions mounted when my OS is running.
from the * char, we know the /boot is contained in /, it's /dev/sda1
/dev/sda3, what's this? this is the /opt partition I made. from the following information, you will be quite aware of it.
and remember the label of / and /opt, and they are /1 and /opt.
[root@localhost ~]# more /etc/fstab
LABEL=/1 / ext3 defaults 1 1
LABEL=/opt /opt ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda2 swap swap defaults 0 0
[root@localhost ~]#
The following codes are the content of my /boot/grub/menu.lst
[root@localhost grub]# more menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/sda1
# initrd /boot/initrd-version.img
#boot=/dev/sda
default=0
timeout=3
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server 5.4 (2.6.18-164.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-164.el5 ro root=LABEL=/1 rhgb quiet
initrd /boot/initrd-2.6.18-164.el5.img
title Red Hat Enterprise Linux Server 5.5 (2.6.18-164.el5)
root (hd0,2)
kernel /ins/iso/isolinux/vmlinuz ro root=LABEL=/1 rhgb quiet
initrd /ins/iso/isolinux/initrd.img
[root@localhost grub]#
comments for Red Hat Enterprise Linux Server 5.5 (2.6.18-164.el5)
title Red H...: title command to show the title of this boot menu item. write whatever you want.
for example: title New Linux System to Install
root (hd0,2): root command, it sets the root for grub to locate the kernel, initrd and iso files.
kernel /ins...: kernel command, it sets the kernel file to load. vmlinuz file is extracted from iso file and be stored under /opt/ins/iso/isolinux/ directory. why did I store vmlinuz, initrd and iso on /opt partition? Answer is I want to format the / partition. If you want too, please store your iso file, vmlinuz file and initrd file on a partition that will not be formatted when you install the new system.
For the /opt is individual partition, so, write as these words please: /ins/iso/isolinux..... and not /opt/ins/iso/isolinux.... root=LABEL=/1, this is to set the linux system root for grub, not the root of grub when it load the vmlinuz and initrd file. this root is for system, not for grub. Of course, my root partition is denoted by /1 or /dev/sda1. you can write like this too: root=/dev/sda1. ro means "read only". rhgb and quiet are no need to know for this action. or you can refer to grub manual.
initrd /ins...: initrd command to set initrd file for loading. For the same reason of partition /opt, please write /ins/iso/isolinux..., not /opt/ins/...
OK, that's all. just reboot your system and choose the tile you given for title command.
Any question for "Installing Linux System from ISO File Stored on Hard Disk"?
Good luck.