构建linux系统(CentOS系统)

这篇文章给大家聊聊关于构建linux系统,以及CentOS系统对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

用BusyBox 构建根文件系统

构建Linux嵌入式系统的基石是根文件系统,它是一个集成核心组件的单一目录,为后续软件和设备管理提供基础。根文件系统内包含了诸如/bin的系统命令(strong>如ls、cd等),/dev管理设备,/etc配置文件以设置环境,/lib存放必要库文件,/mnt用于临时挂载,/proc虚拟系统信息确保系统运行透明,/usr为软件资源库,/var存储可变数据,而/sbin则包含管理员工具,/sys用于设备管理和监控,/opt则存放可选软件,sysfs和sysfs类似但功能略有差异。

BusyBox,这个强大的瑞士军刀工具,扮演着构建根文件系统的关键角色。首先,从官网下载适合的版本,如busybox-1.29.0,并在Ubuntu虚拟机中借助NFS服务进行定制。这里,我们需要确保在Makefile中针对目标架构进行适当的调整,尤其是处理可能的COMPILE错误,使用绝对路径,并解决中文字符问题,比如在源码中的printable_string.c和unicode.c文件中,可能需要注释或调整字符编码规则以支持中文显示。

定制BusyBox的过程可通过两种方式完成:defconfig(默认配置)或图形化的menuconfig。推荐动态编译,并激活mdev和Unicode支持,以确保兼容性和功能性。

编译步骤如下:首先运行make defconfig或 make menuconfig,然后选择动态编译和必要的Unicode支持。接着,使用make make install CONFIG_PREFIX=/path命令将编译后的工具和文件安装到指定的rootfs目录,这里会生成bin、sbin、usr和linuxrc文件夹,其中Linux内核通过寻找init程序(通常是linuxrc)进入用户态。

接下来,为了增强根文件系统的功能性,我们需要添加lib库。从交叉编译器的/usr/local/arm/gcc-linaro-...目录下的arm-linux-gnueabihf/libc/lib子目录中复制.so和.a文件到rootfs/lib,特别注意处理特殊库文件ld-linux-armhf.so.3。

除了基本的文件夹结构,如dev、proc、mnt、sys、tmp和root,还需要创建额外的目录以支持系统的完整功能。例如,dev目录用于设备文件管理,proc用于虚拟系统信息,mnt用于挂载外部存储,sys用于设备驱动的配置,而tmp则存放临时文件。

最后,通过NFS服务将rootfs挂载到开发板上,确保在bootargs中正确设置root,例如:root=/dev/nfs, nfsroot=192.168.10.100:/home/andyxi/linux/nfs/rootfs, proto=tcp, rw。然后,通过串口设置bootargs启动Linux,如果出现错误,表明rootfs可能还不完整,后续我们将深入探讨如何修复和完善这个关键步骤。

获取BusyBox的具体资源,请关注相关渠道并输入关键词"busybox"获取详细信息。

如何通过chroot构建linux操作系统

在已有的Linux操作系统中,安装另一个开源操作系统,我们一般是先构建新操作系统的chroot基础环境,然后chroot进入新构建的操作系统环境来安装和配置。这种构建和安装操作系统的方法,对于我们学习和研究操作系统结构和原理应该说比较重要。本文举了简单的例子,以Fedora Core 5.0为基础,通过chroot来构建Slackware 10.2;

1、chroot方式安装操作系统的目的和用途

chroot工具是Linux操作系统都具备的工具,从表面的意思看,chroot是从一个/根到另一个/根。在一个Linux操作系统中安装另一个操作系统,就是利用chroot的这个特点。首先创建chroot运行的基础环境,然后通过chroot到新的/根,然后再用相应的软件包管理工具把新的操作系统其它软件包安装上;

几乎所有的开源操作系统都可以用chroot的方法来安装,比如Gentoo、LFS及CRUX比较常用chroot;通过chroot安装操作系统,好象堆积木一样,一块一块的把操作系统安装起来,所以Gentoo和LFS的Fans特别有成就感。呵,也说是操作系统全手工打造,成就感自然不言而喻了;

天极软件专题专区精选

Windows Vista专区 POPO专区 QQ专区QQ挂机注册表专区 Windows优化

Flash MX视频教程 Photoshop视频教程网页设计视频教程照片处理数字暗房

PPT动画演示教程 Excel动画教程集 Word动画演示教程 Google专区

特洛伊木马专区黑客知识教程专区防火墙应用专区了解Web2.0

Windows API开发专区网络编程专区 VB数据库编程专区图像处理与多媒体编程

通过chroot安装操作系统,我们能学到什么呢?主要是能知道一个操作系统最少需要多少部件可以“动”起来,以及了解一个操作系统需要哪些基础的必备的“部件”,这对开发自己的基于Linux操作系统以及了解操作系统的构成及原理是比较重要的;

2、通过chroot方式安装操作系统所需要的系统环境

最根本的环境是是在您的机器有得有一个能运行的Linux操作系统或一个LiveCD;

