基于vmware7.1和LFS6.7构建自己的linux
在几年前,我偶然接触到LFS,当时很感兴趣,于是参看网上的资料尝试编译了好几次,但刚开始就遇到一大堆的错误,让人很难继续走下去,最终都失败了,所以构建lfs的想法就搁置了。
最近看到LFS6.7出来,突然之间又有了编译自己linux的冲动,于是就找到网上的文章跟着编译,但是刚开始就报错,没法进行下去。后来在网上找到了OpenBilly的文章:LFS 6.7 准速成手册
参照着文章中的命令,很顺利,最终编译成功了,在这里非常感谢OpenBilly的文章,以及在我编译过程中给予的指导。
在这里将编译过程中遇到的问题,以及解决办法记录下来,作为备忘,同时也希望能给其他编译linux的朋友一些帮助。
1、首先说一下我的环境,vmware workstation7.1,LFS6.7,lfslivecd-x86-6.3-r2145.iso.
2、我不是在虚拟机里面敲命令操作的,而是使用SecureCRT通过ssh连接虚拟机来执行命令。这需要在livecd里面开启ssh服务:
a、设置root密码,passwd root
b、执行/etc/rc.d/init.d/sshd start来开启ssh服务
c、执行ifconfig命令查看ip地址,然后通过SecureCRT来连接虚拟机。
3、也就是因为使用SecureCRT来连接虚拟机的,所以在后面遇到了一些错误。这里需要说明一下,通过这种方式连接虚拟机,每一次连接就是一个会话,所以在这个会话里面定义的变量仅仅在本次会话中有效,所以有的时候重新连接虚拟机之后,再接着执行命令的时候,会报错,就是因为之前定义的变量已经无效了,这个时候需要重新恢复哪些变量等相关内容。我在执行下面的命令时报错了,无法将根目录切换到:没有那个文件或者目录。
chroot "$LFS" /tools/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h
后来检查发现,$LFS变量已经没有值了,这个时候重新定义就可以了。
4、在执行grub-install --grub-setup=/bin/true /dev/hda 时候也报错了:
/usr/sbin/grub-probe: error: cannot find a device for /boot/grub (is /dev mounted?).
No path or device is specified.
Try `/usr/sbin/grub-probe --help' for more information.
Auto-detection of a filesystem module failed.
Please specify the module with the option `--modules' explicitly.
这个时候可以检查一下变量,我是直接执行下面的命令解决的:
export LFS=/mnt/lfs
mount -v --bind /dev $LFS/dev
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
5、在重启的时候,可能会报错kernel pannic等错误,这个时候仔细可以看看错误信息,还是很有帮助的,不要盲目的上网搜索。我就是根据错误信息,发现系统找不到hda,无法将root挂载到/dev/hda上,最后修改grub.cfg文件和fstab文件,将里面的hda修改为sda,然后重启就可以进入系统了。在这里还需要解释一下的是,重启以后会发现无法进入到之前的livecd系统了,这里有两种办法,一是在虚拟机开启的时候,修改bios里面的启动设备,让虚拟机从光盘启动,二是在启动自己编译的linux时候,在显示启动菜单的时候,按字母c进入grub命令行,然后敲入命令exit退回guub,这个时候就可以进入之前的livecd系统了。
6、在启动linux时候,会报interface eth0 not exist,但仍然能进入系统,只是进入系统之后,无法ping通过网关,也无法上网。这个问题是因为我在编译内核的时候,没有把虚拟机对应的网卡驱动编译进去,这个时候需要我们重新进入livecd系统,重新编译内核,在make menuconfig的时候,要选中pcnet32这个驱动,然后重启就可以上网了。
7、在进入自己的linux之后,发现无法执行ifconfig命令,这是因为没有安装net-tools工具包,这个大家可以到这里下载:http://www.linuxfromscratch.org/blfs/view/stable/basicnet/net-tools.html
最后,在成功编译linux之后,可以到这个网址去注册http://www.linuxfromscratch.org/cgi-bin/lfscounter.cgi 看看自己是第几个编译成功的。呵呵,我的id是22440.
分享到:
相关推荐
Linux From Scratch: Version 6.7
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成,主要内容包括走进GNU/Linux、LFS,Linux系统定制原理,制作GNU/Linux系统的准备工作,本地定制GNU/Linux...
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成,主要内容包括走进GNU/Linux、LFS,Linux系统定制原理,制作GNU/Linux系统的准备工作,本地定制GNU/Linux...
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成,主要内容包括走进GNU/Linux、LFS,Linux系统定制原理,制作GNU/Linux系统的准备工作,本地定制GNU/Linux...
LFS_动手定做Linux操作系统..如果你想亲自做一个Linux发行版本,就像Redhat一样..那么,下载下来,学习
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成 主要内容包括走进GNU Linux LFS Linux系统定制原理 制作GNU Linux系统的准备工作 本地定制GNU Linux系统 ...
LFS book 教你从头构建自己的linux发行版,英文注意
SSH远程登录VWware上的LFS,在使用LFS打造自己的Linux系统的时候,虚拟机远程SSH设置。
LFS构建Linux操作系统原理分析!!!!!!!!!!!!!!!!!!
构建linux LFS系统,文件管理系统 . 想研究LFS系统的朋友可以看看.
LFS LINUX 定制 LFS LINUX 定制 LFS LINUX 定制
用户要更改构建 Linux 发行版的方式,不必要是程序员:只要从构建 LFS 系统学到的一点脚本编写能力就足够了。...已经针对教学目的和大型网络,演示了基于 LFS 的 Linux 系统。它们也有可能用于其他领域。
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成,主要内容包括走进GNU/Linux、LFS,Linux系统定制原理,制作GNU/Linux系统的准备工作,本地定制GNU/Linux...
LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化...
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成,主要内容包括走进GNU/Linux、LFS,Linux系统定制原理,制作GNU/Linux系统的准备工作,本地定制GNU/Linux...
Linux系统是一个免费使用和自由传播的类Unix操作系统,基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统,Linux是许多企业...
通过LFS,你可以从零开始定制自己的Linux系统,当你完成这些工作,你会发现你已经不是Linux新手了。 这是英文版,英文不好的推荐看我的另外一个资源,LFS6.6中文版。 如果想学好英语,建议做7.1,遇到看不懂的参照...
LFS 官方网站下来的文档 学习linux的捷径
Linux From Scratch (LFS) 及其后代代表一种新方法,向用户揭示 Linux 操作系统是如何工作的。LFS 基于这样的假设,即一部分一部分地编译完整的操作系统不仅能够...本文将为大家介绍如何构建自己的Linux系统发行版 。
尽可能简单地构建LFS(Linux From Scratch)10.0版的说明和脚本(我知道,不是那么简单,但是无论如何)。 lfs-scripts:penguin:尽可能简单地构建LFS(Linux From Scratch)10.0版的说明和脚本(我知道,不是那么...