Yocto构建文件系统

Yocto构建文件系统

一、准备工作

准备操作系统 

建议使用Ubuntu14的虚拟机或PC

由于后面的编译过程将占用大量资源,虚拟机建议16g内存(至少8g)、4线程

### 安装软件

~~~java

$ sudo apt-get install build-essential git-core libncurses5-dev \

flex bison texinfo zip unzip zlib1g-dev gettext u-boot-tools \ 

g++ xz-utils mtd-utils gawk diffstat gcc-multilib python git \ 

make gcc g++ diffstat bzip2 gawk chrpath wget cpio texinfo  zImage tree

~~~

### 安装Yocto编译工具

```sh

$ cd ~/Documents/MYD-Y6ULX/03-Tools/Toolchain

$ ./myir-imx-fb-glibc-x86_64-fsl-image-qt5-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh    #fsl-image-qt5系统的应用工具链

$ ./myir-imx-fb-glibc-x86_64-core-image-base-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh  #core-image-base系统的应用工具链

$ ./myir-imx-fb-glibc-x86_64-meta-toolchain-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh  #meta-toolchain基础工具链

```

此处建议安装目录分别为(不能编译在同一个目录下 )

```sh

/opt/myir-imx6ulx-fb/4.1.15-2.0.1/fsl-image-qt5

/opt/myir-imx6ulx-fb/4.1.15-2.0.1/core-image-base

/opt/myir-imx6ulx-fb/4.1.15-2.0.1/meta-toolchain-cortexa7hf

```

最后添加到当前环境变量

```sh

source /opt/myir-imx6ulx-fb/4.1.15-2.0.1/fsl-image-qt5/environment-*

source /opt/myir-imx6ulx-fb/4.1.15-2.0.1/core-image-base/environment-*

source /opt/myir-imx6ulx-fb/4.1.15-2.0.1/meta-toolchain/environment-*

```

查看是否安装成功,若成功应显示如下:

```sh

$ arm-poky-linux-gnueabi-gcc --version

arm-poky-linux-gnueabi-gcc (GCC) 5.3.0

```

```

Copyright (C) 2015 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

```

### 构建U-boot 

解压

```sh

cd $DEV_ROOT/04-Source/

tar -xvf MYiR-iMX-uboot.tar.gz

cd MYiR-iMX-uboot

```

编译

```sh

make distclean

make myd_y6ull_14x14_emmc_defconfig

make

```

### Linux Kernel 

解压

```sh

cd $DEV_ROOT/04-Source

tar -xvf MYiR-iMX-Linux.tar.gz

cd MYiR-iMX-Linux

```

编译

```sh

make distclean

make myd_y6ulx_defconfig

make zImage dtbs

```

更新kernel后,由于版本标识改变,若驱劝是以模块方式加载,需要重新编译驱动模块

```sh

make modules

```

编译后,可以安装在指定位置:

```sh

mkdir ../target-kernel

make INSTALL_MOD_PATH=../target-kernel modules_install

```

这样就可以把target-kernel目录打包后,解压在MYD-Y6ULX开发板的/lib目录下使用。

## 二、Yocto构建Linux系统 

解压

```sh

cd $DEV_ROOT

tar xvf 04-Source/fsl-release-yocto.tar.xz

tar xvf 04-Source/Yocto-downloads.tar.xz -C fsl-release-yocto

```

```sh

tar xvf 04-Source/MYiR-iMX-Linux.tar.gz -C ~/

tar xvf 04-Source/MYiR-iMX-uboot.tar.gz -C ~/

```

初始化

```sh

$ cd fsl-release-yocto    #进入构建的目录

$ DISTRO=myir-imx-fb MACHINE=myd-y6ull14x14 source fsl-setup-release.sh -b build      # yocto 使能 若无 /buid 则创建

```

完成后,可以查看构建材料间的结构

```sh

$ tree conf/    #查看结构树

```

*conf/

├── bblayers.conf

├── bblayers.conf.org

├── local.conf

├── local.conf.org

├── local.conf.sample

├── sanity_info

└── templateconf.cfg*

**bitbake core-image-base (时间较长 耐心等待)**

**Tips:**

过程中关于uboot可能会报错:

若报错,使用git log查看commit值 , 看是否和 sources/meta-myir6ulx/recipes-bsp/u-boot/u-boot-mys6ulx_2016.03.bb文件中SRCREV值的一致,不一致则做 修改

过程中关于kernel可能会报错:

若报错,使用git log查看commit值 , 看是否和 sources/meta-myir-imx6ulx/recipes-kernel/linux/linux-mys6ulx_4.1.15.bb文件中SRCREV值的一致,不一致则做修改

里面对Uboot 和kernel 源代码位置进行定义,如果与实际代码存放的位置不一样,则修改为实际代码存放的位置。

重新bitbake core-image-base 

## 三 、更新系统

### 更新MfgTools文件

```sh

$ cd ~\MYD-Y6ULX\03-Tools\ManufactoryTool\MYD-Y6ULX-mfgtools\Profiles\Linux\OS Firmware\files

```

**其中全部内容包括:**(注意y6ul和y6ull是不同的)**其中、写入内容包括:**

*zImage-myd-y6ul              # MYD-Y6UL的内核镜像

zImage-myd-y6ull              # MYD-Y6ULL的内核镜像

zImage-myd-y6ul-14x14-emmc.dtb       # MYD-Y6UL支持 NAND 的设备树文件

zImage-myd-y6ull-14x14-emmc.dtb       # MYD-Y6ULL支持 NAND 的设备树文件

u-boot-myd-y6ul14x14_emmc-ddr512.imx    # MYD-Y6UL支持 emmc 的 uboot

u-boot-myd-y6ull14x14_emmc-ddr512.imx    # MYD-Y6UL支持 emmc 的 uboot

myd-y6ul-boot-emmc-ddr512.scr        #

myd-y6ull-boot-emmc-ddr512.scr        #

core-image-base-myd-y6ul14x14.rootfs.tar.bz2  # MYD-Y6UL文件系统

`core-image-base-myd-y6ull14x14.rootfs.tar.bz2`* # MYD-Y6ULL文件系统

其实在更新系统的过程中你只需要替换最后一个文件,即标红的文件"core-image-base-myd-y6ull14x14.rootfs.tar.bz2"即可

### 更新步骤

- 切换启动拨码开关(SW1)的第3位为OFF,第4位为ON。

- 使用USB转接线(Type-A转Micro-B)连接PC机USB端口与开发板Micro USB OTG端口(J26)。

- 使用DC 12V电源适配器连接至开发板的电源座(J22)。

- 双击MfgTool目录下的"core-image-base-myd-y6ulxy2-ddr512m-emmc4g.vbs"文件,此时可以看到MfgTool界面已识别到开发板。

- 点击MfgTool界面上的"Start"按钮,MfgTool就开始自动更新系统至板载EMMC存储芯片。

更新成功后底部的总进度条会显示为绿色。此时,点击"QUIT",接着"EXIT"即可



作者:drooop
链接:https://www.jianshu.com/p/be2c9ccb22e4
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(linux,linux,kernel)