3、通过chroot安装操作系统的流程

要下面几个流程:

一、规划硬盘分区或创建映像文件;请参考:

二、创建文件系统;

三、挂载文件系统;

四、安装基础系统;主要通过解压软件包来实现;

五、修改新系统的配置文件,比如位于新系统中的/etc/fstab

六、解决依赖关系,安装软件包管理工具;

七、通过chroot进入新系统;

八、通过新系统的软件包我管理工具来安装其它软件包;

九、处理引导问题,比如GRUB引导之类的

4、操作系统安装安装目的地的介质说明;

一个操作系统可以安装在物理硬盘中,也可以安装在一个映像文件中;安装在物理硬盘中大家都能理解。安装在一个映像文件中怎么理解呢?比如通过VMWARE来虚拟安装操作系统是不是安装在一个文件中呢?是的,和这个意思差不多;再说一点,交换分区swap也可以是文件;再比如Xen虚拟操作系统就可以安装在文件映像中;

安装在映像文件中的操作系统,可以用来学习,通过chroot访问,也可以通过xen来虚拟等......还可以做成类似file.iso的形式来存储文件等;

5、实说简说在Fedora中安装Slackware 10.2;

本例是在Fedora Core 5.0中通过chroot安装Slackware 10.2,安装目的地的介质分为两种,一种是物理硬盘;一种是映像文件。安装在物理硬盘的可以通过GRUB或LILO等引导管理器来独立真实运行,安装在映像文件中的能通过chroot访问或Xen虚拟运行;

5.1通过chroot安装Slackware 10.2到一个硬盘物理分区中;

这个过程好象是有点多余,但写一写也好,这是大多开源操作系统的安装都通用的,也是最原始、最有效的方法,也就是说在一个已有的操作系统环境中安装另一个操作系统;

挂载文件系统就是通过mount来挂载;

举例:

比如我的硬盘/dev/hda5是空白分区,并且我想创建/dev/hda5为ext3文件系统,并且把它挂载到/mnt/slack目录中,然后通过chroot来安装Slackware 10.2;

第一步:您要通过分区工具fdisk或parted来规划您的分区

第二步:创建文件系统;

[root@localhost

~]#mkdir/mnt/slack

[root@localhost~]# mkfs.ext3/dev/hda5注:格式化/dev/hda5为ext3文件系统;

第三步:挂载文件系统;

[root@localhost~]# mount/dev/hda5/mnt/slack注:挂载/dev/hda5到/mnt/slack目录;

第四步:挂载slackware 10.2光盘的第一张,安装基础系统;

[root@localhost

~]# mount-o loop slackware-10.2-install-d1.iso/mnt/cdrom/

我们可以先在/mnt/slack目录中创建一个软件包存放目录,用于存放slackware-10.2-install-d1.iso中的所有内容;

[root@localhost

~]#mkdir/mnt/slack/pack

[root@localhost~]# cp-rp/mnt/cdrom/*/mnt/slack/pack

然后把slackware第一张盘中的slackware目录中的a目录中的所有包都进行解压缩,以及d目录中glibc开头的包,d目录中的zlib以及zsh并且把解出来目录,比如/usr、etc、lib等所有目录都复制到/mnt/slack中;

第五步:解决依赖关系;

如果我们运行下面的命令提示没有/bin/bash这个文件时,我们要解决依赖关系;通过解决依赖关系,也会发现运行chroot所需要的必备的基础软件包;

[root@localhost

~]# chroot/mnt/slack

如果提示缺少一些文件,我们可以自行判断缺少哪些包;当我们进入/mnt/slack/bin目录发现,的确没有bash这个文件,所以我们要复制一个bash过去;

[root@localhost

~]# cd/mnt/slack/bin

[root@localhost bin]# cp bash2.new bash

这时我们还要判断 bash所依赖的库文件;

[root@localhost

bin]# ldd bash

出来的依赖关系,大多是glibc的,glibc被安装在了/mnt/slack/lib/tls目录中,我们可以根据提示一个一个的做链接。少什么东西就做什么的链接;要看/mnt/slack/lib中是否有glibc的文件,然后做链接。如果是存放在tls目录中的,也要链到/mnt/slack/lib中。链接时要用相对路径,不能用绝对路径;

创建链接文件和在Windows创建快捷方式比较相似,用ln命令;

#ln-s原文件名新文件名

什么才算解决了 bash的依赖关系了呢?直到能chroot/mmt/slack才算成功;

第六步: chroot成功,进入Slackware系统;

chroot成功后,我们就能进入Slackware系统,然后通过pkgtool或installpkg工具来安装其它的软件包,比如内核什么的;

[root@localhost

~]# chroot/mnt/slack

第七步;更改/etc/fstab文件;

如果要让一个操作系统独立运行,非得写一写/etc/fstab文件,对于这个您可以参考,比如下面的这个例子,您改一改就可以用了;

/dev/hda7

swap swap defaults 0 0

/dev/hda6/ reiserfs defaults 1 1

