+ -
当前位置:首页 → 问答吧 → LFS 6.0 Kick off

LFS 6.0 Kick off

时间:2008-03-12

来源:互联网

I have downloaded virtualPCsetup.exe, lfs-packages-6.0.tar, bootcd-6.0.iso and LFS-BOOK-CHS-TRANS-CVS-20050527-NOCHUNKS[1].html.bz2.

Now, kick off...blessing

作者: foo2008   发布时间: 2008-03-12

出师不利,幸好看了晨想的帖子
“:如果用虚拟机的话,最好别用 Virtual PC。VMWare workstation 是首选。
:顺便说一下,VMWare 的网卡驱动应该是 pcnet。不是你自己的网卡驱动。
显卡驱动是用 vmware,这个我是用 vmware-tools 安装的。有的人说不需
要,我没测试过。”

赶紧换VMwareWorkstation-v6.0....Go,go,go

作者: foo2008   发布时间: 2008-03-12

建立虚拟机,创建IDE硬盘16G,启动bootcd-6.0.iso.....顺利启动到shell
fdisk /dev/hda 分两个分区hda1(0~30000)和hda1(30001~35507),hda1设为bootable分区
export LFS=/mnt/lfs
mkdir -p $LFS
mount /dev/hda1 $LFS
echo $LFS 检查一下,一切OK!

作者: foo2008   发布时间: 2008-03-12

发现用bootcd.iso的坏处了,因为在我的LFS好之前,每次重启动都要运行以下指令:
export LFS=/mnt/lfs
mount /dev/hda1 $LFS
ln -s $LFS/tools /
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
chown lfs $LFS/tools
chown lfs $LFS/sources
su - lfs
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PSI='\u:\w\$ ' /bin/bash
EOF
cat > ~/bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF
source ~/.bash_profile

看来得写个脚本啊,要不真的累死:)

作者: foo2008   发布时间: 2008-03-13

