1.利用buildroot自动生成

A。确保自己已经建立好了可以使用的buildroot

具体如何建立,请参考其他相关资料

B。配置使buildroot支持ext2的rootfs

make menuconfig

Target filesystem

options --->

| |                         [*] ext2 root

filesystem

| |                         (0)   size in blocks (leave at 0 for

auto calculation)

| |                         (0)   inodes (leave at 0 for

auto calculation)

| |                         (0)   reserved blocks

percentage

这样,保存退出之后,再make

buildroot就会自动去下载并编译,生成对应的genext2fs工具,

去制作生成对应的rootfs镜像了,生成的文件在:

binaries/uclibc/rootfs.arm-.ext2

2.利用工具mke2fs工具手动制作rootfs

前提:

A。根文件系统所有需要的文件都已经准备好了

此处放在root文件夹下,ls结果为:

drwxr-xr-x   19

root     root         4.0k Dec 31 17:06 ./

drwxr-xr-x   19 root

root         4.0k Dec 31 17:06 ../

drwxr-xr-x    2 root     root         4.0k

Sep 23 2009 bin/

drwxr-xr-x   11 root     root         8.0k Sep 20 2009

dev/

drwxr-xr-x    5 root     root         4.0k Sep 23 2009

etc/

drwxr-xr-x    3 root     root         4.0k Sep 20 2009

home/

drwxr-xr-x    3 root     root         4.0k Sep 23 2009

lib/

lrwxrwxrwx    1 root     root           11 Dec 31 17:04 linuxrc ->

bin/busybox*

drwx------    2 root     root        16.0k Dec 31 17:01

lost+found/

drwxr-xr-x    4 root     root         4.0k Sep 20 2009

media/

drwxr-xr-x    4 root     root         4.0k Dec 31 17:01

mnt/

drwxr-xr-x    2 root     root         4.0k Sep 20 2009

opt/

dr-xr-xr-x   29 root     root            0 Dec 31 17:00

proc/

drwxr-xr-x    2 root     root         4.0k Sep 23 2009

root/

drwxr-xr-x    2 root     root         4.0k Sep 23 2009

sbin/

drwxr-xr-x   10 root     root            0 Dec 31 17:00

sys/

drwxr-xr-x    2 root     root         4.0k Sep 23 2009

test/

drwxrwxrwt    2 root     root           40 Dec 31 17:00

tmp/

drwxr-xr-x    7 root     root         4.0k Sep 20 2009

usr/

drwxr-xr-x    3 root     root         4.0k Sep 20 2009 var/

B下载需要的工具的源码

此处需要mke2fs工具,其作用是:

针对一个分区/设备,创建一个ext2/ext3的文件系统

对于mke2fs的用法,简单提示一下:

a.常见得mkfs.ext2 和

mkfs.ext3其实就是mke2fs的链接,即制作ext2和ext3都是用的mke2fs这个工具:

-rwxr-xr-x    1 root

root        53.8k Sep 23 2009 mke2fs*

lrwxrwxrwx    1 root

root            6 Dec 31 17:04 mkfs.ext2 -> mke2fs*

lrwxrwxrwx    1

root     root            6 Dec 31 17:04 mkfs.ext3 -> mke2fs*

b.如果参数是-j,表示加上日志,就是ext3,否则默认的是ext2.

制作ext2/ext3的rootfs的步骤:

A .格式化设备/分区

mkfs.ext2

/dev/lba

输入结果如下:

[root@10 mnt]# mkfs.ext2 /dev/lba

mke2fs 1.39

(29-May-2006)

Filesystem label=

OS type: Linux

Block size=4096

(log=2)

Fragment size=4096 (log=2)

488640 inodes, 976640 blocks

48832

blocks (500%) reserved for the super user

First data block=0

Maximum

filesystem blocks=1002438656

30 block groups

32768 blocks per group, 32768

fragments per group

16288 inodes per group

Superblock backups stored on

blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done

Writing superblocks

and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or

180 days,

whichever comes first. Use tune2fs -c or -i to override.

B。挂载设备

注:此处我们nfs启动

将/dev/lba这个块设备mount上去:

mkdir

/mnt/lba

mount -t ext2 /dev/lba /mnt/lba

C。拷贝所有的rootfs的文件到ext2分区里

cp root/* /mnt/lba -a

注意: cp命令此处的-a参数即-dpR,即

-d

保留链接,如果不加此参数,拷贝时候就会直接拷贝文件,就会极大增加拷贝后的rootfs的大小

-p

尽可能地保留原先文件的属性,比如mode,ownership,timestamp等

-R 递归

这样,就可以将rootfs文件全部拷贝到此块设备里面了。

然后,就可以继续我们需要的,启动时候,从/dev/lba,按照ext2方式挂载rootfs,启动系统了。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