/dev/hda1/mnt/winc

ntfs ro 1 0

/dev/hda3/mnt/wind vfat defaults 1 0

/dev/cdrom/mnt/cdrom

auto noauto,owner,ro 0 0

/dev/fd0/mnt/floppy auto noauto,owner 0 0

devpts

/dev/pts devpts gid=5,mode=620 0 0

proc/proc proc defaults 0 0

none/sys

sysfs defaults 0 0

第八步:引导系统;

要通过GRUB或LILO引导管理器实现对Slackware的引导;

5.2通过chroot把Slackware 10.2安装在一个映像文件中;

第一步:创建映像文件;

比如我们创建一个名为slack.img的映像文件,体积为2G的,就可以用下面的命令;bs是每个块的大小为1M,共创建2000块;

[root@localhost

~]# dd if=/dev/zero of=slack.img bs=1M count=2000 seek=1024

第二步:创建文件系统;

我们可以创建为ext3、fat32或reiserfs等文件系统,创建文件系统,

[root@localhost

~]#/sbin/mkfs.ext3 slack.img

mke2fs 1.38(30-Jun-2005)

slack.img is not

a block special device.

Proceed anyway?(y,n) y

第三步:挂载已被格式化映像文件;

[root@localhost

~]# mkdir/mnt/slack

[root@localhost~]# mount-o loop slack.img/mnt/slack/

第四步以后和物理硬盘操作基本相同,省略过去;

6、有关软件包rpm、tgz、deb等软件包提取;

发行版都有一定的软件包格式,比如 file.rpm、file.deb或file.tgz或file.tar.gz等;rpm格式的软件包,一般基于Redhat或Fedora为基础开发的都采用RPM格式。因为chroot安装操作系统,首要的是从一个软件包中提取文件,然后复制到文件系统中,所以提取文件工具也得做一点解说;

6.1从rpm软件包抽取文件;

操作的前提是得有rpm的管理工具,也就是说得有rpm等相关命令;

命令格式: rpm2cpio file.rpm|cpio-div

举例:

[root@localhost

RPMS]# rpm2cpio gaim-1.3.0-1.fc4.i386.rpm|cpio-div

抽取出来的文件就在当用操作目录中的 usr和etc中;

其实这样抽到文件不如指定安装目录来安装软件来的方便;也一样可以抽出文件;

为软件包指定安装目录:要加-relocate参数;下面的举例是把gaim-1.3.0-1.fc4.i386.rpm指定安装在/opt/gaim目录中;

[root@localhost

RPMS]# rpm-ivh--relocate/=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm

Preparing...

########################################### [100%]

1:gaim###########################################

[100%]

[root@localhost RPMS]# ls/opt/

gaim

这样也能一目了然;gaim的所有文件都是安装在/opt/gaim中,我们只是把gaim目录备份一下,这样其实也算提取文件的一点用法;

6.2 file.tgz、file.tar.gz和file.tar.bz2的提取;

[root@localhost

~]# tar zxvf file.tgz

[root@localhost~]# tar zxvf file.tar.gz

[root@localhost

~]# tar zxvf file.tar.bz2

6.3 file.deb的提取;

[root@localhost

~]# ar x file.deb

[root@localhost~]# tar zxvf data.tar.gz

file.deb通过ar x来解包,然后再把data.tar.gz解开就看到相关的目录和文件了;

6.4 file.iso文件的提取;

这样的文件在Linux主要通过mount-o loop file.iso挂载地址;比如;

[root@localhost

~]# mount-o loop slackware-10.2-install-d1.iso/mnt/cdrom/

7、chroot成功切入新的操作系统后的软件安装问题补充;

如果通过chroot能进入新安装的操作系统,我们就可以新操作系统的软件包管理工具来安装其它软件包了,比如 Slackware用的是pkgtool或installpkg工具;Fedora用的是 rpm等工具;大多发行版所用的工具不尽相同,以发行版为准;

8、关于本文;

在去年的时候就想写此文,随着时间的推移,今天想起来的事情可能明天就忘的差不多了,所以用到chroot的时候就想写,用不到的时候就把写文档的事扔到一边。今天正好写关于Xen的文档,也恰恰用到chroot方式安装新的操作系统,所以“被迫”中写了一篇。虽然涉及chroot的功用少了点,但大体上还是把chroot说了差不多了;可能本文的名字有点不符合,我也不知道用什么命名标题不好。

LINUX系统是什么

通俗来讲,就是一款操作系统。

跟你用的windows、苹果mac OS系统、手机安卓系统一样。

区别在于,Linux系统是开源的,免费的,主要运用在服务器端。也就是公司的服务器上。

上面一般是用来跑服务的,比如web服务、DNS服务、游戏服务。这些服务程序可以为用户提供服务,比如你玩的游戏,大多数的服务端都是运行在Linux平台哦。

Linux非常有意思,可以花点时间学习学习,经典的学习教程有鸟哥私房菜,马哥linux等。希望能对你有帮助。

阅读剩余
THE END