编译LFS
成功编译并运行linux from scratch 7.7 system,有必要作下总结。
本次用的编译LFS的环境是:
虚拟机是virtalbox
宿主系统为CentOS 7.0 x86_64 (core版本)
LFS版本为 7.7 system
我用两块硬盘,一块安装宿主系统,另一个作为LFS的编译安装盘,编译成功后,脱离宿主系统那块硬盘,单独引导启动LFS linux的那块硬盘,登录进入LFS linux。
虚拟机上安装好centos后,在虚拟机上加一块硬盘,大小20G左右,分区如下
磁盘驱动器:/dev/sdb
大小: 字节,21.4 GB
磁头数: 每磁道扇区数: 柱面数: 名称 标志 分区类型 文件系统 [标签] 大小 (MB)
------------------------------------------------------------------------------
sdb1 启动 主分区 ext2 131.61
sdb2 主分区 swap 1019.94
sdb5 逻辑分区 ext4 20323.30*
sdb1分100多M以后打算给/boot的单独分区,sdb2给swap分区,sdb5 作为系统根目录。
然后根据LFS手册说明创建好文件系统,把sdb5挂载到/mnt/lfs作为工作目录。按手册下载源文件,创建目录,配置环境等,就开始编译工具链,编译工具链有几个地方需要注意
1,手册中所有的软件编译命令都默认在解压出来的软件目录中进行,也就是说必须先用tar解压,再cd进行软件目录。
2,编译完成后用"cd .. "退出软件目录,回到source目录
3,除非特别说明,删除解压出来的目录和所有编译过程中生成的 <package>-build 目录。也就是说编译成功后把解压出来的源文件目录删除,如果有build目录,也要删除,以免影响下下编译。
编译工具链的系统基础软件都很顺利。
由于打算给/boot单独的分区,在编译内核之前,在chroot环境中,先挂载sdb1分区到/boot目录
mount -t ext2 /dev/sdb1 /boot
这样编译出来的kernel就会安装到sdb1分区上。
接下配置grub启动
cat > /boot/grub/grub.cfg << "EOF"
# Begin /boot/grub/grub.cfg
set default=
set timeout= insmod ext2
set root=(hd1,) menuentry "GNU/Linux, Linux 3.19-lfs-7.7-systemd" {
linux /vmlinuz-3.19-lfs-7.7-systemd root=/dev/sdb5 ro
}
EOF
完成后,一切看上去已经很OK,于是把宿主系统的那块硬盘卸掉,单独启动LFS linux,也成功出现了系统菜单选择,选择后回车后傻眼了,提示找不到分区。
通过grub命令发现,硬盘是hd0,而不是hd1,原因很简单,原来宿主系统还是,宿主系统那块盘是hd0,LFS 系统的那块盘是hd1,而现在已经把宿主系统的硬盘卸掉了,只剩下一块LFS linux,理所当然是hd0。
于是在grub命令下,于是手动设置root和加载linux内核
set root=(hd0,5)
linux /vmlinuz-3.19-lfs-7.7-systemd root=/dev/sda5 ro
boot
成功加载内核并启动后,报他个错误,也是没发现sdb硬盘,这让我想到了/etc/fstab 的配置,里面还是sdb,没办在,登录不进系统。
于是关闭虚拟机,重新把宿主系统的那块硬盘加入,引导进入宿主系统,用chroot进入lfs环境,修改/etc/fstab文件如下:
# Begin /etc/fstab
/dev/sda5 / ext4 defaults
/dev/sda1 /boot ext2 defaults
/dev/sda2 swap swap pri=
# End /etc/fstab
在chroot环境中,把lfa linux的/boot分区挂进来,修改/boot/grub/grub.cfg文件,修改后内容如下
set default=
set timeout= insmod ext2
set root=(hd0,) menuentry "GNU/Linux, Linux 3.19-lfs-7.7-systemd" {
linux (hd0,)/vmlinuz-3.19-lfs-7.7-systemd root=/dev/sda5 ro
}
保存退出。
关闭系统,把宿主系统卸掉,只引导LFS linux盘,成功进入系统,用root登录,各功能都正常。
编译LFS的更多相关文章
- LFS7.4编译笔记(3)
在第一部分,我们编译了一个工具链及临时系统,然后在第二部分我们chroot到/mnt/lfs下面,利用临时系统的工具编译了我们最终的LFS系统.不过此时,我们的LFS系统还是不完整的,因为我们还没有安 ...
- LFS、BLFS、ALFS、HLFS的区别
转自:http://www.ha97.com/3927.html Linux From Scratch (LFS) 及其后代代表一种新方法,向用户揭示 Linux 操作系统是如何工作的.LFS 基于这 ...
- 我的Linux学习历程:那些我看过的Linux书籍们
[+]查看原图http://www.ituring.com.cn/article/119401 来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为基本的计时单位.有时茫 ...
- blfs(systemd版本)学习笔记-安装、配置和使用wpa_supplicant无线网络连接工具
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! wireless项目地址:http://www.linuxfromscratch.org/blfs/view/stable-sy ...
- blfs(systemv版本)学习笔记-安装、配置和使用wpa_supplicant无线网络连接工具
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! wireless项目地址:http://www.linuxfromscratch.org/blfs/view/8.3/basic ...
- install命令和cp命令的区别
基本上,在Makefile里会用到install,其他地方会用cp命令. 它们完成同样的任务——拷贝文件,它们之间的区别主要如下: 1.最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件 ...
- 详解linux中install命令和cp命令的区别
基本上,在Makefile里会用到install,其他地方会用cp命令. 它们完成同样的任务——拷贝文件,它们之间的区别主要如下: .最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件, ...
- 从零开始构建Linux
目的:深入了解以Linux内核为基础的系统是如何组成,运行,以构建一个最基础的,纯净的系统. LFS构建步骤宿主机准备- linux操作系统安装- 使用独立硬盘,创建分区- 配置用户和组- 下载所有需 ...
- LFS7.10——准备Host系统
转载请标明出处:https://www.cnblogs.com/kelamoyujuzhen/articles/9161515.html 实验环境: Host:Windows10 + WMWare W ...
随机推荐
- 【转】MFC中用CFile读取和写入文件2
原文网址:http://blog.sina.com.cn/s/blog_623a7fa40100hh1u.html CFile提供了一些常用的操作函数,如表1-2所示. 表1-2 CFile操作函数 ...
- 使用Action、Func和Lambda表达式
使用Action.Func和Lambda表达式 在.NET在,我们经常使用委托,委托的作用不必多说,在.NET 2.0之前,我们在使用委托之前,得自定义一个委托类型,再使用这个自定义的委托类型定义一个 ...
- (转载)完美解决PHP中文乱码问题
(转载)http://www.souzz.net/html/edu/php/php1/74181.html 一.首先是PHP网页的编码 1.php文件本身的编码与网页的编码应匹配 a.如果欲使用gb2 ...
- net 内存泄露和内存溢出
一直以来都对内存泄露和内存溢出理解的不是很深刻.在网上看到了几篇文章,于是整理了一下自己对内存泄露和内存溢出的理解. 一.概念 内存溢出:指程序在运行的过程中,程序对内存的需求超过了超过了计算机分配给 ...
- [Irving]SqlServer 拆分函数用法
drop function dbo.split 删除自定义函数 dbo.split 函数名 函数 dbo.splitcreate function dbo.split(@c varchar(100 ...
- 启动Selenium RC —— 我的第一个shell
打开终端 1. 新建一个sh文件 $ vim a.sh 2. 写入以下内容 #! /bin/bash cd Desktop/selenium/jar java -jar selenium-server ...
- wuzhicms查找:当前页面使用的哪个文件
要查看这个地址的模版.http://www.wuzhicms.com/item-34-2-1.html 首先,我们的这个地址需要是动态的.而不是生成的静态地址. 打开文件: /www/configs/ ...
- HDOJ-ACM2035(JAVA) 人见人爱A^B
这道题的巧妙方法没有想出来,但是算是优化的暴力破解吧.Accepted import java.io.BufferedInputStream; import java.util.Scanner; pu ...
- jqGrid 设置列宽
在jqgrid显示出来之后,需要手动调整列宽. 1. 经过调查jqgrid本身不支持指定列宽,当然这个是说的的初始化完成后. 2. 经过调查手动是可以调整列宽,所以进行了事件的查看resizestop ...
- 用普通PC主板的蜂鸣器给树莓派(RPI)加个报警器
这两天有点时间,捣鼓了下那闲置好久的树莓派,把普通PC主板的蜂鸣器作为树莓派的报警器用. Raspberry Pi有许多的GPIO(General Purpose Input Output:通用输入/ ...