Linux内核开发之文件系统的准备

准备的是 busybox-1.30.0.tar.bz2(体积小,又实用)选择的是一个最简单的文件系统,不带C库的,所以在编译busybox的时候就要把它编译为静态链接库的形式,就不需要依赖任何的动态链接库。

下载buysbox源码,下载地址:

https://busybox.net/downlads/

我使用的版本是busybox-1.30.0

1.解压buysbox源码

# tar xvf busybox-1.30.0.tar.bz2

2.配置buysbox源码

在这里我们把busybox配置为静态编译,这样busybox在运行的时候就不需要额外的动态链接库了。

步骤:

# make menuconfig
​
Busybox Settings   --->
    Build Options   --->
        [*] Build BusyBox as a static binary (no shared libs)  

详细步骤:

# cd busybox-1.30.0/
# make menuconfig

 

进入上述界面后选择 Setting  ---> 进入里面 选到[ ] Build static binary (no shared libs) 按下空格变为[*]将模块驱动编译到内核中,后面就一路Esc退出。

3.编译和安装

make && make install

执行make的时候会吧busybox编译出来,执行make install 的时候会将busybox和相关的工具安装到源码目录下面的 _install目录下面。

 

 进入到_install里面文件就是编译后的busybox了

其实这些文件都是链接文件,通过软链接的方式链接到了busybox。

Linux “tree”功能是,以树状图列当前出目录的所有文件,包括子目录下的文件。Linux默认是未安装“tree”命令的。

一般下载命令为sudo apt-get install tree

会有出错情况如:在Ubuntu中用apt-get安装软件,系统报出Unmet dependencies错误。 Unmet dependencies. Try ‘apt --fix-broken install’ with no packages (or specify a solution)

解决方案:

sudo apt --fix-broken install
sudo apt-get update
sudo apt-get -f upgrade

然后我们选择手动安装

#下载 (虚拟机下,也可在Windows下手动下载,然后拷贝到Ubuntu下执行解压安装)
wget http://mama.indstate.edu/users/ice/tree/src/tree-1.8.0.tgz
#解压
tar -zxvf tree-1.8.0.tgz 
#进入目录
cd tree-1.8.0 
#安装
sudo make install
#测试
tree

之前我们换源之后可能会造成一些乱码显示,这时解决方法为把源换回去用sudo apt-get update和sudo apt-get -f upgrade更新重启一下就好了

 

这些链接文件其实本质没有任何区别,唯一区别就是链接文件的名字,busybox里是通过第一个参数来判断执行的是哪个命令,比如说arch命令,就会通过这个来调用相关的函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
模拟Linux文件系统。在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的 模拟Linux文件系统 在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序对此空间进行管理,以模拟Linux文件系统,具体要求如下: (1) 要求盘块大小1k 正规文件 (2) i 结点文件类型 目录文件 (共1byte) 块设备 管道文件 物理地址(索引表) 共有13个表项,每表项2byte 文件长度 4byte 。联结计数 1byte (3)0号块 超级块 栈长度50 空闲盘块的管理:成组链接 ( UNIX) 位示图法 (Linux) (4)每建一个目录,分配4个物理块 文件名 14byte (5)目录项信息 i 结点号 2byte (6)结构: 0#: 超级块 1#-20#号为 i 结点区 20#-30#号为根目录区 3. 该管理程序的功能要求如下: (1) 能够显示整个系统信息,源文件可以进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。 (2) 改变目录:改变当前工作目录,目录不存在时给出出错信息。 (3) 显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。 (4) 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。 (5) 删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。 (6) 建立文件(需给出文件名,文件长度)。 (7) 打开文件(显示文件所占的盘块)。 (8) 删除文件:删除指定文件,不存在时给出出错信息。 4. 程序的总体流程为: (1) 初始化文件目录; (2) 输出提示符,等待接受命令,分析键入的命令; (3) 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值