根文件系统制作
- 格式:pdf
- 大小:72.88 KB
- 文档页数:3
根文件系统制作记录一、所用工具Busybox-1.16.1arm-linux-gcc-4.3.2二、制作过程1.编译/安装Busybox1.1下载Busybox及其补丁从/ 下载busybox-1.16.1.tar.bz2及该版本的所有补丁。
补丁文件复制到/work/create_rootfs/busybox-1.16.1-patch目录下。
使用如下命令将busybox-1.16.1.tar.bz2解压到busybox-1.16.1目录$ tar xjf busybox-1.16.1.tar.bz21.2给Busybox打上补丁可以手工逐一给Busybox打补丁,也可以编写脚本自动帮我们完成打补丁的工作,这里采用后面一种方法。
$ gedit /work/create_rootfs/patch.sh$ cd /work/create_rootfs$ sudo chmod +x ./patch.sh$ ./patch.sh若最后输出“Patching all file is finish!”则表示所有补丁都正确的打上了。
1.3配置Busybox若忘记设定交叉编译器和目标板体系结构,则可能在内核启动末期出现下面的错误:在Busybox目录下执行如下命令进入配置界面:$ make menuconfig请使用以下的配置(红色部分表示与Busybox默认配置不同而需要修改的,其他的则需确认):(1)Busybox Settings--->General Configuration--->[*] Show verbose applet usage messages[*] Store applet usage messages in compressed form[*] Support –install [-s] to install applet links at runtime[*] Enable locale support(system needs locale for this to work)[*] Support for –long-options[*] Use the devpts filesystem for unix98 PTYs[*] Support writing pidfiles[*] Runtime SUID/SGID configuration via /etc/busybox.config[*] Suppress warning message if /etc/busybox.conf is not readableBuild Options--->[*] Build BusyBox as a static binary(no shared libs)[*] Build with Large File Support(for accessing files>2GB)Installation Options->[]Don’t use /usrApplets links (as soft-links) --->(./_install) BusyBox installation prefixBusybox Library Tuning --->(6)Minimum password legth(2)MD5:Trade Bytes for Speed[*]Fsater /proc scanning code(+100bytes)[*]Command line editing(1024)Maximum length of input[*] vi-style line editing commands(15) History size[*] History saving[*] Tab completion[*]Fancy shell prompts(4) Copy buffer size ,in kilobytes[*]Use ioctl names rather than hex values in error messages[*]Support infiniband HW(2)Linux Module Utilities--->(/lib/modules)Default directory containing modules(modules.dep)Default name of modules.dep增加对mdev的支持:(3)Linux System Utilities --->[*]Support /etc/mdev.conf[*]Support command execution at device addition/removal1.4安装Busybox将Busybox安装到/work/create_rootfs/rootfs目录下,Busybox将在该目录下创建如下几个文件和目录:2.构建根文件系统2.1创建根文件系统下必要的目录为了创建根文件系统下的其他目录与文件,我们可以采用手工敲命令创建的方式,也可以编写脚本自动完成,这里采用后一种方式。
内核在采用默认配置情况下,还要修改以下一些配置:make menuconfig进入菜单设置File systems --->[*] Miscellaneous filesystems ---><*> Journalling Flash File System v2 (JFFS2) support//支持JFFS2<*>Compressed ROM file system support (cramfs) //支持cramfs<*> YAFFS2 file system support //支持YAFFS2注意:如果上面这些选项没有选上,则内核无法找到根文件系统1、制作cramfs映像:压缩rootfs根文件系统生成cramfs./mkcramfs rootfs rootfs.cramfsrootfs.cramfs就是我们要烧写到目标板的映像文件2、在uboot下如下操作,将镜像rootfs.cramfs写入nandflash tftp 30008000 rootfs.cramfsnand erase 560000 40000000nand write 30008000 560000 31d000setenv bootargs 'noinitrd root=/dev/mtdblock3 console=ttySAC0,115200 init=/linuxrc mem=64M'saveenv3、进入文件系统后的运行界面创建一个文件:vi txt输入任意内容:asdasdasd保存:wq你会发现cramfs文件系统是只读的,无法保存提示:"txt" Read-only file system目录也无法创建的:[root@mini2440]#mkdir qqmkdir: cannot create directory 'qq': Read-only file system压缩rootfs根文件系统生成jffs2./mkfs.jffs2 -r rootfs -o rootfsmini.jffs2 -e 0x20000 --pad=0x800000 -nrootfsmini.jffs2就是我们要烧写到目标板的映像文件注意:(1)-r :指定要做成image的目录名。
根文件系统实验一、实验目标用busybox定制一个很小的文件系统,并且运行用户编译的hello(动态链接)。
二、软件包busybox:/downloads/busybox-1.10.3.tar.bz2bash:ftp:///gnu/bash/bash-3.2.tar.gz三、实验步骤3.1、建立工作目录设定工作目录为/root/build_rootfs/,该目录主要用来编译busybox,bash等制造根文件系统的软件,下载busybox,bash到该目录;mkdir/root/build_rootfs3.2、建立根目录该目录就是我们要移植到目标板上的目录,对于嵌入式的文件系统,根目录下必要的目录包括bin,dev,etc,usr,lib,sbin,proc,sys,tmp;这里设定根目录是/root/rootfs;busybox、bash编译之后,安装到该目录下;mkdir/root/rootfsmkdir/root/rootfs/{bin,dev,etc,usr,lib,sbin,proc,sys,tmp}mkdir/root/rootfs/usr/{bin,sbin,lib}创建节点以root用户执行,创建节点mknod dev/console c51mknod dev/null c133.3、拷贝动态链接库交叉应用程序的开发需要用到交叉编译的链接库,交叉编译的链接库是在交叉工具链的lib目录下;我们在移植应用程序到我们的目标板的时候,需要把交叉编译的链接库也一起移植到目标板上,这里我们用到的交叉工具链的路径是/usr/local/arm/3.4.4/,所以链接库的目录是/usr/local/arm/3.4.4/sysroot/lib。
#进入链接库目录cd/usr/local/arm/3.4.4/sysroot/lib#编写一个shell文件,用于copy实际的共享链接库;主修订版本的符合链接;动态连接器及其符号链接到目标板根目录下的lib(/root/rootfs/lib)。
Linux根文件系统的制作1. 根文件系统文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。
注:对于我们应用开发来说,购买开发板的时候,厂家会提供好现成的根文件系统和BootLoader等,如果需要,我们可以改变其中的命令而无需从头开始制作一个新的根文件系统。
不过这儿的制作过程可以让我们更深一点理解Linux的文件系统。
2.主要的根文件系统* Linux 中,rootfs 是必不可少的。
PC 上主要实现有 ramdisk 和直接挂载 HD(Harddisk,硬盘)上的根文件系统;嵌入式中一般不从 HD 启动,而是从 Flash 启动,最简单的方法是将 rootfs load 到 RAM 的 RAMDisk,稍复杂的就是直接从Flash 读取的 Cramfs,更复杂的是在 Flash 上分区,并构建 JFFS2 等文件系统。
* RAMDisk 将制作好的 rootfs 压缩后写入 Flash,启动的时候由 Bootloader load 到RAM,解压缩,然后挂载到 /。
这种方法操作简单,但是在 RAM 中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源 RAM。
ramdisk 就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统, 在linux系统中,ramdisk有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是 2.4的内核才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小随所需要的空间增加或减少,是目前linux常用的ramdisk技术.* initrd 是 RAMDisk 的格式,kernel 2.4 之前都是 image-initrd,Kernel 2.5 引入了 cpio-initrd,大大简化了 Linux 的启动过程,附合 Linux 的基本哲学:Keep it simple, stupid(KISS). 不过cpio-initrd 作为新的格式,还没有经过广泛测试,嵌入式 Linux 中主要采用的还是 image-initrd。
busybox-1.7.3制作根文件系统arm-linux-gcc3.4.1 参考文章1. linux-2.6.24.4内核移植到s3c2440----使用busybox-1.9.2制作根文件系统/yang_dk/archive/2008/05/09/2422898.aspx2. 用Busybox创建文件系统/u2/74383/showart_1135014.html1.[root@localhost busybox]#ttar -xjvf busybox-1.7.3.tar.bz22.[root@localhost busybox]#cd busybox-1.7.3修改Makefile中的174行的arch和编译工具链头。
ARCH ?= armCROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-3.[root@localhost busybox-1.7.3]#make menuconfigBusybox Setting----->build option-->[ ] Build BusyBox as a static binary (no shared libs)[*] Build shared libbusybox[*] Produce a binary for each applet, linked against libbusybox [*] Produce additional busybox binary linked against libbusybox [ ] Build with Large File Support (for accessing files > 2 GB)installation option-->[*] Don't use /usrApplets links (as soft-links) --->(./_install) BusyBox installation prefixBusybox Library Tuning --->MD5: Trade Bytes for Speed[*] Faster /proc scanning code (+100 bytes)[*] Support for /etc/networks[*] Support for /etc/networks[*] Additional editing keys[*] vi-style line editing commands[*] History saving[*] Tab completion[*] Username completion[*] Fancy shell promptsLinux Module Utilities --->[*] insmod[*] Enable load map (-m) option[*] Symbols in load map[*] rmmod[*] lsmod[*] lsmod pretty output for 2.6.x Linux kernels[*] modprobe[ ] Multiple options parsing[ ] Fancy alias parsing--- Options common to multiple modutils[ ] Support tainted module checking with new kernels [ ] Support version 2.2.x to 2.4.x Linux kernels[*] Support version 2.6.x Linux kernels其他的用默认值若出现错误1.libbb/time.c:20: error: "CLOCK_MONOTONIC" undeclared (first use in this function)[root@localhost busybox-1.7.3]#make menuconfig去掉Busybox Settings---->Busybox Library Tuning--->[]Use clock_gettie(CLOCK_MONOTONIC) syscall2.miscutils/taskset.c:17: error: parse error before '*' tokenmiscutils/taskset.c:18: warning: function declaration isn't a prototypemiscutils/taskset.c: In function `__from_cpuset':miscutils/taskset.c:22: error: `CPU_SETSIZE' undeclared (first use in this function) miscutils/taskset.c:22: error: (Each undeclared identifier is reported only oncemiscutils/taskset.c:22: error: for each function it appears in.)miscutils/taskset.c:26: warning: implicit declaration of function `CPU_ISSET'miscutils/taskset.c:26: error: `mask' undeclared (first use in this function)miscutils/taskset.c: In function `taskset_main':miscutils/taskset.c:47: error: `cpu_set_t' undeclared (first use in this function)miscutils/taskset.c:47: error: parse error before "mask"miscutils/taskset.c:68: warning: implicit declaration of function `CPU_ZERO'miscutils/taskset.c:68: error: `new_mask' undeclared (first use in this function)miscutils/taskset.c:69: error: `CPU_SETSIZE' undeclared (first use in this function)miscutils/taskset.c:71: warning: implicit declaration of function `CPU_SET'miscutils/taskset.c:78: error: `mask' undeclared (first use in this function)make[1]: *** [miscutils/taskset.o] Error 1make: *** [miscutils] Error 2[root@localhost busybox-1.7.3]#make menuconfig去掉Miscellaneous Utilities--->[ ]task set******************************************************************************* ******************如果是静态3.[root@localhost busybox-1.7.3]#make menuconfigBusybox Setting----->build option-->[*] Build BusyBox as a static binary (no shared libs)[ ] Build shared libbusybox[ ] Produce a binary for each applet, linked against libbusybox [ ] Produce additional busybox binary linked against libbusybox [ ] Build with Large File Support (for accessing files > 2 GB)installation option-->[*] Don't use /usrApplets links (as soft-links) --->(./_install) BusyBox installation prefixLinux Module Utilities --->[*] insmod[*] Enable load map (-m) option[*] Symbols in load map[*] rmmod[*] lsmod[*] lsmod pretty output for 2.6.x Linux kernels[*] modprobe[ ] Multiple options parsing[ ] Fancy alias parsing--- Options common to multiple modutils[ ] Support tainted module checking with new kernels[ ] Support version 2.2.x to 2.4.x Linux kernels[*] Support version 2.6.x Linux kernels其他的用默认值若出现错误#if ENABLE_STATIC && defined(__GLIBC__) && !defined(__UCLIBC__) #warning Static linking against glibc produces buggy executables#warning (glibc does not cope well with ld --gc-sections).#warning See /bugzilla/show_bug.cgi?id=3400#warning Note that glibc is unsuitable for static linking anyway.#warning If you still want to do it, remove -Wl,--gc-sections#warning from top-level Makefile and remove this warning.#error Aborting compilation.#endif将applets/applets.c文件的开头的条件编译去掉******************************************************************************* ***************4.[root@localhost busybox-1.7.3]#make install[root@localhost busybox-1.7.3]#chmod 4755 ./_install/bin/busybox-rwsr-xr-x 1 root root 729120 05-12 20:48 busybox5.[root@localhost busybox-1.7.3]cd /root[root@localhost ~]mkdir rootfs6.[root@localhost ~]cd rootfs[root@localhost rootfs]mkdir bin dev etc lib proc sbin sys usr mnt tmp var[root@localhost rootfs]mkdir usr/bin usr/lib usr/sbin lib/modules[root@localhost rootfs]mknod -m 666 dev/console c 5 1[root@localhost rootfs]mknod -m 666 dev/ttyS0 c 4 64 [root@localhost rootfs]mknod -m 666 dev/ttyS1 c 4 65 [root@localhost rootfs]mknod -m 666 dev/null c 1 37.[root@localhost rootfs]cd etc[root@localhost etc]# vim profile#!/bin/sh#/etc/profile:system-wide .profile file for the Bourne shellsechoecho -n "Processing /etc/profile......"# Set search library pathexport LD_LIBRARY_PATH=/lib:/usr/lib# set user pathexport PATH=/bin:/sbin:/usr/bin:/usr/sbin#Set PS1USER = "`id -un`"LOGNAME=$USERPS1='[\u@\h\W]\$'PATH=$PATHecho "Done!"[root@localhost etc]#mkdir init.d[root@localhost etc]#cd init.d[root@localhost init.d]# more init.d/rcS#!/bin/sh# set hostname, needed host file in /etc directory #./etc/hosthostname `cat /etc/host`# mount all filesystem defined in "fstab"echo "#mount all......."/bin/mount -a#/bin/chmod 0666 /dev/nullecho "# starting mdev...."/bin/echo /sbin/mdev > /proc/sys/kernel/hotplugmdev -s/usr/etc/initecho "******************************************" echo " qhmzdxwdxy_jiangwei "echo " kernel linux-2.6.24.4 "echo " 2010-12-15 "echo " "echo "******************************************"[root@localhost etc]# vim fstabproc /proc proc defaults 0 0none /tmp ramfs defaults 0 0none /var ramfs defaults 0 0mdev /dev ramfs defaults 0 0sysfs /sys sysfs defaults 0 0[root@localhost etc]# vim fstab::sysinit:/etc/init.d/rcS::respawn:-/bin/shtty2::askfirst:-/bin/sh::ctrlaltdel:/bin/umount -a -r::shutdown:/bin umount -a -r::shutdown:/sbin/swapoff -a[root@ocalhost etc]# vim mdev.conf内容空8.复制主机/etc/下面的文件passwd, group, shadow文件到/etc9.在rootfs下,将刚才生成的_install下所有文件复制到rootfs/下[root@ocalhost rootfs]#cp -Rfv _install/* ./10.复制lib 文件到rootfs/lib目录下:[root@ocalhost lib]cp /usr/local/arm/3.4.1/arm-linux/lib/ld* .[root@ocalhost lib]cp /usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so . [root@ocalhost lib]cp /usr/local/arm/3.4.1/arm-linux/lib/libc.so.6 . [root@ocalhost lib]cp /usr/local/arm/3.4.1/arm-linux/lib/libm * . [root@ocalhost lib]cp /usr/local/arm/3.4.1/arm-linux/lib/libcrypt*。
linux制作根文件系统的原理
制作根文件系统是Linux系统中的一个重要过程,它涉及到文
件系统的组织和安装。
根文件系统是Linux系统中的根目录,包含
了操作系统运行所需的所有文件和目录。
制作根文件系统的原理涉
及到以下几个方面:
1. 文件系统类型,Linux支持多种文件系统类型,如ext4、XFS、Btrfs等。
制作根文件系统时,需要选择合适的文件系统类型,根据实际需求和性能要求进行选择。
2. 文件系统组织,根文件系统的组织结构包括了目录结构、配
置文件、库文件、可执行文件等。
在制作根文件系统时,需要将这
些文件按照一定的目录结构组织起来,确保系统能够正常运行。
3. 安装过程,制作根文件系统通常是在一个干净的环境中进行,可以通过chroot命令将当前系统切换到一个新的根目录下,然后在
这个新的根目录下进行文件的安装和配置,以确保新的根文件系统
能够正常运行。
4. 内核模块和驱动程序,根文件系统中还需要包含操作系统所
需的内核模块和驱动程序,以支持硬件设备的正常工作。
在制作根
文件系统时,需要将这些模块和驱动程序一并包含进去。
5. 引导加载程序,根文件系统的制作还需要考虑引导加载程序,以确保系统能够正确引导并加载根文件系统。
这涉及到引导加载程
序的配置和安装。
总的来说,制作根文件系统的原理涉及到文件系统类型的选择、文件系统的组织、安装过程、内核模块和驱动程序的包含以及引导
加载程序的配置等多个方面。
这些都是确保根文件系统能够正常运
行的重要因素。
复习: (1)今天掌握: (1)一、根文件系统制作 (1)1、Linux目录: (1)2、busybox下载、配置 (2)3、在编译安装好的路径创建3个目录 (3)4、填充lib文件--库文件 (3)5、创建console和null文件 (3)6、制作inittab格式 (4)7、挂载最小根文件系统 (4)7.1、REDHAT方面: (4)7.2、开发板方面 (7)挂接成功: (8)其他知识点: (8)二、完善根文件系统 (9)1、编写etc/init.d/rcS (9)2、编写etc/fstab (9)3、创建两个文件proc sys (10)复习:开发板环境的搭建:步骤:Bootloader(u-boot):引导操作系统Linux内核:启动应用程序(任务)根文件系统:存放在存储设备(SD、eMMC、nandflash)今天掌握:Linux内核如何去启动根文件;先把环境搭建起来;Nfs挂载问题解决;开发板挂载根文件系统常见问题:1、nfs配置没成功(重启REDHAT)2、REDHAT的ip消失了;-->重新配置ip3、防护墙没关:(service iptables stop)4、Bootargs设置出错console=ttySAC0Nfsroot=服务器ip:挂载路径(绝对)ip=板子ip:服务器ip:网关:子网掩码::eth0:off一、根文件系统制作1、Linux目录:Bin常用命令Sbin 系统命令Etc 配置文件Lib 库文件Dev 设备文件2、busybox 下载、配置1)Busybox :主要帮我们生成linux 的各种命令2)指定交叉编译器(在开发板上运行)3)busybox 的配置(1)拷贝busybox-1.21.1.tar.bz2到/works 目录下;(2)解压tar -xjvf busybox-1.21.1.tar.bz2(3)配置:[root@localhost works]#cd busybox-1.21.1[root@localhost busybox-1.21.1]#make menuconfigBusybox Settings --->Build Options --->[]Build BusyBox as a static binary (no shared libs)(NEW)/*使用交叉编译器*/(arm-linux-)Cross Compiler prefix (NEW)Installation Options ("make install"behavior)--->基本的目录把/wors/system/fs_mini 目录创建好(/work/system/fs_mini )BusyBox installation prefix Busybox Library Tuning --->/*tab 功能*/[*]Tab completion (NEW)(4)编译:[root@localhost busybox-1.21.1]#make install3、在编译安装好的路径创建3个目录进入编译好的路径:/works/system/fs_mini创建3个目录:[root@localhost fs_mini]#mkdir dev lib etc4、填充lib 文件--库文件拷贝交叉编译中的lib 文件:cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/*./lib/-d -rf注:拷贝库一般加上-d ;因为要拷贝链接文件(动态)。
制作、烧写根文件系统一.装mkyaffs2image工具,并制作映像文件介绍:/wok/nfs_root目录下是已经构造好的各种文件系统:①fs_mini.tar.bz2是最小的根文件系统,里面的设备节点是事先建立好的;②fs_mini_mdev.tar.bz2是最小的根文件系统,里面的设备节点是等系统启动后使用mdev自动建立的;③fs_qtopia.tar.bz2是JZ2440使用的支持触摸屏的根文件系统;④fs_xwindow.tar.bz2是书上的基于X的根文件系统。
1.用cuteFTP将开发板资料/linux/tools/mkyaffs2image拷贝到/work/tools2. cd /work/tools/cp mkyaff2image /bin/chmod +x /bin/mkyaffs2image 给mkyaffs2image添加可执行权限3. mkdir tempcp fs_mini_medev.tar.bz2 ./temp/cd temp/tar xjf fs_mini_medev.tar.bz24.使用mkyaffs2image 制作映像cd /work/nfs_root/tempmkyaffs2image fs_mini_medev fs.yaffs2 目录映像名称二.烧写fs.yaffs2到开发板上1.直接下载虚拟机上的文件到板子上打开secureCRT , COM7口nfs 30000000 192.168.0.3:/work/nfs_root/temp/fs.yaffs2使用nfs命令的前提条件是虚拟机已经安装、配置、启动好了NFS服务附:虚拟机安装、配置、启动NFS服务①.sudo apt-get install nfs-kernel-server portmap (网络开下来)②.他的配置文件是为/etc/exports,以后通过网络文件系统访问/work/nfs_rootsudo vi /etc/exports添加:/work/nfs_root *(rw,sync,no_root_squash)③.重启NFS服务sudo /etc/init.d/nfs-kernel-server restart2 . mtd 查看下根文件所在区的名字nand erase rootnand write.yaffs 30000000 260000 $(filesize)reset (在uboot里面重启是reset)使用NFS1.仅用flash上的根文件系统启动后,手动mount NFSmount -t nfs -o nolock,vers=2 192.168.0.3:/work/nfs_root /mnt2.让开发板通过NFS服务器(即虚拟机)启动,并根据uboot对bootargs的规定printset bootargs noinitrd root=/dev/nfsnfsroot=192.168.1.10:/work/nfs_root/temp/fs_mini_mdev,proto=tcp,nolock,rsize=1024,wsize=1024ip=192.168.1.17:192.168.1.10:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200save配置附录:F:\2440\system\linux-2.6.22.6_jz2440\linux-2.6.22.6\Documentation\nfsroot 格式1:nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]格式2:ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf> 返回开发板原文件系统,修改bootargs:set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0。
根文件系统制作
1. 使用busybox生成操作系统常用命令提示:文档中红色字体表示需要执行的命令
1.解压busybox源码压缩包,执行命令:
tar xf busybox-1.19.4.tar.bz2
2.进入解压生成的目录,执行命令:
cd busybox-1.19.4
3.修改Makefile文件,执行命令:
vim Makefile
修改如下(大概在164、190行位置):
CROSS_COMPILE := arm-linux-
ARCH := arm
4. make menuconfig
Busybox Settings --->
Build Options --->
[*] Build shared libbusybox
Installation Options ("make install" behavior) --->
(./_install) BusyBox installation prefix (NEW)
/opt/s3c2440/root_nfs
Linux Module Utilities --->
[*] modinfo (NEW)
[ ] Simplified modutils
[*] insmod
[*] rmmod
[*] lsmod
[*] Pretty output
编译并安装,执行命令:
make && make install
2. 创建必须的几个目录
执行命令:
mkdir dev etc lib tmp mnt proc sys
3. 创建设备文件console
执行命令:
mknod dev/console c 5 1
4. 拷贝库文件到lib目录下
执行命令:
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/* lib 5. 创建etc目录下的配置文件
cd etc
vim fstab创建文件fstab,写入如下5行配置信息
# device mount-point type options dump fsck order proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
创建子目录,执行命令:
mkdir init.d
进入创建的inid.d目录,执行命令:
cd init.d/
创建启动脚本文件rcS,执行命令:
vim rcS
写入如下内容:
#!/bin/sh
mount -a
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
设置rcS文件可执行权限,执行命令:
chmod +x rcS
6. 改变根文件系统目录的访问权限chmod 777 root_nfs。