<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    使用BusyBox制作Linux根文件系統

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    STEP 1:構建目錄結構 

    創建根文件系統目錄,主要包括以下目錄
    /dev  /etc /lib  /usr  /var /proc /tmp /home /root /mnt /bin  /sbin  /sys 

    #mkdir     /home/rootfs
    #cd        /home/rootfs

    #mkdir  dev  etc  lib  usr  var  proc  tmp  home  root  mnt   sys

     

    STEP 2:    使用busybox構建/bin /sbin linuxrc

    進入busybox-1.16.1目錄,執行

    #make defconfig

    #make menuconfig

    Busybox Setting ----->
        Build Options -----> 
            //1選擇將busybox進行靜態編譯 
            [*]Build BusyBox as a static binary (no shared libs) 
            //2.指定交叉編譯器為 
            (/usr/local/arm/4.3.2/bin/arm-linux-)Cross Compiler prefix

    Installation Options ----->

            //3.選擇上 Don’t use /usr 
    Busybox Library Tuning---> 
        [*]Username completion 
        [*]Fancy shell prompts 
        [*]Query  cursor  position  from  terminal 
            //4.編譯出的busybox的shell命令解釋器支持顯示當前路徑及主機信息

    保存退出

    #make   
    #make install

    在busybox目錄下會看見 _install目錄,里面有/bin /sbin linuxrc三個文件
    將這三個目錄或文件拷到第一步所建的rootfs文件夾下。

    #cp bin/ sbin/ linuxrc /home/rootfs -ra 

       切記一定要帶上-a的參數,因為bin目錄里大部分都是鏈接,如果不帶-a的參數,拷過去之后會做相應的復制,不再是鏈接的形式

     

    STEP 3  構建etc目錄:

    1)進入根文件系統rootfs的etc目錄,執行如下操作:

           拷貝Busybox-1.16.1/examples/bootfloopy/etc/* 到當前目錄下
            #cp –r busybox-1.16.1/examples/bootfloopy/etc/*  rootfs/etc

            修改inittab,把第二項改為::respawn:-/bin/login

            刪除第三、第四行代碼   

    2)拷貝虛擬機上的/etc/passwd, /etc/group, /etc/shadow到rootfs/etc下

            # cp /etc/passwd   rootfs/etc
            # cp /etc/group    rootfs/etc 
            # cp /etc/shadow   roofs/etc

    對以下三個文件修改,只保存與root相關的項,根據具體情況內容會有所不同。

    修改passwd為root:x:0:0:root:/root:/bin/sh,即只保存與root相關項,而且最后改成/bin/ash。

    修改group為root:x:0:root

    修改shadow為root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::

    登陸開發板時需輸入用戶名密碼,同虛擬機相同

    3)修改profile

    PATH=/bin:/sbin:/usr/bin:/usr/sbin          //可執行程序 環境變量

    export LD_LIBRARY_PATH=/lib:/usr/lib        //動態鏈接庫 環境變量

    /bin/hostname sunplusedu

    USER="`id -un`"

    LOGNAME=$USER

    HOSTNAME='/bin/hostname'

    PS1='[\u@\h \W]# '                          //顯示主機名、當前路徑等信息:

    4)修改 etc/init.d/rc.S文件

    /bin/mount -n -t ramfs ramfs /var

    /bin/mount -n -t ramfs ramfs /tmp

    /bin/mount -n -t sysfs none /sys

    /bin/mount -n -t ramfs none /dev

    /bin/mkdir /var/tmp

    /bin/mkdir /var/modules

    /bin/mkdir /var/run

    /bin/mkdir /var/log

    /bin/mkdir -p /dev/pts                    //telnet服務需要

    /bin/mkdir -p /dev/shm                    //telnet服務需要

    echo /sbin/mdev > /proc/sys/kernel/hotplug//USB自動掛載需要

    /sbin/mdev -s         //啟動mdev在/dev下自動創建設備文件節點

    /bin/mount -a

    5)修改etc/fstab文件,增加以下文件

            none   /dev/pts    devpts   mode=0622      0 0
           tmpfs  /dev/shm    tmpfs    defaults       0 0

     

    STEP 4 構建lib目錄:

         1)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

         將以下動態庫拷貝到rootfs/lib下
         #cp  *so*  roofs/lib  -a

         2)#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib
         將以下動態庫拷貝到rootfs/lib下 
         #cp ./libstdc++.so.*  rootfs/lib  -a

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全