脚本写好了,开始编译工具。。。。
碰到了一个好玩的事,当切换到lfs用户后,我就不能在/sources目录下建立目录了(***-build),但是却能在/sources/***下执行mkdir ../***-build。
ft,这也太搞笑了!

作者: foo2008   发布时间: 2008-03-13

开始建立工具链:
binutils, gcc pass 1, libc-headers, linux, glibc
基本顺利,所有目录都没有删除,因为没看到手册里说要删,决定先不删。。。

作者: foo2008   发布时间: 2008-03-14

6.0 太老了吧,干嘛不装新版的?

作者: d00m3d   发布时间: 2008-03-15

狂晕!我想着不是老版本可能会稳定点嘛。。。
周末加班狂编译,累得手酸,敲到麻木,决定响应斑竹号召,转6.3:)

另外发现一个易犯错的陷阱,手册上有个地方说最好粘贴。。。我手敲的,研究了好久sed才搞明白把`敲成了' ft!

作者: foo2008   发布时间: 2008-03-17

So you learned how to use sed, right?

If you copy-and-paste, you never learn anything, that's why I always suggest users type the commands. :)

作者: d00m3d   发布时间: 2008-03-18

That's right! No pain no gain

作者: foo2008   发布时间: 2008-03-18

tools pass 1完成了,包括6步:
1. 用host tools编译binutils
2. 用host gcc + step 1 binutils编binutils(ld-new)
3. 用host gcc + host binutils + host 动态链接库编gcc
4. 用step 1 binutils + step 3 gcc编linux-header
5. 用step 1 binutils + step 3 gcc + step 4 header编glibc
6. 更新step 2的binutils, 更新gcc指向新的glibc

疑问:step 3中为啥不用step 1的binutils?

作者: foo2008   发布时间: 2008-03-19

目前的理解:Pass 1其实就是在tools下建立一个交叉编译环境,用来编译Pass 2的目标工具。然后再chroot到目标机,用pass 2在目标机上编译整个目标机系统。

作者: foo2008   发布时间: 2008-03-19

用光盘或可引导的lfslivecd-xxx.iso的好处就是敲命令都能够达到运指如飞的熟练程度。

作者: tfkdmwmqtr   发布时间: 2008-03-19

引用:
作者: foo2008
目前的理解:Pass 1其实就是在tools下建立一个交叉编译环境,用来编译Pass 2的目标工具。然后再chroot到目标机,用pass 2在目标机上编译整个目标机系统。
算不上是交叉编译,但重点是 Pass 1 的工具链是依赖宿主系统的,而最终的目系统要脱离主系统,独立出来才行

作者: d00m3d   发布时间: 2008-03-20

引用:
作者: d00m3d
算不上是交叉编译,但重点是 Pass 1 的工具链是依赖宿主系统的,而最终的目系统要脱离主系统,独立出来才行
算不上吗?如果我给mips编LFS的话,pass 1应该编出来的就是mips tools chain了吧。

又碰上了一个youbest提示的问题,在编pass 2的时候,编的头晕眼花,把perl5写成了per15。。。。于是就碰上了no gen-translit.pl的问题了。回去切换成lfs又编了一把perl,别的都没编,也不知道会不会还有影响。。。反正glibc测试的时候出了一堆错误,假装没看到,接着编:)

作者: foo2008   发布时间: 2008-03-20

如果你在MIPS上给MIPS编译LFS,当然pass1编出来的是mips tool chain.
可是这不能算是交叉编译。

如果你在其它机器(如x86)编译MIPS上的LFS,那是行不通的。因为,如果你设置了目标码为MIPS你编译出来的tool chain根本无法在宿主机上运行。要是设置目标码为x86,该tool chain可以运行,但产生的代码仍然是x86的,也就是说编译出来的东西无法在MIPS上运行。

要解决这些问题,只能靠真正的交叉编译才能够实现。请参考CLFS

作者: 地球发动机   发布时间: 2008-03-20

引用:
作者: 地球发动机
如果你在MIPS上给MIPS编译LFS,当然pass1编出来的是mips tool chain.
可是这不能算是交叉编译。

如果你在其它机器(如x86)编译MIPS上的LFS,那是行不通的。因为,如果你设置了目标码为MIPS你编译出来的tool chain根本无法在宿主机上运行。要是设置目标码为x86,该tool chain可以运行,但产生的代码仍然是x86的,也就是说编译出来的东西无法在MIPS上运行。

要解决这些问题,只能靠真正的交叉编译才能够实现。请参考CLFS
嗯,是x86上编mips的linux。。。当然编译工具时用的参数不一样,例如target至少得设成mips之类的,工具是x86编的,当然可以在x86下运行,工具是for mips的,当然编出的代码页能在mips上跑。不过LFS pass 1的是肯定不行了,呵呵。等搞明白了LFS再瞅瞅其他的,我就等着学好linux后,升职,加薪,赚大钱:)

进入chroot环境了!!!

碰到了大问题了,我用的是vmware workstation 6.0。chroot后,就出毛病了:
不能用tab键,一敲tab,PC喇叭就狂响!太痛苦了!不用tab键怎么行呢,用的话,周围同事都看我!PC喇叭不是声卡,关也关不掉。。。救命啊!

作者: foo2008   发布时间: 2008-03-20

交叉編譯,在於系統架構上的轉變,LFS 手冊主要是為 x86 架構而設的,並非說 LFS 不能做交叉編譯,早年還沒有 CLFS 的時候就有篇 Hints 教人如何做,不過現在 CLFS 已很成熟,要玩交叉編譯的話,還是参考 CLFS 手冊吧

作者: d00m3d   发布时间: 2008-03-21

用google一搜,直乐,痛苦的不止我一个啊!

0097 linux文本界面下如何关闭pc喇叭(labrun)
将/etc/inputrc中的set bell-style none 前的#去掉,
或echo "set bell-style none" >> ~/.bashrc

在shell里输入set bell-style none,不管用,用set查看也没有显示bell-style!只好以后试试.bashrc了

作者: foo2008   发布时间: 2008-03-21

该编的都编了,头晕眼花,就剩linux了,周末办了它!

作者: foo2008   发布时间: 2008-03-21

按照youbest的安装手册完工了,my lfs 6.3也终于顺利启动了,本贴可以完结了。。。。然后我该干什么呢?!

作者: foo2008   发布时间: 2008-03-22