以下纯属个人简介,正在尝试:
安装环境RH9,内核2.4.20-8。
LFS的很大一部分都是在编译toolchain,移植toolchain。我的想法是先做出一个可以启动的内核,然后在该内核上安装pre-complie的toolchain。本地升级toolchain到相应的版本。
RH9中进行的:
1。建立LFS分区,我用的是/dev/hda8(ext2)
2。下载busybox1.1,静态编译busybox.busybox提供了LFS中很多软件包提供的功能
Currently defined functions include:
[, [[, addgroup, adduser, adjtimex, ar, arping, ash, awk, basename,
bbconfig, bunzip2, busybox, bzcat, cal, cat, chattr, chgrp, chmod,
chown, chroot, chvt, clear, cmp, comm, cp, cpio, crond, crontab,
cut, date, dc, dd, deallocvt, delgroup, deluser, devfsd, df, dirname,
dmesg, dos2unix, dpkg, dpkg-deb, du, dumpkmap, dumpleases, e2fsck,
e2label, echo, egrep, eject, env, ether-wake, expr, fakeidentd,
false, fbset, fdflush, fdformat, fdisk, fgrep, find, findfs, fold,
free, freeramdisk, fsck, fsck.ext2, fsck.ext3, fsck.minix, ftpget,
ftpput, fuser, getopt, getty, grep, gunzip, gzip, halt, hdparm,
head, hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig,
ifdown, ifup, inetd, init, insmod, install, ip, ipaddr, ipcalc,
ipcrm, ipcs, iplink, iproute, iptunnel, kill, killall, klogd,
lash, last, length, less, linuxrc, ln, loadfont, loadkmap, logger,
login, logname, logread, losetup, ls, lsattr, lsmod, makedevs,
md5sum, mdev, mesg, mkdir, mke2fs, mkfifo, mkfs.ext2, mkfs.ext3,
mkfs.minix, mknod, mkswap, mktemp, modprobe, more, mount, mountpoint,
msh, mt, mv, nameif, nc, netstat, nice, nohup, nslookup, od, openvt,
passwd, patch, pidof, ping, ping6, pipe_progress, pivot_root,
poweroff, printenv, printf, ps, pwd, rdate, readlink, readprofile,
realpath, reboot, renice, reset, rm, rmdir, rmmod, route, rpm,
rpm2cpio, run-parts, runlevel, rx, sed, seq, setconsole, setkeycodes,
setsid, sha1sum, sleep, sort, start-stop-daemon, stat, strings,
stty, su, sulogin, sum, swapoff, swapon, switch_root, sync, sysctl,
syslogd, tail, tar, tee, telnet, telnetd, test, tftp, time, top,
touch, tr, traceroute, true, tty, tune2fs, udhcpc, udhcpd, umount,
uname, uncompress, uniq, unix2dos, unzip, uptime, usleep, uudecode,
uuencode, vconfig, vi, vlock, watch, watchdog, wc, wget, which,
who, whoami, xargs, yes, zcat, zcip
3。在LFS分区上建立文件系统目录关键是/dev目录,并拷贝busybox的_install目录。
4。在LFS/etc目录下面创建fstab和inittab文件
5。在RH9下面编译linux-2.6.12内核,并安装。
6。修改/boot/grub/grub.conf文件:
关于2.6.12启动部分的内核参数:root=/dev/hda8 noinitrd
删除Initrd映象。我们的启动不需要initrd支持。
7。reboot,进入2.6.12内核中。很干净的文件系统,除了busybox提供的软件没有其他软件。
8。在2.6.12内核中,使用busybox提供的rpm安装binutils,gcc,glibc的编译好的软件包。版本不用最新的。
9。现在toolchain就建立起来了,然后toolchain本地编译新版本的就可以了。
我已经做到第7步了。后面2步还没有弄,周末试试。
中间出个问题,2.6.12内核mount的/dev/hda8怎么是只读的呢? 挂载根文件系统,在哪里设置访问属性?在grub.conf中,内核启动参数部分,kernel /boot/..... root/dev/hda8 noinitrd 确信是没有“ro”的。/etc/fstab中/最后参数是1 1,不知道从哪里拷贝的了,这两个不会是只读的意思吧?
大家共同尝试一下。 |