本文轉(zhuǎn)載自:coldnew's blog
在 zybo board 開發(fā)記錄: 執(zhí)行 Linux 操作系統(tǒng) 一文中,我們提到了如何自行編譯 u-boot、Linux kernel、busybox 來讓 Zybo Board 可以開機進到 SD 卡上的 Linux 系統(tǒng)。這一次,我們要來談?wù)勗鯓邮褂?nbsp;Yocto Project來建立 Zybo board 的 Linux 系統(tǒng)。
Yocto Project 是近年來各大 SoC 商以及開發(fā)板商皆參與的 Linux 系統(tǒng)構(gòu)件工具,透過 Yocto Project 的協(xié)助,使用者可以針對自己的需求構(gòu)件想要的映像檔(image)或是 Root File System,和 Yocto 類似功能的工具則是buildroot 。
本文將以 Zybo Board 作為目標開發(fā)板,示范如何使用 Yocto 來構(gòu)件他的系統(tǒng)。
預先準備
根據(jù)你使用的 Linux 發(fā)行板的不同,你需要安裝一些套件,這邊列出一些發(fā)行板的信息,詳細請參考
Debian/Ubuntu
coldnew@debian ~ $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat
Fedora
coldnew@fedora ~ $ sudo dnf install gawk make wget tar bzip2 gzip python unzip perl patch diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue socat findutils which
Gentoo
coldnew@gentoo ~ $ emerge -v dev-vcs/git dev-util/diffstat app-arch/unzip sys-apps/texinfo app-admin/chrpath media-libs/libsdl2 sys-apps/iproute2 x11-terms/xterm net-nds/rpcbind
如果你和我一樣,使用 Gentoo Linux 的話,在 Gentoo Linux 下要確認你使用的是 Python 2.7
coldnew@gentoo ~ $ eselect python set python2.7
eselect python list
Available Python interpreters:
[1] python2.7 *
[2] python3.2
[3] python3.3
python
Python 2.7.5 (default, Oct 19 2013, 22:52:27)
格式化 MicroSD 卡
在這次的開發(fā)中,我們要設(shè)定 MicroSD 卡片成兩個分區(qū),第一個是 fat32 格式,第二個則使用 ext4 格式,若不會使用 fdisk 命令的話,可以透過 gparted 來進行格式化,以下是我格式化卡片的范例 (8GB 卡片)。
下載 Poky
在開始用 Yocto Project 之前,我們需要下載 Poky, Poky 是 Yocto 的構(gòu)件系統(tǒng),基本上我們會用到的東西都會在 poky 文件夾內(nèi)
注意到我們這邊切換到 krogoth 這個分支,Yocto 里面不同的分之(branch) 代表了不同版本。
coldnew@gentoo ~ $ git clone git://git.yoctoproject.org/poky -b krogoth
好了后,進入到 poky 文件夾
coldnew@gentoo ~/poky $ cd poky
下載 meta-xilinx
Yocto 對于不同的 SoC 廠商,會有提供不同的 layer 來對特定的開源程序加上合適的 patch,或是添加不同 SoC 廠各自需要的韌體(firmware),以及各開發(fā)板特定的設(shè)定。在 Xilinx 平臺上,我們需要下載 meta-xilinx ,我們需要的 kernel 以及 Zybo board 的設(shè)定信息都在里面。
這邊一樣切換到 krogoth 這個分支(branch)
coldnew@gentoo ~/poky $ git clone git://github.com/Xilinx/meta-xilinx -b krogoth
切換到編譯用目錄
接下來,我們將透過 source 指令暫時修改當前 shell 的環(huán)境變量,并切換到 build 文件夾
coldnew@gentoo ~/poky $ source oe-init-build-env build
You had no conf/local.conf file. This configuration file has therefore been
created for you with some default values. You may wish to edit it to, for
example, select a different MACHINE (target hardware). See conf/local.conf
for more information as common configuration options are commented.
You had no conf/bblayers.conf file. This configuration file has therefore been
created for you with some default values. To add additional metadata layers
into your configuration please add entries to conf/bblayers.conf.
The Yocto Project has extensive documentation about OE including a reference
manual which can be found at:
For more information about OpenEmbedded see their website:
###
Shell environment set up for builds. ###
You can now run 'bitbake '
Common targets are:
core-image-minimal
core-image-sato
meta-toolchain
meta-ide-support
You can also run generated qemu images with a command like 'runqemu qemux86'
默認的目標機器是 qemux86 因此我們需要修改一下,不過先看一下當前目錄結(jié)構(gòu)
coldnew@gentoo ~/poky/build $ tree .
.
└── conf
├── bblayers.conf
├── local.conf
└── templateconf.cfg
1 directory, 3 files
我們首先要修改 conf/bblayers.conf ,在上面添加我們剛剛下載的 meta-xilinx ,修改完會像這樣
#
POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
#
changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"
BBPATH = "${TOPDIR}"
BBFILES ?= ""
BBLAYERS ?= " \
/home/coldnew/poky/meta \
/home/coldnew/poky/meta-poky \
/home/coldnew/poky/meta-yocto-bsp \
/home/coldnew/poky/meta-xilinx \
"
接下來,修改 conf/local.conf ,這份檔案可以用來設(shè)定要編譯的目標機器,在這邊,我們將目標機器改成zybo-linux-bd-zynq7
MACHINE ??= "zybo-linux-bd-zynq7"
都改好了后,就可以開始準備編譯了
編譯 core-image-minimal
評論
查看更多