本章目标 l 了解Linux的文件系统层次标准(FHS) l 了解根文件系统下各目录的作用 l 掌握构建根文件系统的方法:移植Busybox、构造各个目录、文件等 l 掌握制作yaffs、jffs2文件系统映象文件的方法...推广: 想了解更多嵌入式知识请移步到 100ask.taobao.com 17.1 Linux文件系统概述 17.1.1 Linux文件系统的特点 类似于Windows下的C、D、E等各个盘,Linux...流程图如图17.3所示,其中与构建根文件系统关系密切的是控制台的初始化、对inittab文件的解释及执行。 图17.3 Busybox init程序流程图 ?...17.3 使用glibc库 在第二章制作交叉编译工具链时,已经生成了glibc库,可以直接使用它来构建根文件系统。...17.4 构建根文件系统 上面两节在介绍了如何安装Busbybox、C库,建立了bin/、sbin/、usr/bin/、usr/sbin/、lib/等目录──最小根文件系统的大部分目录、文件已经建好。
如果解除了虚拟内核文件系统的挂载,必须通过手动或重启系统的方式重新挂载它们,保证在进入 chroot 时它们已经挂载好。...第 7.3.2 节 “挂载和填充 /dev”和第 7.3.3 节 “挂载虚拟内核文件系统”已经说明了这一过程。...正如我们已经讨论过的,它们在链接到共享库,特别是使用 autotools 以外的构建系统时,是不必要,甚至有害的。...执行以下命令删除它们: find /usr/lib /usr/libexec -name \*.la -delete 上文中构建的编译器仍然有一部分安装在系统上,它现在已经没有存在的意义了。...执行命令删除它: find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf 最后,移除上文开始时创建的临时 ‘tester’ 用户账户
Linux API 头文件(在 linux-3.19.tar.xz 中)展示了供 Glibc 使用的内核 API。...Linux 内核需要展示供系统 C 库(在 LFS 中是 Glibc)使用的应用程序编程接口(API)。 这通过在 Linux 内核源代码 tar 包中包括一些 C 头文件来完成。...首先,切换到 lfs 用户下: su - lfs 确保环境变量已生效,并且解压软件包 echo $LFS cd $LFS/sources tar xf linux-3.19.tar.xz cd linux...INSTALL_HDR_PATH=dest headers_install cp -rv dest/include/* /tools/include 安装完成后清理工作: cd .. rm -rf linux
3 Makefile 这里主要对内核源代码各级子目录中的kbuild(内核的编译系统)Makefile 进行简单介绍,这部分是内核模块或设备驱动开发者最常接触到的。...如果一个模块由多个文件组成,会稍微复杂一些,这时候应采用模块名加-y 或-objs 后缀的形式来定义模块的组成文件,如下: # # Makef ile for the linux ext2-f ilesystem
本文讨论如何配置 systemd-timedated 系统服务,它的作用是配置系统时钟和时区。...timedatectl 工具告诉 systemd-timedated 您的硬件时钟是 UTC 还是本地时间: timedatectl set-local-rtc 1 timedatectl 也能修改系统时间和时区...如果要修改系统时间,执行以下命令: timedatectl set-time YYYY-MM-DD HH:MM:SS 硬件时钟也会同时被更新。...该守护程序没有被设计为替代现有成熟的 NTP 守护程序,而是一个仅仅实现了 SNTP 协议的客户端,可以用于一些不太复杂的任务,或是资源紧张的系统。...注意,当系统时钟设定为本地时间时,systemd-timesyncd 不会更新硬件时钟。
Util-linux 软件包包含了各种各样的小工具。...首先,切换到 lfs 用户下: su - lfs 确保环境变量已生效,并且解压软件包 echo $LFS cd $LFS/sources tar xf util-linux-2.26.tar.xz cd...util-linux-2.26 现在配置 Util-linux 准备编译: ....安装软件包: make install 安装完成后清理工作: cd .. rm -rf util-linux-2.26 ---- 本次分享到此结束啦~ 如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持
Util-linux 软件包其它实用程序。包括处理文件系统、控制台、分区以及消息等工具。...首先新建目录用于存储 hwclock 程序: mkdir -pv /var/lib/hwclock 安装 Util-linux 首先进入到源码目录,解压软件包: cd /sources tar xf util-linux...-2.26.tar.xz cd util-linux-2.26 准备编译 Util-linux: ....为了运行测试套件,必须保证当前运行 的系统中用于内核的 CONFIG_SCSI_DEBUG 选项可用,还必须保证以一个模块的方式编译。 把它构建到内核中可以防止启动。...如果需要的话,可以在重启进入完整的 LFS 系统后用以下命令运行该测试: bash tests/run.sh --srcdir=$PWD --builddir=$PWD 安装软件包: make install
我们继续Linux开发工具的学习,这篇文章我们要学的是Linux中的项目自动化构建工具——make/Makefile 1....背景 make和makefile提供了自动化构建的能力,可以根据源文件的依赖关系和规则自动决定哪些文件需要重新编译。而直接使用gcc需要手动指定每个源文件的编译命令,不具备自动化的构建功能。...make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。...makefile是一个文本文件,它包含了构建目标(target)和构建规则(rule)。在makefile中,你可以定义编译器的选项、源文件的依赖关系以及如何生成可执行程序等内容。...make命令会读取makefile文件并根据其中的规则来进行构建。 使用make和makefile的主要步骤如下: 创建一个makefile文件,并为各个目标指定构建规则。
Util-linux 软件包包含若干工具程序。这些程序中有处理文件系统、终端、分区和消息的工具。...安装 Util-linux 解压软件包: cd /sources tar -xf util-linux-2.37.2.tar.xz cd util-linux-2.37.2 准备安装 Util-linux...lib/hwclock/adjtime \ --libdir=/usr/lib \ --docdir=/usr/share/doc/util-linux...chown -Rv tester . su tester -c "make -k check" 安装该软件包: make install 安装完成后清理工作: cd .. rm -rf util-linux
Linux API 头文件(在 linux-3.19.tar.xz 里)会将内核 API 导出给 Glibc 使用。...Linux API 头文件的安装 Linux 内核需要提供一个应用编程接口(API)供系统的 C 库(LFS 中的 Glibc)调用。这通过整理 Linux 内核源码包中的多个 C 头文件来完成。...首先进入到源码目录,解压软件包: cd /sources tar xf linux-3.19.tar.xz cd linux-3.19 确保在之前的动作里没有留下旧文件和依赖关系: make mrproper.../usr/include/linux/*.h:Linux API Linux 头文件 /usr/include/mtd/*.h:Linux API MTD 头文件 /usr/include/rdma/*....h:Linux API RDMA 头文件 /usr/include/scsi/*.h:Linux API SCSI 头文件 /usr/include/sound/*.h:Linux API 音频头文件
同样还可以用宿主系统里的 strip 命令为 /tools 目录下的 strip 二进制文件清理无用内容。 注意不要对库文件使用 --strip-unneeded 选项。...改变属主 当前,$LFS/tools 目录属于 lfs 用户,这是一个只存在于宿主系统上的帐号。 如果继续保持 LFS/tools 目录的现状,其中的文件将属于一个没有相关联帐号的用户ID。...为了解决这个问题,你可以在随后新的 LFS 系统里创建 /etc/passwd 文件时增加一个 lfs 用户,并注意给它分配和宿主系统里相同的用户和组ID。...root 用户下执行: export LFS=/mnt/lfs chown -R root:root $LFS/tools 尽管 LFS/tools 目录可以在 LFS 系统构建完成后删除,但仍然可以保留下来用于构建额外的相同版本...LFS 系统。
现在准备创建 LFS 文件系统里的一些目录结构。...关于 FHS 兼容性 这个目录树是基于文件系统目录结构标准(FHS)(参考:https://wiki.linuxfoundation.org/en/FHS)。
通常,其构建后的输出将包含目标设备的整个软件映像,包括内核、设备驱动程序、库和应用程序软件(有时也包括引导加载程序)。 在本文中,我将对构建嵌入式 Linux 系统的四种常用方式进行纵览。...完全公开:我在嵌入式 Linux 中的大部分工作都集中在 Yocto 项目上,而且我对这个系统的认识和偏见可能很明显。 Yocto 使用 Openembedded 作为其构建系统。...核心构建系统用 Make 编写,并且足够短以便开发人员了解整个系统,同时可扩展到足以满足嵌入式 Linux 开发人员的需求。 Buildroot 核心通常只处理常见用例,但它可以通过脚本进行扩展。...有些公司会为这里讨论的许多选项提供经过验证和支持的配置,除非您拥有嵌入式 Linux 构建系统方面的专业知识,否则这是一个不错的选择,可以让您专注于核心能力。...总结 构建嵌入式 Linux 系统有多种选择,每种都有优点和缺点。将这部分设计放在优先位置至关重要,因为在以后的过程中切换系统的成本非常高。除了这些选择之外,还有新的系统在开发中。
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
/vim/vim74/doc /usr/share/doc/vim-7.4 如果要把一个 X Window 系统安装在 LFS 系统上,可能得在安装完 X 系统后再重新编译 Vim。
Libstdc++ 是 GCC 源文件的一部分。首先应该解压 GCC 的压缩包,然后进入 gcc-4.9.2 文件夹:
之前说过,不强求为本章中所构建的临时工具运行测试套件。不过你仍然要测试Tcl的话可以用下面的命令: TZ=UTC make test Tcl 测试套件在宿主机某些特定条件下会失败,原因很难推测。
《深度探索linux操作系统:系统构建和原理解析》是探索linux操作系统原理的里程碑之作,在众多的同类书中独树一帜。...它颠覆和摒弃了传统的从阅读linux内核源代码着手学习linux操作系统原理的方式,而是基于实践,以从零开始构建一个完整的linux操作系统的过程为依托,指引读者在实践中去探索操作系统的本质。...linux操作系统10几年的心得和经验,能避免后来者在学习中再走弯路。...在第2章中构建了编译工具链,这是后面构建操作系统各个组件的基础。...第6~7章首先构建了操作系统的基础图形系统,然后在此基础上构建了桌面环境。
领取专属 10元无门槛券
手把手带您无忧上云