<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 制作ZedBoard上linux根文件系統(ramdisk)

制作ZedBoard上linux根文件系統(ramdisk)

作者: 時(shí)間:2017-10-13 來(lái)源:網(wǎng)絡(luò ) 收藏

Digilent的OOB設計給出了一個(gè)上完整的運行的系統所需要的所有文件,包括配置FPGA的bit文件、 配置ARM PS系統的First-Stage boot loader(FSBL)和引導需要的Second-Stage boot loader(SSBL)、Linux內核zImage、設備樹(shù)文件devicetree_ramdisk.dtb 以及根文件系統ramdisk8M.image.gz。在運行時(shí),加載這個(gè)ramdisk8M.image.gz鏡像文件到DDR3中來(lái)執行實(shí)現根文件系統的建立,很多并不像在ubuntu中對文件系統操作那樣簡(jiǎn)單。本小節介紹如何制作可運行的根文件系統ramdisk8M.image.gz鏡像文件,參照xilinx wiki 。

本文引用地址:http://dyxdggzs.com/article/201710/365703.htm

通過(guò)本小節的學(xué)習,在以后的開(kāi)發(fā)中,可以更加順利的修改文件系統,給設計帶來(lái)方便。

硬件平臺:Digilent

開(kāi)發(fā)環(huán)境:Windows XP 32 bit + Wmare 8.0 + Ubuntu 10.04 + arm-linux-xilinx-gnueabi交叉編譯環(huán)境

Zedboard linux: Digilent OOB Design

1、FHS(Filesystem Hierarchy Standard)標準介紹

當我們在linux下輸入ls / 的時(shí)候,見(jiàn)到的目錄結構以及這些目錄下的內容都大同小異,這是因為所有的linux發(fā)行版在對根文件系統布局上都遵循FHS標準的建議規定。該標準規定了根目錄下各個(gè)子目錄的名稱(chēng)及其存放的內容:

目錄名

存放的內容


/bin

必備的用戶(hù)命令,例如ls、cp等


/sbin

必備的系統管理員命令,例如ifconfig、reboot等


/dev

設備文件,例如mtdblock0、tty1等


/etc

系統配置文件,包括啟動(dòng)文件,例如inittab等


/lib

必要的鏈接庫,例如C鏈接庫、內核模塊


/home

普通用戶(hù)主目錄


/root

root用戶(hù)主目錄


/usr/bin

非必備的用戶(hù)程序,例如find、du等


/usr/sbin

非必備的管理員程序,例如chroot、inetd等


/usr/lib

庫文件


/var

守護程序和工具程序所存放的可變,例如日志文件


/proc

用來(lái)提供內核與進(jìn)程信息的虛擬文件系統,由內核自動(dòng)生成目錄下的內容


/sys

用來(lái)提供內核與設備信息的虛擬文件系統,由內核自動(dòng)生成目錄下的內容


/mnt

文件系統掛接點(diǎn),用于臨時(shí)安裝文件系統


/tmp

臨時(shí)性的文件,重啟后將自動(dòng)清除


制作根文件系統就是要建立以上的目錄,并在其中建立完整目錄內容。其過(guò)程大體包括:

編譯/安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄
利用交叉編譯工具鏈,構建/lib目錄
手工構建/etc目錄
制作根文件系統的鏡像文件
下面就來(lái)詳細介紹這個(gè)過(guò)程。

1、編譯安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄

首先下載BusyBox源碼,使用命令
git clone git://git.busybox.net/busybox

當然,和往常一樣,為了給上不了國外網(wǎng)站的同學(xué)們提供便利,這里提供一個(gè)國內的下載鏈接:

busybox下載

下載后,切換到busybox目錄,并進(jìn)行默認配置
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- defconfig

使用命令
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- menuconfig

打開(kāi)可視化界面配置

逐一進(jìn)入
BusyBox SetTIngs->InstallaTIon OpTIons->BusyBox installaTIon prefix

將目錄設置為
/home/devel/_rootfs

保存后退出,并安裝busybox
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- install

安裝好后,我們能夠在/home/devel/_rootfs目錄下看到生成了的bin sbin usr/bin usr/sbin 目錄,其下包含了我們常用的命令,這些命令都是指向bin/busybox的軟鏈接。

3、安裝Dropbear
我對dropbear的功能不是很明白,從百度上獲取到的信息是“dropbear實(shí)現完整的SSH客戶(hù)端和服務(wù)器版本2協(xié)議。它不支持SSH版本1 的向后兼容性,以節省空間和資源,并避免在SSH版本1的固有的安全漏洞。還實(shí)施了SCP的。SFTP支持依賴(lài)于一個(gè)二進(jìn)制文件,可以通過(guò)提供的OpenSSH或類(lèi)似的計劃。”由于xilinx wiki上有這樣的步驟,還是老老實(shí)實(shí)的做吧。

下載dropbear,并解壓
wget
tar xfvz dropbear-0.53.1.tar.gz

配置dropbear
./configure --prefix=/home/devel/_rootfs --host=arm-xilinx-linux-gnueabi --disable-zlib CC=arm-xilinx-linux-gnueabi-gcc LDFLAGS=-Wl,--gc-sections CFLAGS=-ffunction-sections -fdata-sections -Os

