The LFS FAQ Seth W. Klein sk@sethwklein.net _________________________________________________________________ 1. Introduction 1.1. Why this FAQ? 1.2. What is appropriate for lfs-support? 1.3. Contributing to this FAQ. 1.4. Where is the best place to get help? 1.5. What is LFS? 2. Frequently Reported Bugs 2.1. The Dependencies section for Foo 2.0 says "Foo 1.0". 2.2. There's a new version of package Foo. 2.3. The Delete key doesn't work. 3. Frequently Requested Enhancements 3.1. Why isn't GCC 3.0.x in the book? 3.2. Why not use gawk instead of mawk? 3.3. Why not use GRUB instead of LILO? 3.4. Why is ed in the book? 3.5. Why isn't some package manager in the book? 4. Frequently Encountered Errors 4.1. Compile Time Errors 4.1.1. Errors From Any Package 4.1.1.1. ./configure: bad interpreter: Permission denied 4.1.1.2. /usr/bin/env: /bin/bash: No such file or directory 4.1.1.3. checking whether we are using GNU C... no 4.1.1.4. Why does configure hang at "checking for signed size_t type..."? 4.1.1.5. I'm getting errors building a package that requires GTK+, but I've installed GTK+ 2.x. 4.1.2. Errors From Specific Packages 4.1.2.1. My optimized build of glibc is failing in spinlock.c 4.1.2.2. Kernel panic: VFS: unable to mount root fs 4.1.3. Errors Not Listed Above 4.1.3.1. I used a patch from GNU to upgrade. Is that OK? 4.1.3.2. I'm using optimizations. Can that be a problem? 4.1.3.3. I'm using a version not in the book. Is that a problem? 4.1.3.4. I didn't delete the source tree after my last attempt. Do i need to? 5. Resources 5.1. How do I find package Foo? 5.2. How do I make a bootable CD? 5.3. Where's portmap? 5.4. What distribution should I use to start from? 5.5. How do I make that really small install the book mentions? 5.6. Where's libncurses.a in Mandrake? 6. Frequently Sought Cluebits 6.1. What's a DOS format text file? 7. Compiling 7.1. I'm getting fatal errors about signal 11. 7.2. How do I cross compile LFS? 7.3. Are compiler warnings from GCC bad? 7.4. I'm getting `/dev/null: Permission denied' 7.5. configure can't guess my host type. 7.6. A package can't find Xlib.h. 7.7. I'm having trouble compiling something with GCC 3.x 8. Questions about specific packages. 8.1. How do I create a non-root user? 8.2. My static sh-utils build is failing with "undefined reference to `getloadavg'". 8.3. My hostname is getting set to "-f"! 8.4. How do I setup kernel modules? 8.5. What do those LILO errors mean? 8.6. I'm getting errors about net-pf-?. 8.7. I'm getting errors about char-major-10-135. 9. Additions / Changes to LFS. 9.1. Why copy the kernel headers instead of linking them? 9.2. Why does less (and therefore man) print instead of hyphens? 1. Introduction 1.1. Why this FAQ? The FAQ tries to answer questions before they're asked. This saves the trouble of asking them, and sometimes, the trouble of encountering a problem. This does reduce traffic and improve the signal to noise ratio but that is merely a useful side effect. Since the FAQ isn't the natural place to look for information, items should be added to it only if they can't be added to the appropriate documentation, although sometimes it will be necessary to add a pointer to the information in the documentation. 1.2. What is appropriate for lfs-support? From the website: The lfs-support mailing list provides support to users building an LFS system as far as the end of the main book. Requests for help with installing software beyond the base system should go to the blfs-support list. For instance, GCC and Glibc are part of the LFS book and belong on lfs-support. XFree86, KDE, and GNOME are not part of the LFS book and belong on blfs-support. 1.3. Contributing to this FAQ. If you have an addition or suggestion, please, let me know. I can be reached at sk@sethwklein.net, and i read the lists thoroughly (but not always promptly). I want to stick to questions that have been asked at least twice and to remove items that are no longer an issue. 1.4. Where is the best place to get help? When this FAQ fails to help, there are several places to go. If you're having a problem with something in the book, it never hurts to go back over the book. It's surprising how easy it is to overlook little things. If nothing else, reading the appropriate man and info pages will yield useful information on some subject, if not what you were looking for, and insure that you know enough not to embarrass yourself if you have to ask someone. http://www.linuxdoc.org/ has the HOW-TOs and a great deal of other documentation. You might find something there. The linuxfromscratch.org site search includes the mailing lists. Many questions have been discussed there at least once. It's at http://search.linuxfromscratch.org/. For support type help, IRC is often best. It's faster, and doesn't clog the mailinglists. Information on the LFS IRC channel is at http://www.linuxfromscratch.org/misc/irc.shtml. As a last resort, there are the mailing lists. People will get frustrated with you if you use the wrong one or cross post. Mailing list information is at http://www.linuxfromscratch.org/mailinglists/info.shtml: and tells which list to use. 1.5. What is LFS? LFS stands for Linux From Scratch which is a project that primarily documents how to install a Linux system by downloading, building, and installing the packages yourself. For why you might want to do this, how to do it, and other useful stuff, see the website at http://www.linuxfromscratch.org/. 2. Frequently Reported Bugs 2.1. The Dependencies section for Foo 2.0 says "Foo 1.0". That is correct. Dependencies sections are only updated occasionally due to the amount of manual labor required. 2.2. There's a new version of package Foo. Excellent. If you wish to help, please report it to lfs-book (or blfs-book for packages in BLFS) unless the automated freshmeat announcements have already done so. If you wish to do even better, you can test the new version and report if it works or what is necessary to make it work. 2.3. The Delete key doesn't work. See: http://beyond.linuxfromscratch.org/view/cvs/chapter03/inputrc.html. 3. Frequently Requested Enhancements LFS is a very basic system, in massive contrast to traditional distributions. The reason is this: LFS is not intended to create your system as you want it. It's intended to be just enough to allow you to build your system as you want it. It's not an end, it's a beginning. When you're done with LFS, you've just started building your system. This can be a problem if you're new to Unix systems and want a typical install with X and a web browser but have no idea what packages you need. For this reason, there is the Beyond Linux From Scratch, or BLFS, project. It is at http://beyond.linuxfromscratch.org/. 3.1. Why isn't GCC 3.0.x in the book? Because many packages still haven't been updated to compile with it. Also note that gcc 2.x and 3.x don't mix. Among other things, this means that you may have problems if you must use precompiled binaries as is often the case with closed source software. (The most recent version of Netscape is reported to be fine.) If you want to try gcc 3, make sure you're using glibc 2.2.5 and search the mailing lists because there are a few fixable problems that you will encounter even with just the packages in the book. (Anyone have a document describing them that i could link to?) 3.2. Why not use gawk instead of mawk? The book is switching to gawk. It's in the CVS version of the book now. 3.3. Why not use GRUB instead of LILO? GRUB has not yet been released as stable. When it is, it will be considered and, if it seems better than LILO, used. If your current setup uses GRUB, there's no need to switch. In addition to the GRUB documentation, see the LFS "GRUB-Howto" Hint at http://hints.linuxfromscratch.org/hints/grub-howto.txt 3.4. Why is ed in the book? The book includes ed because patch uses it to process ed scripts. However, these are rare today; everyone uses diff format patches. But ed does have other uses: * For all who've learned to use it, ed is a very useful emergency editor. The MS Windows standard telnet client can deal with ed but has trouble with fullscreen editors (like vim). And a full featured vim requires not only ncurses, but X11 as well! Any trouble with those libraries will leave the system without an editor if ed isn't present. * Though it's not a reason to have ed in the book, some people actually like ed. * Understanding ed helps with understanding vi(m) and Unix history in general. 3.5. Why isn't some package manager in the book? Package management - beyond that profided by tarballs and makefiles - is beyond the scope of the book. If nothing else does, the number of different "solutions" should hint at some of the reasons. Here a just a few of the options: * No package management is really necessary. Unless it is desirable to monitor package file placement minutely, any package large enough to warrent removal for disk space reasons can be installed in /opt as detailed by the FHS. Libraries are generally best upgraded by rebuilding the system from the bottom up. * RPM, the Redhat Package Manager, is used by a number of distributions. It is available from http://www.rpm.org/ and there is an RPM Hint to help with installation at http://hints.linuxfromscratch.org/hints/rpm.txt * Originally based on a script written by LFS' own Gerard Beekmans, install-log records a list of files installed by a package as the package is installed. It is available from http://install-log.sourceforge.net/ * GNU Stow is an interesting concept. See http://www.gnu.org/software/stow/ Do you know of one missing from that list? Please email its name, URL, and other information, to the FAQ maintainer or an apropriate LFS mailing list so it can be added here. 4. Frequently Encountered Errors 4.1. Compile Time Errors 4.1.1. Errors From Any Package 4.1.1.1. ./configure: bad interpreter: Permission denied You're most likely getting this while building bash in Chapter 5 of the LFS Book. The problem is most likely your mount options. You probably have a line in /etc/fstab like: /dev/hda10 /mnt/lfs ext2 user 1 2 'user' is the mount flag, and it's the problem. To quote from the mount man page: user Allow an ordinary user to mount the file system. This option implies the options noexec, nosuid, and nodev (unless overridden by subsequent options, as in the option line user,exec,dev,suid). So change the line in /etc/fstab like this: /dev/hda10 /mnt/lfs ext2 defaults 1 2 4.1.1.2. /usr/bin/env: /bin/bash: No such file or directory You're trying to follow the LFS Book and working on entering chroot, right? Most likely $LFS/bin/bash isn't statically linked. Check it with: file $LFS/bin/bash If that doesn't say something about "statically linked", reinstall bash following the instructions in Chapter 5. 4.1.1.3. checking whether we are using GNU C... no If you're getting an error from configure like: checking whether we are using GNU C... no configure: error: GNU libc must be compiled using GNU CC It may be because egrep (from the grep package) isn't working. To test if egrep is working before reinstalling the grep package in Chapter 6, run the following command from outside chroot: file $LFS/usr/bin/egrep If it doesn't say "statically linked" you have a problem and need to reinstall the grep package. To test if egrep is working after reinstalling the grep package in Chapter 6, run the following command from inside chroot: egrep root /etc/passwd If it doesn't print root's line from /etc/passwd, again, you have a problem. (This test also works if you encounter the problem after rebooting into the new LFS system.) 4.1.1.4. Why does configure hang at "checking for signed size_t type..."? You over optimized gcc. 4.1.1.5. I'm getting errors building a package that requires GTK+, but I've installed GTK+ 2.x. GTK+ 2.x and 1.2.x aren't compatible. The package you're installing may need GTK+ (and GLIB) 1.2.x. You can install GTK+ (and GLIB) 1.2.x next to 2.x. 4.1.2. Errors From Specific Packages 4.1.2.1. My optimized build of glibc is failing in spinlock.c It should be mentioned that glibc (and gcc and binutils) are good places to not optimize. The performance versus stability trade off is unusually poor for these packages. But. . . . If you've specified a CFLAGS value like "-march=i686 -mcpu=686" and you're getting an error like this: spinlock.c: In function `__pthread_lock': spinlock.c:107: inconsistent operand constraints in an `asm' make[2]: *** [/usr/src/glibc-build/linuxthreads/spinlock.o] Error 1 make[2]: Leaving directory `/usr/src/glibc-2.2.4/linuxthreads' make[1]: *** [linuxthreads/others] Error 2 make[1]: Leaving directory `/usr/src/glibc-2.2.4' make: *** [all] Error 2 It's because, unlike almost everything else, spinlock.c requires optimization. You could set CFLAGS to something like "-march=i686 -mcpu=i686 -O2". (Note the "-O2".) But it is better to set optimizations in glibc-x.x.x/Makeconfig. This is the relevant section of Makeconfig: # Default flags to pass the C compiler. ifndef default_cflags ifeq ($(release),stable) default_cflags := -g -O2 else default_cflags := -g -O endif endif And here is an example to adapt: # Default flags to pass the C compiler. ifndef default_cflags ifeq ($(release),stable) default_cflags := -g0 -Os -march=i386 -mcpu=i386 -pipe else default_cflags := -g -O endif endif 4.1.2.2. Kernel panic: VFS: unable to mount root fs There several reasons why the kernel might be unable to mount the root filesystem. * Did you specify the correct partition in /etc/lilo.conf? * Did you remember to rerun lilo after changing /etc/lilo.conf? * Is support for the hard drive enabled in the kernel. For SCSI this means support for the specific SCSI adapter. * Is support for the hard drive compiled into the kernel, not just as a module. (Modules are stored on the filesystem. If a driver needed to access the filesystem is stored as a module on that filesystem, well. . . you know. . . . ;) * Is support for the filesystem compiled into the kernel. Again, not a module. Support for ext2 is enabled by default, but others like ext3, reiser, jfs, and xfs are not. 4.1.3. Errors Not Listed Above 4.1.3.1. I used a patch from GNU to upgrade. Is that OK? For some reason the patches from GNU don't usually work. Better download the full archive and try again. Ed. Note: can anyone tell me why GNU patches fail? 4.1.3.2. I'm using optimizations. Can that be a problem? If you're getting errors and you're using optimization settings, that may be the problem. If you ask on the list and they can't figure it out immediately, they'll likely suggest trying it without optimizations, so just retry it without before asking. You'll be one step ahead of them :) Optimizations can cause many different even seemingly unrelated errors. They can cause configure scripts to fail. Optimizations that work for someone else may not work for you. Settings that used to work may break if you make the smallest, most innocent hardware change. (If you don't know what optimization settings are, don't worry, really you don't need to.) 4.1.3.3. I'm using a version not in the book. Is that a problem? If you're getting errors and you're using a version of a package that differs from the version in the book (either newer or older), try the version in the book. Sometimes there are reasons why the book uses a particular version. Search the list archives if you're curious. In particular, GCC 3.0 will cause problems. See the entry "Why isn't GCC 3.0.x in the book?". 4.1.3.4. I didn't delete the source tree after my last attempt. Do i need to? Yes. You should always delete the source tree after installing and delete it and start over if anything fails. The only exception is the kernel. Most people keep their kernel source so they don't have to reconfigure it from scratch if they need to make a small change. If a large change is needed, like changing processor type, it may be necessary to restart with a fresh tree even with the kernel. Here's an example when everything works: tar xvjf foo-0.0.tar.bz2 cd foo-0.0 ./configure --prefix=/usr make make install cd .. rm -rf foo-0.0 And here's an example for if something (in this case configure) fails: tar xvjf foo-0.0.tar.bz2 cd foo-0.0 ./configure --prefix=/usr . . . *** configure: error: foo requires libess 4.2 or greater please install libess and rerun configure. cd .. rm -rf foo-0.0 tar xvjf libess-4.2.tar.bz2 cd libess-4.2 ./configure --prefix=/usr make make install cd .. rm -rf libess-4.2 tar xvjf foo-0.0.tar.bz2 cd foo-0.0 ./configure --prefix=/usr make make install cd .. rm -rf foo-0.0 Ed. Note: The name of the fictional libess above follows libiberty (from glibc, AFAIK) and libofat. The reason comes from the gcc flag, -l, for linking a library when compiling. For instance, gcc -o foo foo.c -lm would link the "m" (math) library with the executable foo. So, for the libraries above, the command looks like: gcc -o foo foo.c -liberty -lowfat -less Bonus points if you caught the reference to The Hitchhiker's Guide to the Galaxy, by Douglas Adams in the example. 5. Resources 5.1. How do I find package Foo? Mostly, it's not hard, but some packages can lead quite a chase. Here are some steps: 1. http://freshmeat.net/: Searching for foo will usually turn up a freshmeat page with links to an URL where you can check for newer releases not reported to freshmeat. 2. http://www.google.com/: Use a search string like +foo +index which tends to find "Index of /pub/foo" type pages, or even +foo +index -RPM -debian to eliminate links to RPM packages and Debian's archives. 3. Google may well turn up a link to something under http://www.ibiblio.org/pub/. (If you want to look specifically on ibiblio.org use foo site:ibiblio.org ) Beware that ibiblio.org may not have the most recent version. However, they often will have... 4. A foo.lsm (Linux Software Map) file which may list a primary site where more recent versions may be found. 5.2. How do I make a bootable CD? See the Boot-CD Hint and http://hints.linuxfromscratch.org/hints/bootcd.txt 5.3. Where's portmap? There are instructions in the NFS Hint at http://hints.linuxfromscratch.org/hints/nfs.txt. Also, Marc Heerdink writes: I have a version of tcp_wrappers and portmap up that have both been patched with the debian patches, adapted Makefiles for LFS plus all compile warnings/problems were fixed. Additionally, an lfs-install.sh is included in both tarballs that provides a really quick and dirty way to install them. They can be found at http://www.linuxfromscratch.org/~gimli/. You may want to add a note about these packages for people who want to do it the easy way :) 5.4. What distribution should I use to start from? Any recent distribution should be fine. If you have problems, try installing and/or updating the development packages. (Look for ones starting in "gcc" or "glibc" "libstdc++" or ending in "-dev".) 5.5. How do I make that really small install the book mentions? Gerard describes the process of making a 5MB LFS install in an email archived at http://archive.linuxfromscratch.org/mail-archives/lfs-support/2001/10/ 0072.html 5.6. Where's libncurses.a in Mandrake? In Mandrake/RPMS2/libncurses5-devel-5.2-16mdk.1586.rpm on Disk 2. Version numbers might be a little different for you. (If you're missing libcurses.a (no "n"), reread the book's instructions for bash more carefully.) 6. Frequently Sought Cluebits 6.1. What's a DOS format text file? It has to do with the characters used to end lines. There are two that may be used: * Line Feed: (LF) Octal:012 Decimal:10 Hex:0A C Style Escape:'\n' Moves down one line. * Carriage Return: (CR) Octal:015 Decimal:13 Hex:0D C Style Excape:'\r' Move to the left margin. Unix, DOS, and MacOS each use a different combination to end lines in text files: * Unix: LF only. This is why when a Unix format text file is sent to a printer raw, it prints out like stairs steps. * DOS: CRLF both. Which is why if you do "cat -v" on a DOS file you'll see a "^M" (control m is carriage return) at the end of each line. And that is why scripts don't work when written with Microsoft Notepad. The kernel looks for "/bin/sh^M" which doesn't exist. There's a "/bin/sh", but nothing with a "^M" appended. * MacOs: CR only. Printers probably print every line atop the first, and Unix tools think the whole file is one line with "^M" all through it. To change DOS to Unix, use cp .dos && cat .dos | tr -d '\r' > Other conversions will probably require sed or a different use of tr and are left as an exercise for the reader. 7. Compiling 7.1. I'm getting fatal errors about signal 11. See http://www.bitwizard.nl/sig11/. 7.2. How do I cross compile LFS? It's often useful to compile LFS for one machine on another machine. Say using that 1Ghz Athlon to build an install for an old 486. While this is technically not cross compiling, binaries compiled for the Athlon cannot be run on the 486 because binaries compiled for the newer processor use features the older processor doesn't have. To make the newer system compile for the older, follow the hint at http://hints.linuxfromscratch.org/hints/crosscompiling-x86.txt 7.3. Are compiler warnings from GCC bad? Short answer: no. Long answer: probably, but only to someone working on the package you're trying to compile. Mostly, everything will be fine unless make quits with an error. Here's an example: sk ~/tmp $ cat > Makefile main: gcc main.c sk ~/tmp $ cat > main.c void main() { exit(0); } sk ~/tmp $ make gcc main.c main.c: In function `main': main.c:1: warning: return type of `main' is not `int' sk ~/tmp $ ######## that worked ######## sk ~/tmp $ sk ~/tmp $ cat > main.c int main() { exxit(0) } sk ~/tmp $ make gcc main.c main.c: In function `main': main.c:1: parse error before `}' make: *** [main] Error 1 sk ~/tmp $ ######## that failed ######## sk ~/tmp $ 7.4. I'm getting `/dev/null: Permission denied' Does /dev/null look like this: $ ls -l /dev/null crw-rw-rw- 1 root root 1, 3 Aug 3 2000 /dev/null If not, it should. See the chmod(1), chown(1), and mknod(1) man pages and /usr/src/linux/Documentation/devices.txt if you need help fixing it. If it does look right, the problem is probably your mount options. See the answer to "./configure: bad interpreter: Permission denied", above. 7.5. configure can't guess my host type. Typical symptoms look like this: sk ~/tmp-0.0 $ ./configure creating cache ./config.cache checking host system type... configure: error: can not guess host type; you mus t specify one sk ~/tmp-0.0 $ The problem is usually that the script can't run the compiler. Usually it's just a missing /usr/bin/cc symlink. You can fix it like this: cd /usr/bin ln -s gcc cc If that doesn't do it, check the file config.log created by configure. Errors go here and may indicate the problem. 7.6. A package can't find Xlib.h. Typical symptoms look like this: sk ~/tmp $ cat > Makefile x11: gcc x11.c sk ~/tmp $ cat > x11.c #include int main() { exit(0); } sk ~/tmp $ make gcc x11.c x11.c:1: X11/Xlib.h: No such file or directory make: *** [x11] Error 1 sk ~/tmp $ Creating a couple symlinks will fix this. Here are the commands: cd /usr ln -s X11R6 X11 cd include ln -s ../X11/include/X11 X11 7.7. I'm having trouble compiling something with GCC 3.x You should be aware that you're on the bleeding edge. As of 3.0, the LFS Book recommends GCC 2.95.3. However, there are some things you can do: Try adding the -std=gnu89 switch to the compile options. (For instance, in CFLAGS or CC. The exact method is a bit beyond the scope of this FAQ.) 8. Questions about specific packages. 8.1. How do I create a non-root user? Use the useradd program. It was installed with the shadow package. 8.2. My static sh-utils build is failing with "undefined reference to `getloadavg'". If you're trying to build static sh-utils and you're getting an error like this: gcc -g -O2 -static -o uptime uptime.o ../lib/libsu.a -lutil uptime.o: In function `print_uptime': /lfs/tmp/sh-utils-2.0/src/uptime.c:125: undefined reference to `getloadavg' collect2: ld returned 1 exit status make[2]: *** [uptime] Error 1 make[2]: Leaving directory `/lfs/tmp/sh-utils-2.0/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/lfs/tmp/sh-utils-2.0' make: *** [all-recursive-am] Error 2 I am unable to reproduce this error and so cannot present a tested solution, but two solutions have been posted by others. I suggest trying them in the following order: * http://archive.linuxfromscratch.org/mail-archives/blfs-support/200 1/06/0507.html: This attempts to correct the incorrectly generated config.h and should be the correct solution if you can get it to work by following the description given in the post. * If that doesn't work, delete the sources, re-extract, and try this: http://archive.linuxfromscratch.org/mail-archives/blfs-support/200 1/06/0495.html This attempts to avoid compiling uptime at all since it won't be needed in chroot and compiling uptime dynamically in chroot doesn't have this problem. 8.3. My hostname is getting set to "-f"! You need to install the net-tools package. (See the instructions in the LFS book.) The hostname command your system is using is from sh-utils and doesn't support the -f option. When it is called with the -f option it assumes the hostname should be set to "-f". The hostname command from net-tools doesn't have this problem. 8.4. How do I setup kernel modules? Follow the Module-HOWTO at http://www.linuxdoc.org/HOWTO/Module-HOWTO/. 8.5. What do those LILO errors mean? The documentation in the LILO distribution lists all errors (such as when it prints "LI" and stops), but a quick overview is available at http://sdb.suse.de/sdb/en/html/kgw_lilo_errmsg.html. 8.6. I'm getting errors about net-pf-?. When you compiled net-tools you enabled support for a protocol family (that's where the "pf" comes from) that you didn't enable support for in the kernel. (You probably just accepted the default answers.) A full list is in /usr/include/linux/socket.h but here is a list of the likely culprits: * net-pf-3: Amateur Radio AX.25 (AF_AX25) * net-pf-4: Novell IPX (AF_IPX) * net-pf-5: AppleTalk DDP (AF_APPLETALK) * net-pf-6: Amateur Radio NET/ROM (AF_NETROM) * net-pf-9: Reserved for X.25 project (AF_X25) Naturally the fix is to recompile net-tools without support for the things you don't need. (Or recompile your kernel with support if you find you actually wanted them.) The workaround to put a line like the following in /etc/modules.conf alias net-pf-? off Replace the question mark with the correct number, of course. And rerun depmod. If you get an error about net-pf-7, you probably need to enable support for the loopback network device (not block device) in your kernel. Or you may need to add the following line to /etc/modules.conf and rerun depmod. alias net-pf-7 loop 8.7. I'm getting errors about char-major-10-135. Errors about char-major-10-135 refer to the character device, major 10, minor 135, which is /dev/rtc. It provides access to the BIOS clock, or RTC, the Real Time Clock. Check /usr/src/linux/Documentation/rtc.txt for more information. Something, most likely hwclock, is trying to use it but you haven't configured kernel support for it in your kernel. Either delete /dev/rtc so hwclock won't try to use it or enable RTC support in your kernel. It's located in make menuconfig under "Character devices" -> "Enhanced Real Time Clock Support". 9. Additions / Changes to LFS. 9.1. Why copy the kernel headers instead of linking them? In short, we copy the kernel headers instead of linking them because the kernel headers should match the currently running libc, not the currently running kernel. For the long answer see these: * A post by Linus himself: http://www.uwsg.iu.edu/hypermail/linux/kernel/0007.3/0587.html * Kernel Traffic #80, 4. Symlinks In The Kernel; Kernel/Library/etc Interface Dispute: http://kt.zork.net/kernel-traffic/kt20000814_80.txt (This covers the thread in which the above post occurred.) 9.2. Why does less (and therefore man) print instead of hyphens? Because the LANG and LC_ALL environment variables aren't set. To fix that, set them in the ~/.bashrc file for each user or in /etc/profile by adding lines like this: export LANG=en_US export LC_ALL=en_US Those lines can be added to /etc/profile with the following command: echo -e 'export LANG=en_US\nexport LC_ALL=en_US' >> /etc/profile You'll have to change the "en_US" part if you don't use US English.