1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
|
<!--startcut ======================================================= -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<META NAME="generator" CONTENT="lgazmail v1.3E.t">
<TITLE>The Answer Gang 65: Take a Breath!</TITLE>
</HEAD><BODY BGCOLOR="#FFFFFF" TEXT="#000000"
LINK="#3366FF" VLINK="#A000A0">
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<P> <hr>
<CENTER>
<!-- *** BEGIN navbar *** -->
<!-- *** END navbar *** -->
</CENTER>
</p>
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<center>
<H1><A NAME="answer">
<img src="../../gx/dennis/qbubble.gif" alt="(?)"
border="0" align="middle">
<font color="#B03060">The Answer Gang</font>
<img src="../../gx/dennis/bbubble.gif" alt="(!)"
border="0" align="middle">
</A></H1>
<BR>
<H4>By Jim Dennis, Ben Okopnik, Dan Wilder, Breen, Chris, and the Gang,
the Editors of Linux Gazette...
and You!
<br>Send questions (or interesting answers) to
<a href="mailto:linux-questions-only@ssc.com">linux-questions-only@ssc.com</a>
</H4>
<p><em><font color="#990000">There is no guarantee that your questions
here will <b>ever</b> be answered. You can be published anonymously
- just let us know!
</font></em></p>
</center>
<p><hr><p>
<!-- endcut ======================================================= -->
<!-- begin 22 -->
<H3 align="left"><img src="../../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Take a Breath!</H3>
<p><strong>From Wolf
</strong></p>
<p align="right"><strong>Answered By Jim Dennis, Heather Stern
<br></strong></p>
<!-- sig -->
<!-- ::
Take a Breath!
~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Answer Guy,
</STRONG></P>
<P><STRONG>
I just recently read that message from Rik, having trouble with
some bad clusters under Windows. Anyway, I used to run a Win98
system, and I experienced the same problems, even if they might not
be related to Rik's (just bad hardware or mis-partitioning, I
assume). I had my HD partitioned into one primary and one extended
partition, with approximately 20 gig each (HD is a Samsung 40.8
gig). Then, I used Partition Commander to make 4 out of the primary
partition: One FAT32 (14 gig), and 3 FAT16 (2 gig each); and on the
extended partition I put a 12 gig FAT32 and 8 gig for Linux,
pre-formatted with Partition Commander. Now I know, that Linux
doesn't like anything above 1024 cyl., but I always assumed, that
it's translated in such a way, that only 1024 are reported (or am I
wrong?). Installing Linux on that last partition was a bold
failure. First, I never got it to boot from the HD, no matter if I
used Loadlin or (tried) LILO, in the MBR or on the partition. When
it booted after the CD install, fsck found a load of errors, and
they all seemed to be beyond 32 gig. So I deleted the last
partition and reformatted it as FAT32, which seemed to succeed
without errors; even with bad clusters checking on. Letting a disk
utility have it's way with it later, revealed again a bunch of bad
clusters, and again. above the 32 gig limit. Not sure, if that's an
OS or a hard error? Right now, I'm going to low-level format and
re-partition the drive, then assign Linux all the space (this
version doesn't like partitions picked from the middle of the
drive). Hopefully it boots. Or the HD craps out altogether, there's
still warranty on it... Had anyone reporting similar stuff with a
big HD like mine is? Windoze is good for all kind of surprising
crap, but I need it for development...
</STRONG></P>
<P><STRONG>
Thx,
</STRONG></P>
<P><STRONG><DL><DT>
Wolf
</DL></STRONG></P>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Wolf, I promise, no one was going to interrupt you. [This whole
messages was all in one line of text!] Perhaps a few paragraph
breaks would have also helped.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Heh. The advantage of email is that folks can use paragraphs, commas
and periods - but still get their whole say before anyone <EM>gets</EM> to
interrupt.
</BLOCKQUOTE>
<BLOCKQUOTE>
To give the short form of the answer -- it's not an OS error at all.
Bootloaders come before the OS, whether DOS or Linux. It's a dependency
on firmware features - the BIOS on your system either does, or doesn't,
have 1024 cylinder problems. If your BIOS doesn't have the boundary, the
bootloader still has to make <EM>different</EM> calls to ask about later areas
of the disk, because this is a newer feature, and is tacked on to the
BIOS design.
</BLOCKQUOTE>
<BLOCKQUOTE>
I can just about guarantee that the final 8 Gb on a 40 Gb drive would
be above that boundary!
</BLOCKQUOTE>
<BLOCKQUOTE>
LILO has an old keyword to beat this boundary (linear) and a new way (LBA)
but this drive is so large you may need an even more special call (LBA32).
Linear basically asks for cylinder/head/sector stuff. The LBA flavors
tell LILO to make the new BIOS calls.
</BLOCKQUOTE>
<BLOCKQUOTE>
You mentioned the drive but not the motherboard - assuming it's modern
enough, I'd try the LBA32 keyword in <TT>/etc/lilo.conf.</TT> (On a line alone.)
If that doesn't work I'd probably use Loadlin, throw an icon for its
correct command line on my desktop (looking like Tux of course) and forget
worrying about it. Just remember to copy your kernel to the right place
on your FAT drive that loadlin expects, whenever you decide to update your
kernel.
</BLOCKQUOTE>
<BLOCKQUOTE>
Unfortunately, that you're seeing the drive poorly when the 8 Gb are FAT
partitioned or ext2 partitioned, implies that I may be wrong about how
modern it is. Or, the drive has memorized something poor about how to
present itself to us. (Yes, drives have had their own brains for a while,
that means they get to be artificially stupid sometimes too.) So, I'd
check if your motherboard manufacturer has a BIOS revision, because it
may help some. And during low level format I'd be really extra picky
about looking through the options, in case something leaps out as meaning
"My motherboard is so stupid I can't even see all 40 Gb. Just give me 32
of it. Thanks." Or as we'd say, ack! No thanks!
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I'm responding to your message to dispel the misconception that
you've repeated here.
</BLOCKQUOTE>
<BLOCKQUOTE>
Linux has no problem at all with anything past the 1024th cylinder.
The Linux kernel can handle any commodity drive.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
vmlinuz doesn't care, no more than Windows should care how big its C: is -
by the time you're this far, you're in protected mode, and not using the
BIOS directly anymore. It's fdisk that gets all the headaches.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
However, the <EM>bootloader</EM> (LILO) has traditionally been constrained
by the level of support offered by your system BIOS (or the lack
thereof). Once you get the Linux kernel "bootstrapped" (loaded into
memory and running) then it can easily handle just about any
arrangement of partitions. LILO has to ask the BIOS to locate and
load the specific device and blocks in which the kernel (and any
initial RAM disk) are stored. So the BIOS must support calls to
access these devices. If the BIOS only supports calls to handle
the first 1024 cylinders of a device (a common constraint several
years ago) then we have to locate the kernel (and our RAM disk)
within those 1024 cylinders. Alternatively we can use a different
bootloader (syslinux off of a floppy, or Zipdisk, etc; grub,
<TT>LOADLIN.EXE</TT>, etc).
</BLOCKQUOTE>
<BLOCKQUOTE>
Now over the years that have been several different workarounds
to this problem. First we note that SCSI drives have normally
not been afflicted with these limitations (since they don't
emulate the old WD-1003 controller interface; they have their
own BIOS extensions which provide the necessary support through
the "INT 13" calls). Also we note that this problem is specific
to the PC (so it's never been a problem on Macs, SPARCs or the
many other platforms that Linux supports).
</BLOCKQUOTE>
<BLOCKQUOTE>
Also most IDE drives, though they mostly emulate the ST-506
interface, mostly as implemented by Western Digital's old 1003
chipset; they will perform their own "autotranslation" internally
translating "virtual head" addresses into larger cylinder numbers.
Later these drives dropped all pretense of using cylinder/head/sector
(CHS) co-ordinates and used a technique called LBA (linear block
addressing). That basically means that any block request it gets
(which comes in the form of a cylinder/head/sector triplet) is
translated into a single number (multiple the three numbers in the
triplet together) and that is fetch according to the drive's own
indexing and mapping. BIOS' then started supporting LBA which
overcame the 8Gb limit.
</BLOCKQUOTE>
<BLOCKQUOTE>
Meanwhile the latest versions of LILO support the necessary BIOS
call extensions to boot from any cylinder on any IDE drive; so
long at the PC BIOS in question also supports the extension.
</BLOCKQUOTE>
<BLOCKQUOTE>
I've described alternatives to LILO <EM>MANY</EM> times in our column.
Since this is almost always an issue of installing Linux unto a
system that already has a copy of MS-DOS (or any of it's
ilk, Win '9x, OS/2, etc) then it's usually easiest to configure
you system to boot into MS-DOS and to run a program called
<TT>LOADLIN.EXE</TT> to load your Linux kernel. Because MS-DOS is
being booted from "the first" partition on the first or second
drive (the only supported configuration) and because it has
access to the "rest" of the drive (with it's device drivers, and
various Microsoft supplied extensions) then LOADLIN can load
any kernel that MS-DOS can "see."
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, this issue is old and obsolete. Please reconsider before
you repeat this misconception any further. This is not a "Linux"
problem. It is a PC problem which has been faced (and addressed)
by many Linux users *because Linux doesn't impose arbitrary
constraints on how you configure your filesystems*. Linux doesn't
make you install it in the first drive or the first partition,
etc. Unfortunately with the freedom has common the confusing
choices that have caused so many questions among Linux users.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Having choices available, means actually having to make choices. It's
a tough job sometimes but I vastly prefer it to the alternative.
</BLOCKQUOTE>
<BLOCKQUOTE>
This is the part where I rant about how if we improve the documentation
enough at least these can be <EM>informed</EM> choices.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
LILO and the related questions are confusing to converts from
MS-DOS and Windows, and they are just as confusing for old hand
UNIX users coming from RISC platforms, and for converts from
the old SCO and other PC UNIX platforms.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Yup. There are other bootloaders around too, which are easier for some
but each has their own new flavors of problem. And not all of them can
get over this 1024 thing, which is to say, they actually expect the BIOS
to be helpful. Can't always trust that. Welcome to the PC.
</BLOCKQUOTE>
<!-- end 22 -->
<!--startcut ======================================================= -->
<P> <hr> </p>
<!-- *** BEGIN copyright *** -->
<H5 align="center">This page edited and maintained by the Editors
of <I>Linux Gazette</I>
<a href="http://www.linuxgazette.com/copying.html"
>Copyright ©</a> 2001
<BR>Published in issue 65 of <I>Linux Gazette</I> April 2001</H5>
<H6 ALIGN="center">HTML script maintained by
<A HREF="mailto:star@starshine.org">Heather Stern</a> of
Starshine Technical Services,
<A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
</H6>
<!-- *** END copyright *** -->
<P> <hr>
<!-- begin tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::-->
<p align="center">
<table width="100%" border="0"><tr>
<td align="right" valign="center"
><IMG ALT="" SRC="../../gx/navbar/left.jpg"
WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="middle" border="0"
><A HREF="..//"
><IMG SRC="../../gx/navbar/toc.jpg" align="middle"
ALT="[ Table Of Contents ]" border="0"></A
><A HREF="../lg_answer65.html"
><IMG SRC="../../gx/dennis/answertoc.jpg" align="middle"
ALT="[ Answer Guy Current Index ]" border="0"></A></td>
<td align="center" valign="center"><A HREF="../lg_answer65.html#greeting"><img align="middle"
src="../../gx/dennis/smily.gif" alt="greetings" border="0"></A>
<A HREF="1.html">1</A>
<A HREF="2.html">2</A>
<A HREF="3.html">3</A>
<A HREF="4.html">4</A>
<A HREF="5.html">5</A>
<A HREF="6.html">6</A>
<A HREF="7.html">7</A>
<A HREF="8.html">8</A>
<A HREF="9.html">9</A>
<A HREF="10.html">10</A>
<A HREF="11.html">11</A>
<A HREF="12.html">12</A>
<A HREF="13.html">13</A>
<A HREF="14.html">14</A>
<A HREF="15.html">15</A>
<A HREF="16.html">16</A>
<A HREF="17.html">17</A>
<A HREF="18.html">18</A>
<A HREF="19.html">19</A>
<A HREF="20.html">20</A>
<A HREF="21.html">21</A>
<A HREF="22.html">22</A>
<A HREF="23.html">23</A>
<A HREF="24.html">24</A>
<A HREF="25.html">25</A>
<A HREF="26.html">26</A>
<A HREF="27.html">27</A>
<A HREF="28.html">28</A>
<A HREF="29.html">29</A></td>
<td align="left" valign="center"><A HREF="../../tag/kb.html"
><IMG SRC="../../gx/dennis/answerpast.jpg" align="middle"
ALT="[ Index of Past Answers ]" border="0"></A
><IMG ALT="" SRC="../../gx/navbar/right.jpg" align="middle"
WIDTH="14" HEIGHT="45" BORDER="0"></td></tr></table>
</p>
<!-- end tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<P> <hr>
<CENTER>
<!-- *** BEGIN navbar *** -->
<!-- *** END navbar *** -->
</CENTER>
</p>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
</BODY></HTML>
<!--endcut ========================================================= -->
|