今天在lfs里添加進(jìn)原來(lái)的mimiApache硬盤(pán)hda,重新實(shí)驗MiniApache,
又到了chroot步驟,提示找不到所需要env,或者bash,把我給氣暈了
我是把lfs的工具鏈考到新硬盤(pán)上的/atools
后來(lái)我參看了good2的《另一種LFS》
于是我也編譯了一個(gè)新內核,大小1。5M,先放到lfs中的boot下面試驗能夠用
然后放到hda1的/boot下,我又在lfs中編譯了busybox,靜態(tài)編譯的,把_install目錄考到hda1上
照樣在/etc下寫(xiě)了簡(jiǎn)單的三個(gè)文件,inittab,rc.d/rc.sysinit,fstab,然后設置lfs中g(shù)rub的啟動(dòng)菜單,順利啟動(dòng)新內核,新系統
然后,實(shí)驗gcc編譯,但怎么gcc都找不到,我到/atools/bin下,明明擺在那里,說(shuō)找不到,氣暈我也,/atools/bin下所有命令都找不到,都不能運行,但good2明明可以運行的,為什么我的卻一點(diǎn)動(dòng)靜都沒(méi)有了
我懷疑busybox的shell緣故,我在lfs中靜態(tài)編譯了bash3。0,把生成的將近2M的bash拷貝到hda1的/bin下,開(kāi)始我是拷貝了lfs的動(dòng)態(tài)版bash到bin下,并把inittab中的/bin/sh直接改為bash,發(fā)現系統運行不了bash
但我拷貝好這個(gè)靜態(tài)bash后,發(fā)現可以運行,但在這個(gè)bash里面的表現一樣,gcc就是command not found
后來(lái),我突然把atools改回tools,gcc里面找到了,原來(lái)gcc運行前要找自己的spec,而它的spec路徑肯定是/tools。。。,所有就說(shuō)找不到了,現在就可以了
gcc dummy.c,
collect2中的ld找不到庫,我在/tools/lib下拷貝了一些庫后,可以運行了
/lib:ld-linux.so.2 libgcc_s.so
/usr/lib:crt1.o crti.o crtn.o libc.a libc.so
dummy.c就變成了a.out,./a.out就hello出來(lái)了,好爽
設備管理:
LFS BOOK:devfs 存在的主要的問(wèn)題是它處理設備檢測、創(chuàng )建和命名的方式,其中設備節點(diǎn)的命名可能是最嚴重的問(wèn)題。是由開(kāi)發(fā)者強制設定,因而已被標記為deprecated
2。6內核中,sysfs新的虛擬文件系統誕生后,能把系統的硬件配置視圖導出給用戶(hù)空間的進(jìn)程,sysfs認出設備的方式是,。對于已經(jīng)編入內核的驅動(dòng)程序,當被內核檢測到的時(shí)候,會(huì )直接在 sysfs 中注冊其對象;對于編譯成模塊的驅動(dòng)程序,當模塊載入的時(shí)候才會(huì )這樣做。一旦掛載了 sysfs 文件系統(掛載到 /sys),內建的驅動(dòng)程序在 sysfs 注冊的數據就可以被用戶(hù)空間的進(jìn)程使用,并提供給 udev 以創(chuàng )建設備節點(diǎn)。
把udev056源碼和配置文件拷貝到/sources
cd /sources
tar xvf udev-0.56.tar.bz2&&cd udev-0.56
make udevdir=/dev(提出ar的-q參數不合法,應該是busybox的ar功能不全
rm /bin/ar && cp /tools/bin/ar /bin/ (成功編譯
make DESTDIR=/ udevdir=/dev install(提出/usr/bin/install找不到
make DESTDIR=/ udevdir=/dev INSTALL=/tools/bin/install install
cp /sources/udev-config-4.rules /etc/udev/rules.d/25-lfs.rules
/sbin/udevstart
至此dev目錄下出來(lái)了設備節點(diǎn),hda,sda全有了,就不用麻煩的重啟到lfs中拷貝東西了
網(wǎng)絡(luò )設置:
編譯busybox時(shí)我編譯了ifconfig,ifup,ifdown三條命令,在/sbin下有鏈接指向/bin/busybox
(ifconfig [網(wǎng)絡(luò )設備][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<網(wǎng)絡(luò )設備類(lèi)型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<網(wǎng)絡(luò )媒介類(lèi)型>][mem_start<內存地址>][metric<數目>][mtu<字節>][netmask<子網(wǎng)掩碼>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]補充說(shuō)明:ifconfig可設置網(wǎng)絡(luò )設備的狀態(tài),或是顯示目前的設置。)
ifconfig eth0(查看eth0
ifconfig eth0 down
ifconfig eth0 192.168.0.3 netmask 255.255.255.0
ifconfig eth0 up
ifconfig eth0 (修改成功
ping 192.168.0.3(ping本機,不成功
ping 192.168.0.1(成功,我無(wú)法ctrl+c,z中斷,只能reset機器
ping 222.16.32.115(ping本機global ip,不成功
route
route add default gw 192.168.0.1
ping 222.16.32.115(成功了,又得重啟,郁悶
實(shí)驗init:
init由busybox提供
mv init init_b
reboot(進(jìn)不去系統,kill init,進(jìn)lfs改回來(lái)
mv init init_b
cat > init <<eof
echo "HI,thsi is my system"
/bin/sh
eof
chmod a+x /sbin/init
reboot(還是不行,Kernel panic - not syncing:No init found. Try passing init=option to kernel.
于是在grub啟動(dòng)中,加入,init=/sbin/init,出錯信息依舊,改init=/sbin/init_b,這回時(shí)Attempted to kill init!