7 Gbox4418卡片电脑自定义系统(一)uboot\kernel\rootfs
时间:10-02
整理:3721RD
点击:
通过前6篇的试用体验,基本上熟悉了Gbox4418功能特点,接下来,对Gbox4418进行功能特点的应用分析,尽求全面了解这块Gbox4418卡片电脑,为项目的进行,打下一个良好的基础。 官方推荐,最好在Ubuntu 64位的机器下进行开发,本人也不例外,在VMWare Workstation上安装64位的Ubuntu,可能第一次安装不会成功,不过通过百度,都可以解决,在此就不再详述。
一 编译环境搭建
1 安装库文件
安装好Ubuntu后,进行环境的搭建,主要是系统的升级和库文件的安装。
(1)首先进行系统的升级,不然在安装某些库文件的时候,会失败。
- sudo apt-get upgrade
- sudo apt-get update
(2)其次,安装必要的库文件,主要包括:git git-core gnupg flex bison gperf libsdl-dev libesd0-dev
libwxgtk2.6-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev
genromfs lsb-core libc6-dev-i386 g++-multilib lib32z1-dev lib32ncurses5-dev
u-boot-tools android-tools-fastboot lib32stdc++-4.9-dev lib32z1。同时为了保证能将每一个库文件安装,需要一一安装。具体的命令,如下:
- sudo apt-get install git
- sudo apt-get install git-core
- sudo apt-get install gnupg
- sudo apt-get install flex
- sudo apt-get install bison
- sudo apt-get install gperf
- sudo apt-get install libsdl-dev
- sudo apt-get install libesd0-dev
- sudo apt-get install libwxgtk2.6-dev
- sudo apt-get install libwxgtk2.8-dev
- sudo apt-get install build-essential
- sudo apt-get install zip
- sudo apt-get install curl
- sudo apt-get install libncurses5-dev
- sudo apt-get install zlib1g-dev
- sudo apt-get install genromfs
- sudo apt-get install lsb-core
- sudo apt-get install libc6-dev-i386
- sudo apt-get install g++-multilib
- sudo apt-get install lib32z1-dev
- sudo apt-get install lib32ncurses5-dev
- sudo apt-get install u-boot-tools
- sudo apt-get install android-tools-fastboot
- sudo apt-get install lib32stdc++-4.9-dev
- sudo apt-get install lib32z1
不知为什么,本人有两个库文件没有安装成功,分别为libwxgtk2.6-dev 和lib32stdc++-4.9-dev.
2 修改交叉编译器
系统升级后,默认的交叉编译器是4.8版本,但 Gbox4418建议的是4.4版本,故为了减少在编译过程中,不必要的麻烦,将交叉编译器将为4.4版本。
(1)操作前的版本,是4.8版本
(2)修改交叉编译器
依次执行如下命令,即可降低编译器的版本
- sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib
- cd /usr/bin
- sudo mv gcc gcc.bk
- sudo ln -s gcc-4.4 gcc
- sudo mv g++ g++.bk
- sudo ln -s g++-4.4 g++
(3)修改后的版本,是4.4版本
3 准备编译源码
下载官方提供的Linux源码,并将其拖放到Ubuntu桌面,然后解压到当前用户目录下。
- cp Desktop/g4418_linux-20160506.tar.bz2 ~/
- cd
- tar xvf g4418_linux-20160506.tar.bz2
gcc: 存放的是交叉编译器;
rootfs:存放的是根文件系统;
out:存放的是编译后的镜像文件;
linux:存放uboot,内核源码,一些依赖库、功能库和测试程序;
至此,Linux QT 源码包安装完成。
二 编译系统
编译系统,主要是操作源码包下的mk.sh文件,故有必要认识下该文件,其部分源码如下所示,即脚本根据不同的参数输入,执行不同的操作,当编译uboot时,输入的参数应为u;当编译内核时,输入的参数应为k;当编译根文件系统时,输入的参数应为r。
- setup_environment()
- {
- LANG=C
- PATH=${BS_DIR_TOP}/out/host/linux-x86/bin:$PATH;
- cd ${BS_DIR_TOP};
- mkdir -p ${BS_DIR_RELEASE} || return 1
- }
- build_bootloader_uboot()
- {
- # Compiler uboot
- cd ${BS_DIR_UBOOT} || return 1
- make distclean CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_BOOTLOADER} || return 1
- make ${BS_CONFIG_BOOTLOADER_UBOOT} CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_BOOTLOADER} || return 1
- make -j${threads} CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_BOOTLOADER} || return 1
- # Copy bootloader to release directory
- cp -v ${BS_DIR_UBOOT}/ubootpak.bin ${BS_DIR_RELEASE}
- cp -v ${BS_DIR_UBOOT}/env.txt ${BS_DIR_RELEASE}
- cp -v ${BS_DIR_UBOOT}/s5p4418-sdmmc.sh ${BS_DIR_RELEASE}
- echo "^_^ uboot path: ${BS_DIR_RELEASE}/ubootpak.bin"
- return 0
- }
- build_kernel()
- {
- # Compiler kernel
- cd ${BS_DIR_KERNEL} || return 1
- make ${BS_CONFIG_KERNEL} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} || return 1
- make -j${threads} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} || return 1
- make -j${threads} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} uImage || return 1
- # Copy uImage to release directory
- cp -v ${BS_DIR_KERNEL}/arch/arm/boot/uImage ${BS_DIR_RELEASE}
- echo "^_^ kernel path: ${BS_DIR_RELEASE}/uImage"
- # generate boot.img
- cd ${BS_DIR_TOP} || return 1
- echo 'boot.img ->' ${BS_DIR_RELEASE}
- # Make boot.img with ext4 format, 64MB
- cp -v ${BS_DIR_RELEASE}/uImage ${BS_DIR_TARGET}/boot
- mkuserimg.sh -s ${BS_DIR_TARGET}/boot ${BS_DIR_TARGET}/boot.img ext4 boot 67108864
- cp -av ${BS_DIR_TARGET}/boot.img ${BS_DIR_RELEASE} || return 1;
- return 0
- }
- build_rootfs()
- {
- # Compiler rootfs
- cd ${BS_DIR_ROOTFS} || return 1
- make ${BS_CONFIT_ROOTFS} || return 1
- make || return 1
- # Copy image to release directory
- cp -v ${BS_DIR_ROOTFS}/output/images/rootfs.ext4 ${BS_DIR_RELEASE}/qt-rootfs.img
- }
- 。
1 编译Uboot
执行mk.sh -u
2 编译内核
执行mk.sh -k
3 编译根文件系统
执行mk.sh -r
这里要说的是,在官方提供的参考手册中,编译根文件系统时,要求输入的是b参数,可见没有更新,应为r
在编译过程中,还是出错了,好在很快定位到出错的原因。
虽然上面提示说是找不到makeinfo 这个软件包,但事实上,是缺少 texinfo 这个包,安装即解决
最后编译的信息如下。
三 总结
1 库文件
库文件有两个(libwxgtk2.6-dev 和lib32stdc++-4.9-dev)没有安装成功,而官方应该提示安装texinfo
2 文档和源码
文档和源码,有此地方不匹配,除了上面提到的编译根文件系统的参数外,还有uboot部分
3 好在,官方提供的源码是“一站式服务”,只要拥有源码,“一键”即可编译uboot、kernel和rootfs,而不需要用户分别进行配置