• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > linux2.4.18----25.文件系统的构建

linux2.4.18----25.文件系统的构建

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了构建根文件系统,文件系统的类型是raw,文件系统的主要目的是,系统找不到指定的文件,u盘的文件系统等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

linux2.4.18----25.文件系统的构建


一. 文件系统的构建
1.busybox的编译
方法: 用虚拟机的redhat9.0进行编译
版本: busybox-1.00 -->make menuconfig -->make -->make install
  1. cong@msi:/work/os/rootfs/busybox/busybox-1.00$ readelf -a ./busybox | grep "NEEDED"
  2. 0x00000001 (NEEDED) Shared library: [libm.so.6] -->所以文件系统中需要包含这两个库libm与libcrypt,是可选的
  3. 0x00000001 (NEEDED) Shared library: [libcrypt.so.1]
  4. 0x00000001 (NEEDED) Shared library: [libc.so.6] -->libc库是最基础的任何程库就需要,是必需的
不需要选择 []Build BusyBox as a static binary (no shared libs)

2. 内核的修改
  1. init/main.c中L128
  2. //int root_mountflags = MS_RDONLY;
  3. int root_mountflags = 0
去掉根文件系统的只读属性,
其中这个root_mountflags会在mount_root-->read_super中设置/dev/hda1的属性为MS_RDONLY

3.etc目录下的文件
  1. cong@msi:/work/os/rootfs/ext2/etc$ tree
  2. .
  3. ├── fstab -->只需要fstab与rcS
  4. ├── init.d
  5. │ └── rcS -->只需要rcS与rcS
  6. └── mtab -->这个文件是mount程序创建的本身不要文件系统中
fstab的内容:挂载proc
  1. cong@msi:/work/os/rootfs/ext2/etc$ cat fstab
  2. proc /proc proc defaults 0 0
rcS的内容,mount all
  1. cong@msi:/work/os/rootfs/ext2/etc$ cat init.d/rcS
  2. #!/bin/sh
  3. mount -a
4.制作根文件系统的脚本
cong@msi:/work/os/rootfs/ext2$ cat creatext2.sh

  1. #!/bin/sh
  2. TOPDIR=`pwd`
  3. create_fs()
  4. {
  5. echo "cong: next create fs"
  6. #create filesystem
  7. cd /tmp/ext2

  8. #先创建系统目录
  9. sudo mkdir -pv dev/ tmp/ sys/ proc/
  10. sudo mknod ./dev/tty1 c 4 1
  11. sudo mknod ./dev/console c 5 1
  12. #sudo cp $TOPDIR/busybox ./bin/
  13. #sudo cp $TOPDIR/src/hello ./bin/sh
  14. sudo cp -arf $TOPDIR/lib ./
  15. sudo cp -arf $TOPDIR/bin ./
  16. sudo cp -arf $TOPDIR/sbin ./
  17. sudo cp -arf $TOPDIR/etc ./
  18. }
  19. mount_fs()
  20. {
  21. echo "cong: next losetup /dev/loop0"
  22. sudo losetup /dev/loop0 ./hdc.img
  23. #512*2048=1048576
  24. echo "cong: next losetup /dev/loop1"
  25. sudo losetup -o 1048576 /dev/loop1 /dev/loop0
  26. echo "cong: next show losetup all"
  27. sudo losetup -a

  28. echo "cong: next mount "
  29. mkdir /tmp/ext2
  30. sudo mount -t ext2 /dev/loop1 /tmp/ext2/
  31. }
  32. #fdisk hdc.img to ext2 83
  33. make_fs()
  34. {
  35. #64M
  36. dd if=/dev/zero of=./hdc.img bs=1M count=64
  37. fdisk ./hdc.img <<EOF
  38. n
  39. p
  40. 1
  41. 2048
  42. 131071
  43. t
  44. 83
  45. w
  46. EOF
  47. sleep 1
  48. fdisk -l ./hdc.img

  49. echo "cong: next losetup /dev/loop0"
  50. sudo losetup /dev/loop0 ./hdc.img
  51. #512*2048=1048576
  52. echo "cong: next losetup /dev/loop1"
  53. sudo losetup -o 1048576 /dev/loop1 /dev/loop0
  54. echo "cong: next show losetup all"
  55. sudo losetup -a

  56. echo "cong: next mkfs ext2 /dev/loop1"
  57. sudo mkfs.ext2 /dev/loop1

  58. echo "cong: next mount "
  59. mkdir /tmp/ext2
  60. sudo mount -t ext2 /dev/loop1 /tmp/ext2/
  61. create_fs
  62. }
  63. umount_fs()
  64. {
  65. sudo umount /tmp/ext2
  66. sudo losetup -d /dev/loop0
  67. sudo losetup -d /dev/loop1
  68. sudo losetup -a
  69. }

  70. clean_fs()
  71. {
  72. echo "cong: next umount /tmp/ext2"
  73. sudo umount /tmp/ext2
  74. echo "cong: next rm -rf /tmp/ext2"
  75. sudo rm -rf /tmp/ext2
  76. echo "cong: next losetup -d"
  77. sudo losetup -d /dev/loop0
  78. sudo losetup -d /dev/loop1
  79. echo "cong: next show losetup"
  80. sudo losetup -a
  81. echo "cong: next rm -rf ./hdc.img"
  82. rm -rf ./hdc.img
  83. }

  84. case "$1" in
  85. fs)
  86. make_fs
  87. ;;
  88. clean)
  89. clean_fs
  90. ;;
  91. mount)
  92. mount_fs
  93. ;;
  94. umount)
  95. umount_fs
  96. ;;
  97. *)
  98. make_fs
  99. ;;
  100. esac
