Bryan Kadzban wrote:
If I run into other issues, I'll post them then. I've just finished compiling binutils pass 1 (yes, by hand, I have a whole weekend ;-) ).


Well, I ran into two issues, but both of them seemed to be caused by my own mistakes (I really should come up with a scripted build system one of these days... ;-) ), because they didn't happen the second time through.

First, all the binutils programs were still hardwired to the dynamic
linker in /lib, not /tools/lib, so nothing would compile once I got to
chapter 6.  I believe I failed to actually "make install" binutils pass
2 (though I did edit the gcc specfile, because other programs worked).
I started over.  (Grr... but oh well, my mistake.)

Second, I used the pkg-user hint (as I always do).  That's not in and of
itself a problem, but I missed the comment about the /usr/bin/perl
symlink being owned by root.  I also missed the fact that perl's "make
install" did not overwrite that symlink.  So when I got to autoconf, it
failed to build, because the chapter 5 Perl did not have Data::Dumper
installed (and /usr/bin/perl was in /tools).  Rebuilding and installing
perl (after chowning the symlink), texinfo (just in case) and autoconf
fixed it.

So I think both of those are my fault, not the book's.

For the record, I also ran into the glibc tst-cancel17 and tst-cancelx17
failures in chapter 6 (on kernel 2.6.11.5), but I know the cause is the
kernel.


I also saw a couple more issues in the text, first in section 7.4 ("Device and module handling"). In the intro, the book says:

Because these device nodes will be created each time the system
boots, they will be stored on a ramfs (a file system that resides
entirely in memory and does not take up any disk space).

We use a tmpfs now, not a ramfs.

In 7.4.2 (second para from the end), the book says:

With udev, this method will not work because the device node does not
exist until the module is loaded. To solve this, the S05modules
bootscript was added to the lfs-bootscripts package, along with the
/etc/sysconfig/modules file. By adding module names to the modules
file, these modules will be loaded when the computer is starting up.

The hotplug init script calls the *.rc hotplug files, to load the appropriate modules for the hardware that's always installed. There's no need to add anything to /etc/sysconfig/modules for those devices.

The only thing that doesn't handle is true hotplugging hardware, like
USB or PCI-X devices that aren't always in (PCI-X is hotpluggable,
right?) or Firewire.  Maybe something like this would be better:

With udev, this method will not work...  To solve this, the LFS
bootscripts call some scripts provided by the Hotplug package.  These
scripts determine what hardware is present in the system at boot
time, and load the appropriate kernel modules (as long as those
modules are not listed in /etc/hotplug/blacklist).

However, this does not work unless the hardware is installed at boot
time -- USB devices that aren't plugged in at boot, for example, will
 not have their drivers loaded through the Hotplug scripts.  For this
 case, it is possible to use the S05modules script, which reads the
/etc/sysconfig/modules file.  Any module names added to the modules
file will be loaded when the computer starts up.

This still meshes fairly well with the wording in 7.4.3, except for one little thing: in that section, the book says:

When the Hotplug package is installed, it will respond to the
aforementioned kernel's bus driver hotplug events. The Hotplug
package will load the appropriate module and make this device
available by creating the device node(s) for it.

We install Hotplug already, although it doesn't seem to be used (except to load modules at boot time, with the .rc scripts, as above). Maybe this would be more appropriate:

When the Hotplug package's main /sbin/hotplug script is registered as
the system hotplug event handler, it will respond to the ...

and continue as before. There were issues discussed on this list with doing this in the book (registering the hotplug script as the main handler), but I don't remember what they were anymore.


In section 8.3, the book says:

The kernel configuration file .config  produced by the make
menuconfig step above contains all the configuration selections for
the kernel that was just compiled. It is a good idea to keep this
file for future reference:

cp .config /boot/config-2.6.11.6

It might be worth mentioning that 2.6 kernels can provide their configuration in a /proc/config.gz file, if they've been configured to do so (CONFIG_IKCONFIG and CONFIG_IKCONFIG_PROC). If you don't enable the _PROC setting, you can still get at the configuration, but you'll need the scripts/extract-ikconfig script from the kernel to do it.

IMO, it makes more sense to do it this way, so you don't get confused
which kernel's config file you're looking at.  But that's just me.  I
think it should still be mentioned, at least.

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to