Mark-Jason Dominus on Thu, 4 Nov 1999 17:24:26 -0500 (EST)


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[Plug] That idiotic cylinder 1024 problem


If you try to use LILO to install a boot block, it sometimes says

	geo_comp_addr: Cylinder number is too big (<number> > 1023)    

That means that part of your /vmlinux file is stored in a block that is
on the wrong part of the disk, and the BIOS will not be able to load
the /vmlinux at boot time.  

What can you do about this?  Basically, nothing.  The helpful
documentation helpfully says

	Try moving the file to a different place, preferably a
	partition that is entirely within the first 1024 cylinders of
	the disk.

Now how are you supposed to do that?  If you knew about this in
advance, you already have a disk partition at the front of your disk
which is no more than 1024 cylinders.  But in that case you don't get
this error message in the first place.  But you did get it; what do
you do now?  

Well, you can go onto IRC and ask for advice and listen to someone
tell you that you should have studied the docmuentation more carefully
before you began.  When I become Emperor, those people will live in
the oubliette.

Let's see, what else? I guess you can dump all your files to tape an
repartition your entire hard disk and then try to figure out how to
hook the two partitions together to get the same file structure you
had before.  Maybe next time you won't be foolish enough to dare to
try to boot from a disk with more than 1024 cylinders.

I ran into this problem last week, but I was lucky.  I had just bought
a new disk and I could partition it any way I wanted to.  So I got
around it by making a little tiny partition on the new disk, with only
32 cylinders and nothing on it but the kernel files and the boot
stuff.  I mount the little partition on /boot.  If I had not happened
to have just gotten back from the store with a new disk, I would have
been entirely hosed.  And what a stupid thing to have to do anyway.
At the PLUG meeting yesterday I was amazed.  Someone told me that this
stupidity is a *recommended configuration*.  

I had planned to ask about the 1024 cylinder thing yesterday when I
got to the meeting.  I didn't have to.  A whole lot of people were
talking about it when I got there.  Today Adam told me about someone
who can only boot his Debian system from floppy because his vmlinux is
in the wrong place.

I think I've solved this problem.  I wrote a program that locates some
`good' blocks (the ones on cylinders 0-1023) on your boot disk and
copies your kernel file into them.   

I tried it out.  It worked just fine for me.  My four kernel images
are all bootable now, and I don't need the mini-partition.

I have not tested this program adequately.  It is very difficult to
exercise all the code paths for this program.  I cannot guarantee that
it won't do something terrible.  It might corrupt your vmlinux file.
It might decide that there are some good blocks in /bin/bash and that
it is going to reclaim them, and accidentally corrupt or erase your
/bin/bash.  There are probably the worst case-scenarios.  I will keep
working on this, but I would like some brave volunteers to help me
with it.  I thought there might be some people on this list with
unbootable systems who would want to give it a try in spite of the
risk.

The prototype of the program is in Perl.  I have a C version under
construction but I may abandon it because the prototype is working
well enough.  Access to a C compiler is desirable, however, because
the program uses the C compiler to get some configuration information
that it needs.

If you are desperate enough to want to try out this useful but risky
and untested program, send me mail.  It is named `soliloquy', and you
should send me mail at mjd-plug-soliloquy@plover.com.

Mark-Jason Dominus 	  			               mjd@plover.com

_______________________________________________
Plug maillist  -  Plug@lists.nothinbut.net
http://lists.nothinbut.net/mail/listinfo/plug