5.用到的
  1. cong@msi:/work/os/rootfs/ext2$ tree
  2. .
  3. ├── bin -->会复制为根文件系统的bin目录
  4. │ ├── busybox
  5. │ ├── busybox_0.60.5
  6. │ ├── cat -> busybox
  7. │ ├── cp -> busybox
  8. │ ├── df -> busybox
  9. │ ├── dmesg -> busybox
  10. │ ├── echo -> busybox
  11. │ ├── grep -> busybox
  12. │ ├── hostname -> busybox
  13. │ ├── ln -> busybox
  14. │ ├── ls -> busybox
  15. │ ├── mkdir -> busybox
  16. │ ├── mknod -> busybox
  17. │ ├── mount -> busybox
  18. │ ├── mv -> busybox
  19. │ ├── netstat -> busybox
  20. │ ├── ping -> busybox
  21. │ ├── ps -> busybox
  22. │ ├── pwd -> busybox
  23. │ ├── rm -> busybox
  24. │ ├── sh -> busybox
  25. │ ├── sync -> busybox
  26. │ ├── touch -> busybox
  27. │ ├── umount -> busybox
  28. │ └── vi -> busybox
  29. ├── creatext2.sh -->制作根文件系统的脚本
  30. ├── etc -->会复制为根文件系统的etc目录
  31. │ ├── fstab
  32. │ ├── init.d
  33. │ │ └── rcS
  34. │ └── mtab
  35. ├── lib -->会复制为根文件系统的lib目录
  36. │ ├── ld-linux.so.2 //解释器
  37. │ ├── libc-2.3.2.so //libc库,这是最基础的
  38. │ ├── libcrypt-2.3.2.so //剩下的libcrypt与libm库单跑helloworld是不需要的
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • linux2.4.18----25.文件系统的构建

相关文章

  • 2017-05-26微博API常用方法,博API常用方法
  • 2017-05-26Java字节流在Android中的使用,java字节流android
  • 2017-05-26android ImageSwitcher,imageswitcher
  • 2017-05-222.4.1 ScrollView(滚动条)
  • 2017-05-26Android仿ios底部弹出框效果,android仿ios底部
  • 2017-05-26活动的生命周期(五)活动的启动模式,生命周期模式
  • 2017-05-26Volley的基本使用,Volley使用
  • 2017-05-26硅谷新闻1--引导界面GuideActivity,1--guideactivity
  • 2017-05-26回顾自定义view三个构造函数,回顾view构造函数
  • 2017-05-26Android 手机卫士10--应用管理器,android10--

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • android测试工具MonkeyRunner--google官网翻译
    • 仿拉手团购App9-- 产品详情界面,团购app9--
    • 详解Android微信登录与分享,详解android分享
    • 安卓003快速入门
    • Android手机输入法按键监听-dispatchKeyEvent
    • android_m2repository_rxx.zip下载地址以及MD5,androidm2repository
    • 从视频中每X秒创建一个缩略图
    • Android的基本世界观——系统简介,组件逻辑及其他
    • android开发之路08(ListView&amp;Adapter),androidlistview
    • Linux内核系列—9.操作系统开发之Loader,linuxloader

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有