中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 制作ZedBoard上linux根文件系統(tǒng)(ramdisk)

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

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

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

        本文引用地址:http://www.antipu.com.cn/article/201710/365703.htm

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

        硬件平臺(tá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)標(biāo)準(zhǔn)介紹

        當(dāng)我們?cè)趌inux下輸入ls / 的時(shí)候,見(jiàn)到的目錄結(jié)構(gòu)以及這些目錄下的內(nèi)容都大同小異,這是因?yàn)樗械膌inux發(fā)行版在對(duì)根文件系統(tǒng)布局上都遵循FHS標(biāo)準(zhǔn)的建議規(guī)定。該標(biāo)準(zhǔn)規(guī)定了根目錄下各個(gè)子目錄的名稱(chēng)及其存放的內(nèi)容:

        目錄名

        存放的內(nèi)容


        /bin

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


        /sbin

        必備的系統(tǒng)管理員命令,例如ifconfig、reboot等


        /dev

        設(shè)備文件,例如mtdblock0、tty1等


        /etc

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


        /lib

        必要的鏈接庫(kù),例如C鏈接庫(kù)、內(nèi)核模塊


        /home

        普通用戶(hù)主目錄


        /root

        root用戶(hù)主目錄


        /usr/bin

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


        /usr/sbin

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


        /usr/lib

        庫(kù)文件


        /var

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


        /proc

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


        /sys

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


        /mnt

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


        /tmp

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


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

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

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

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

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

        busybox下載

        下載后,切換到busybox目錄,并進(jìn)行默認(rè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

        將目錄設(shè)置為
        /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
        我對(duì)dropbear的功能不是很明白,從百度上獲取到的信息是“dropbear實(shí)現(xiàn)完整的SSH客戶(hù)端和服務(wù)器版本2協(xié)議。它不支持SSH版本1 的向后兼容性,以節(jié)省空間和資源,并避免在SSH版本1的固有的安全漏洞。還實(shí)施了SCP的。SFTP支持依賴(lài)于一個(gè)二進(jìn)制文件,可以通過(guò)提供的OpenSSH或類(lèi)似的計(jì)劃。”由于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)建符號(hào)鏈接
        make install
        ln -s /home/devel/_rootfs/usr/bin/scp

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

        將交叉編譯環(huán)境庫(kù)拷貝到這個(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)有l(wèi)in64文件夾,只有nt文件夾。這個(gè)問(wèn)題是由于在安裝ISE版本是,操作系統(tǒng)32位/64位決定的。我在XP(32位)下安裝時(shí)也只有nt文件夾,因而我選擇一個(gè)“懶”的方法:把OOB中的lib/、sbin/bin、 usr/bin文件夾直接拷貝出來(lái),相應(yīng)替換掉。

        ?usr/bin目錄文件下載

        ?sbin目錄文件下載

        ?lib目錄文件下載

        5、創(chuàng)建其他目錄和相應(yī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文件,內(nèi)容如下
        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文件,內(nèi)容如下
        ::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文件,內(nèi)容如下
        root:$1$qC.CEbjC$SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh

        創(chuàng)建文件etc/init.d/rcS ,內(nèi)容如下
        #!/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

        并設(shè)置其權(quán)限
        chmod 755 etc/init.d/rcS
        sudo chown root:root etc/init.d/rcS

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

        6、生成ramdisk鏡像文件

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

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

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

        創(chuàng)建鏡像文件ramdisk8M.image,并設(shè)置大小為8M,文件系統(tǒng)格式為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

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

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

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

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

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

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

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

        busybox下載

        usr/bin目錄文件下載

        sbin目錄文件下載

        lib目錄文件下載



        關(guān)鍵詞: ZedBoard linux

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