使用BusyBox制作根文件系统的操作步骤
參考博客http://www.cnblogs.com/Charles-Zhang-Blog/p/3419301.html
一、構建根文件系統該有的目錄
- 即在/rootfs/目錄下創建該有的空目錄;
- 一般有dev/ ??etc/ ? lib/? ?usr/ ? var/ ? proc/ ? tmp/ ? home/ ? root/ ? mnt/ ??bin/ ? sbin/? sys/ ;
- /bin ?/sbin由于是用busybox構建,再拷貝到此目錄下的,所以可以先不創建;
二、使用busybox構建/bin ?/sbin ? linuxrc
1、獲取busybox源碼
- busybox是開源項目,版本差異不大;這里選擇busybox-1.24.1版本。
- 官方網站下載:https://busybox.net/downloads/
2、解壓后修改Makefile
- ARCH = arm
- CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin//arm-none-linux-gnueabi-
3、配置busybox
- 先make defconfig,然后make menuconfig,安裝下面圖示進行配置。
p.s:出現錯誤
解決思路方法:此文件和主功能無關,可以避開。
(1)先找到sync.c文件:在此目錄下find -name "sync.c",知道其在./coreutils/sync.c
(2)cd coreutils,在Kbuild文件中,查找sync.o,可知由宏CONFIG_SYNC來控制是否編譯
(3)在make menuconfig中,查找SYNC的位置,轉到其位置,選擇為N。
4、輸入make進行編譯,然后輸入make install進行安裝
(1)make install,執行busybox頂層目錄的一個目標install。
(2)安裝目錄默認在busybox/_install,里面有bin/ ?sbin/ ?linuxrc三個(目錄)文件。
- 也可以指定目錄安裝,以便后期不用再拷貝。
(3)make install的解釋
- 安裝軟件的指令,在傳統的linux系統中,安裝軟件時都是選擇源代碼方式安裝的。
- 下載要安裝的軟件源代碼,然后配置、編譯、安裝。
- 安裝的含義是,將編譯生成的可執行程序及其依賴的庫文件、配置文件、頭文件安裝到當前系統中指定的目錄下。
5、將bin/ ?sbin/ ?linuxrc拷貝到rootfs文件夾下
- 指令是cp?bin/ ?sbin/ ?linuxrc /root/rootfs -ra;
三、構建etc目錄
主要是拷貝一些文件到etc/目錄下,并進行一些修改
1、將 ?busybox/examples/bootfloopy/etc/* ?拷貝到 ?/rootfs/etc/ ?目錄下,然后修改其中的inittab文件;
(1)開機免登陸,直接進入shell
#first:run the system script file ::sysinit:/etc/init.d/rcS ::askfirst:-/bin/sh ::ctrlaltdel:-/sbin/reboot #umount all filesystem ::shutdown:/bin/umount -a -r #restart init process ::restart:/sbin/init
或者
::sysinit:/etc/init.d/rcS #::respawn:-/bin/sh #::respawn:-/bin/login console::askfirst:-/bin/sh //這個和上面一樣,只是id明確給出而已 #tty2::askfirst:-/bin/sh ::ctrlaltdel:/bin/umount -a -r(2)開機需要登陸
::sysinit:/etc/init.d/rcS #::respawn:-/bin/sh ::respawn:-/bin/login #console::askfirst:-/bin/sh #tty2::askfirst:-/bin/sh ::ctrlaltdel:/bin/umount -a -r
2、用戶名、密碼設置:將虛擬機ubuntu的 ?/etc/passwd、/etc/group、/etc/shadow ?拷貝到 ?rootfs/etc/ ?目錄下,然后修改三個文件的相關內容;
(1)只保存與root相關項,修改passwd為root:x:0:0:root:/root:/bin/sh。
(2)只保存與root相關項,修改group為root:x:0:root。
(3)只保存與root相關項,shadow其他不需要更改(或者清除密碼),登陸密碼和拷貝源的密碼一致。
3、修改profile文件;
# Ash profile # vim: syntax=sh# No core files by default ulimit -S -c 0 > /dev/null 2>&1USER="`id -un`" LOGNAME=$USER PS1='[\u@\h \W]\# ' PATH=$PATHHOSTNAME=`/bin/hostname`export USER LOGNAME PS1 PATH4、修改fstab文件;
添加以下內容:注意這里的掛載點需要預先建立(如果在第一步創建空目錄是沒有創建的話)
#<file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /var tmpfs defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 tmpfs /dev tmpfs defaults 0 05、修改etc/init.d/rc.S文件;
#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=S prevlevel=Numask 022export PATH runlevel prevlevelmount -aecho /sbin/mdev > /proc/sys/kernel/hotplug mdev -s/bin/hostname -F /etc/sysconfig/HOSTNAMEifconfig eth0 192.168.1.10
四、構建lib目錄
將動態鏈接庫拷貝到/root/rootfs/lib/目錄下,動態鏈接庫在? /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/ ?目錄下。
- 指令 ?cp /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/*so* /root/rootfs/lib/ -rdf
總結
以上是生活随笔為你收集整理的使用BusyBox制作根文件系统的操作步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ADB登录验证暴力破解工具
- 下一篇: 关于mac 和其它osx系统添加 微软雅