新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 為pcDuino3 Nano構建Linux 4.x + Lubuntu操作系統

        為pcDuino3 Nano構建Linux 4.x + Lubuntu操作系統

        作者: 時間:2018-08-15 來源:網絡 收藏

        本文參考eewiki上A20-OLinuXino-LIME的系統構建流程,為pcDuino3 Nano Lite交叉編譯Mainline U-Boot和Kernel 4.x,并運行Lubuntu 14.04圖形桌面。

        本文引用地址:http://www.104case.com/article/201808/386880.htm

        兔子使用的交叉編譯主機環境為Xeon E5620服務器和Ubuntu Server 14.04 64-bit操作系統,而交叉編譯需要的Linaro GCC為32-bit版本,因此需要安裝相關32-bit庫。

        sudo apt-get update

        sudo apt-get upgrade

        sudo apt-get install libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386

        下載交叉編譯工具,并將環境變量CC設置為編譯器的路徑和名稱前綴。

        wget -c https://releases.linaro.org/14.09/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz

        tar xf gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz

        export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-

        深入命令查看GCC版本來驗證交叉編譯工具的配置,如果報錯請檢查32-bit庫是否安裝正確。

        ${CC}gcc --version

        編譯U-Boot

        從U-Boot官方Git倉庫下載U-boot源碼。

        git clone git://git.denx.de/u-boot.git

        cd u-boot/

        git checkout v2015.10 -b tmp

        使用pcDuino 3 Nano的配置文件進行配置。

        make ARCH=arm CROSS_COMPILE=${CC} distclean

        make ARCH=arm CROSS_COMPILE=${CC} Linksprite_pcDuino3_Nano_defconfig

        編譯U-Boot,這里采用4線程加速編譯。

        make ARCH=arm CROSS_COMPILE=${CC} -j4

        編譯完成后,在U-Boot目錄下會生成u-boot-sunxi-with-spl.bin文件,即為包含了A20初級Bootloader和U-Boot的鏡像。

        編譯Linux 4.x Kernel

        eewiki上使用了Robert Nelson編寫的編譯腳本來簡化Kernel編譯過程。下載編譯腳本,并根據需要選擇要編譯的Kernel版本。本例使用4.1.x版本。

        git clone https://github.com/RobertCNelson/armv7-lpae-multiplatform

        cd armv7-lpae-multiplatform/

        選擇Linux 4.1.x Longterm版:

        git checkout origin/v4.1.x -b tmp

        選擇Linux 4.2.x Stable版:

        git checkout origin/v4.2.x -b tmp

        選擇Linux 4.3.x Prepatch版:

        git checkout origin/v4.3.x -b tmp

        運行build_kernel.sh腳本開始編譯。腳本會自動下載并配置交叉編譯工具,從Kernel官方Git倉庫下載源碼并開始編譯。

        ./build_kernel.sh

        期間會進入menuconfig界面。由于腳本是為多平臺設計的,用戶可以根據需要裁剪不需要的平臺和模塊支持。

        編譯完成后,在deploy目錄下會生成zImage鏡像文件,modules和firmware壓縮包。

        獲取RootFS

        eewiki提供了兩種可供選擇的精簡版根文件系統,分別為Ubuntu 14.04和Debian 8。本文選擇使用Ubuntu系統。下載并解壓rootfs:

        wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-14.04.3-minimal-armhf-2015-09-07.tar.xz

        tar xf ubuntu-14.04.3-minimal-armhf-2015-09-07.tar.xz

        另附Dibian 8的下載地址:

        https://rcn-ee.com/rootfs/eewiki/barefs/debian-8.2-bare-armhf-2015-09-07.tar.xz

        制作啟動SD卡(MicroSD)

        將TF卡通過USB讀卡器連接編譯主機,清除分區表sdX為對應的SD卡設備,如果使用主機自帶的讀卡器,則可能識別為mmcblkX。

        sudo dd if=/dev/zero of=/dev/sdX bs=1M count=10

        通過gparted或fdisk等工具為SD卡重新分區并格式化SD卡,本例使用Sandisk 8GB Class10 MicroSD卡。

        分區后向SD卡寫入編譯好的Bootloader。

        sudo dd if=./u-boot/u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8

        掛載SD卡分區。

        sudo mkdir -p /media/boot/

        sudo mkdir -p /media/rootfs/

        sudo mount /dev/sdX1 /media/boot/

        sudo mount /dev/sdX2 /media/rootfs/

        將deploy目錄下的zImage文件復制到BOOT分區,同時將設備樹文件也解壓到BOOT分區,此處文件名中的kernel_version會根據不同的Kernel版本發生變化。

        sudo cp deploy/(kernel_version).zImage /media/boot/zImage

        sudo tar xfv deploy/(kernel_version)-dtbs.tar.gz -C /media/boot/

        (這里還沒有找到選擇編譯Nano設備樹的配置,本例實際使用的文件是從網上找到的:https://github.com/Thermionix/arch-satnav/blob/master/uBoot-pcDuino-Nano/sun7i-a20-pcduino3-nano.dtb)

        在BOOT分區新建一extlinux目錄和配置文件。

        sudo mkdir -p /media/boot/extlinux/

        sudo nano /media/boot/extlinux/extlinux.conf

        配置用于指定Kernel、Device Tree和RootFS位置,其內容如下:

        label Linux 4.x

        kernel ../zImage

        append root=/dev/mmcblk0p2

        fdtdir ../

        最后復制根文件系統到第二個分區。

        sudo tar xfvp ubuntu-14.04.3-minimal-armhf-2015-09-07/armhf-rootfs-ubuntu-trusty.tar –C /media/rootfs

        將編譯Kernel生成的模塊也復制到該分區。

        修改根文件系統分區下的etc/fstab文件,加入如下內容。

        /dev/mmcblk0p2 / auto errors=remount-ro 0 1

        /dev/mmcblk0p1 /boot auto errors=remount-ro 0 1

        修改etc/network/interfaces文件自動配置網卡和DHCP。

        auto lo

        iface lo inet loopback

        auto eth0

        iface eth0 inet dhcp

        卸載并移除SD卡。

        sync

        sudo umount /media/boot

        sudo umount /media/rootfs

        為pcDuino3 Nano連接USB 5V2A電源、HDMI、USB鍵盤鼠標,插入制作好的SD卡,上電啟動。

        本系統從U-Boot開始就能夠支持HDMI、Ethernet和USB設備,因此除了從SD卡啟動操作系統外還可以選擇U盤或網絡啟動。Ubuntu系統啟動后停留在命令行登錄界面,默認的用戶名為ubuntu,密碼為temppwd。

        安裝Lubuntu桌面

        eewiki提供的Ubuntu為精簡版本,這樣一來用戶可以方便的選擇安裝不同的桌面。本文選擇Lubuntu桌面。

        通過命令行界面登錄Ubuntu,然后從Ubuntu源在線安裝桌面。

        suto apt-get update

        sudo apt-get upgrade

        sudo apt-get install lubuntu-desktop

        經過漫長的安裝等待后,重啟系統就可以進入桌面了。



        關鍵詞: 顯示器 驅動

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 外汇| 深州市| 宁城县| 沐川县| 广南县| 莆田市| 宣汉县| 河南省| 丘北县| 明溪县| 当阳市| 札达县| 洛扎县| 昌平区| 克什克腾旗| 安顺市| 丁青县| 专栏| 石泉县| 通渭县| 阳西县| 秭归县| 临朐县| 鄱阳县| 新田县| 威海市| 邯郸县| 墨竹工卡县| 综艺| 封丘县| 聂拉木县| 中方县| 大丰市| 堆龙德庆县| 涿鹿县| 祁东县| 屯门区| 上栗县| 台山市| 固原市| 永嘉县|