編譯
make PROGRAMS=dropbear dbclient dropbearkey dropbearconvert scp MULTI=1 strip

安裝dropbear并創(chuàng )建符號鏈接
make install
ln -s /home/devel/_rootfs/usr/bin/scp

4、利用交叉編譯工具鏈,構建/lib目錄
進(jìn)入/home/devel/_rootfs,創(chuàng )建lib目錄
cd /home/devel/_rootfs
bash> mkdir lib

將交叉編譯環(huán)境庫拷貝到這個(gè)目錄下
cp /opt/14.2/ISE_DS/EDK/gnu/arm/lin64/arm-xilinx-linux-gnueabi/libc/lib/* lib -r

同樣,將工具鏈拷貝到sbin/和usr/bin/下
cp /opt/14.2/ISE_DS/EDK/gnu/arm/lin64/arm-xilinx-linux-gnueabi/libc/sbin/* sbin/ -r
cp /opt/14.2/ISE_DS/EDK/gnu/arm/lin64/arm-xilinx-linux-gnueabi/libc/usr/bin/* usr/bin/ -r

意:很多網(wǎng)友說(shuō),自己的電腦上沒(méi)有lin64文件夾,只有nt文件夾。這個(gè)問(wèn)題是由于在安裝ISE版本是,操作系統32位/64位決定的。我在XP(32位)下安裝時(shí)也只有nt文件夾,因而我選擇一個(gè)“懶”的方法:把OOB中的lib/、sbin/bin、 usr/bin文件夾直接拷貝出來(lái),相應替換掉。

?usr/bin目錄文件下載

?sbin目錄文件下載

?lib目錄文件下載

5、創(chuàng )建其他目錄和相應配置
至此,幾個(gè)重要的目錄和文件都已經(jīng)創(chuàng )建完畢,需要安裝FHS要求把其他目錄和文件創(chuàng )建。切換到_rootfs目錄下,使用命令
mkdir dev etc etc/dropbear etc/init.d mnt opt proc root sys tmp var var/log var/www

創(chuàng )建etc/fstab文件,內容如下
LABEL=/ / tmpfs defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
none /tmp tmpfs defaults 0 0

創(chuàng )建etc/inittab文件,內容如下
::sysinit:/etc/init.d/rcS
# /bin/ash
#
# Start an askfirst shell on the serial ports
ttyPS0::respawn:-/bin/ash
# What to do when restarting the init process
::restart:/sbin/init
# What to do before rebooting
::shutdown:/bin/umount -a -r

創(chuàng )建etc/passwd文件,內容如下
root:$1$qC.CEbjC$SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh

創(chuàng )建文件etc/init.d/rcS ,內容如下
#!/bin/sh

echo Starting rcS...

echo ++ Mounting filesystem
mount -t proc none /proc
mount -t sysfs none /sys
mount -t tmpfs none /tmp

echo ++ Setting up mdev

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

mkdir -p /dev/pts
mkdir -p /dev/i2c
mount -t devpts devpts /dev/pts

echo ++ Starting telnet daemon
telnetd -l /bin/sh

echo ++ Starting http daemon
httpd -h /var/www

echo ++ Starting ftp daemon
tcpsvd 0:21 ftpd ftpd -w /

echo ++ Starting dropbear (ssh) daemon
dropbear
echo rcS Complete

并設置其權限
chmod 755 etc/init.d/rcS
sudo chown root:root etc/init.d/rcS

BTW,我們的后續設計中,為了實(shí)現應用程序上電后自動(dòng)啟動(dòng)運行,可以修改rcS文件內容,將應用程序執行命令寫(xiě)入到rcS文件中。

6、生成ramdisk鏡像文件

至此,根文件系統所有需要的目錄和文件已經(jīng)準備完畢。查看_rootfs下的內容

這個(gè)根文件系統能夠被執行,還需要將其制作成image鏡像文件,并壓縮。

接下來(lái)的操作如果和xilinx wiki上操作一致,最終的文件系統并不能被識別,所以這里介紹的和xilinx wiki有少許不同。

創(chuàng )建鏡像文件ramdisk8M.image,并設置大小為8M,文件系統格式為ext2:
cd ~
dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192
mke2fs -F ramdisk8M.image -L ramdisk -b 1024 -m 0
tune2fs ramdisk8M.image -i 0
chmod 777 ramdisk8M.image

大小可以按照需要自己調整,但是最好不要超過(guò)32M。

創(chuàng )建ramdisk目錄,將ramdisk8M.image 掛載到該目錄下,
mkdir ramdisk
mount -o loop ramdisk8M.image ramdisk/

接下來(lái),只需要將_rootfs目錄下的內容全部拷貝到ramdisk下即可
cp -R /home/devel/_rootfs/* ramdisk

注意,這里cp的參數一定是R而非r。

這樣,這個(gè)鏡像文件的內容就是_rootfs目錄下的內容了。將其卸載就可
umount ramdisk/

到此,根文件系統鏡像文件ramdisk8M.image 制作完成,將其壓縮
gzip -9 ramdisk8M.image

生成ramdisk8M.image.gz文件,拷貝到SD上就可以了。

busybox下載

usr/bin目錄文件下載

sbin目錄文件下載

lib目錄文件下載



關(guān)鍵詞: ZedBoard linux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>