Busybox構建根文件系統和制作Ramdisk


         定制根文件系統的方法很多,最常用的是使用BusyBox來構建定制根文件系統。它集成壓縮了Linux的許多工具和命令,可以使用戶迅速方便地建立一套相對完整、功能豐富的文件系統,其中包括大量常用的應用程序。下面詳細介紹有關Busybox定制根文件系統。

 

一、系統環境:

1、操作系統:Ubuntu140.4

2、交叉編譯工具:gcc version 6.1.1 20160711 (Linaro GCC 6.1-2016.08)

3busybox源碼包:busybox-1.26.2

 

二、構建rootfs

    1、建立rootfs目錄

    /home/xxx/xxx目錄下建立rootfs目錄,

        $  mkdir rootfs

                $  cd  rootfs

                $  mkdir  root  bin  sbin  etc  dev  usr  lib  tmp  mnt  sys  proc  var  //建立常用目錄

                $  mkdir  usr/lib  usr/bin  usr/sbin

 

    2、解壓源碼包:

        $ tar -jxvf busybox-1.26.2.tar.bz2

 

    3、配置BusyBox

       $ make distclean

              $ make defconfig

              $ make menuconfig ARCH=arm

    3.1選擇Busybox Settings --->

              Installation Options --->

                                   BusyBox installation prefix(在里面輸入BusyBox的安裝目錄,我是保存在/home/xxx/xxx/rootfs)

clip_image002

 

clip_image004

 

    3.2選擇Busybox Settings --->  

                     選中[*] Don't use /usr

 

clip_image006

  

    3.3 Busybox Settings---->

             Build Options---->

               選中 [*]Build BusyBox as a static binary(靜態鏈接)

               Cross Compiler prefix配置為arm-linux-gnueabi-(指定交叉編譯器)

clip_image008

 

配置好后,保存相關配置信息。

    4、編譯安裝Busybox

        $ make

                $ make install

 

    5、添加/home/xxx/xxx/rootfs/dev目錄下的設備文件。

    dev目錄下必須有consolenull這兩個設備文件,使用mknod來創建這兩個設備文件。

        $ cd dev/

                $ sudo mknod -m 666 console c 5 1

               $ sudo mknod -m 666 null c 1 3

   

    6、把busybox源碼目錄下的examples/bootfloppy/etc的內容拷貝到rootfs目錄下的etc

        $ cd /home/xxx/xxx/rootfs/etc

                $ cp  /home/ xxx/xxx/Downloads/busybox-1.26.2/examples/bootfloppy/etc/* ./ -raf

 

    8、修改配置文件

    8.1、修改fstab配置文件為:

#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

var         /dev              tmpfs     defaults        0     0

ramfs            /dev              ramfs     defaults        0     0

  

    8.2修改profile文件為:

# /etc/profile: system-wide .profile file for the Bourne shells

 

USER="root"

LOGNAME=$USER

export HOSTNAME=`/bin/hostname`

export USER=root

export HOME=/root

export PS1="[$USER@$HOSTNAME \W]\# "

PATH=/bin:/sbin:/usr/bin:/usr/sbin

LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH

export PATH LD_LIBRARY_PATH

 

    8.3修改inittab文件為:

# /etc/inittab

::sysinit:/etc/init.d/rcS

::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

::restart:/sbin/init

 

8.4 配置系統的hostname。在etc目錄下執行如下命令:

    $ mkdir  sysconfig

        $ cd sysconfig

        $ touch  HOSTNAME

        $ echo  tiny4412 > HOSTNAME

 

    8.5 配置init.d/rcS文件為:

#!/bin/sh

 

PATH=/sbin:/bin:/usr/sbin:/usr/bin

runlevel=S

prevlevel=N

umask 022

export PATH runlevel prevlevel

 

mount -a

mkdir -p /dev/pts

mount -t devpts devpts /dev/pts

#mount -n -t usbfs none /proc/bus/usb

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

mkdir -p /var/lock

 

ifconfig lo 127.0.0.1

 

/bin/hostname -F /etc/sysconfig/HOSTNAME

 

修改init.d/rcS文件權限為:

    $ chmod 777 init.d/rcS

 

三、制作Ramdisk文件系統

    制作Ramdisk的腳本mk_Ramdisk.sh如下:

#!/bin/bash

 

rm -rf ramdisk*

 

sudo dd if=/dev/zero of=ramdisk bs=1k count=8192

 

sudo mkfs.ext4 -F ramdisk

 

sudo mkdir -p ./initrd

sudo mount -t ext4 ramdisk ./initrd

 

sudo cp rootfs/* ./initrd -raf

 

sudo mknod initrd/dev/console c 5 1

sudo mknod initrd/dev/null c 1 3

 

sudo umount ./initrd

 

sudo gzip --best -c ramdisk > ramdisk.gz

 

sudo mkimage -n "ramdisk" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img

rm ramdisk ramdisk.gz initrd  -rf

 

    把該腳本拷貝到rootfs同一目錄下,執行該腳本制作Ramdisk文件系統。生成的ramdisk.img就是我們需要的Ramdisk文件系統。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM