准备环境:
- 240G 磁盘空间(SSD 最佳,大概需要经历600G的写入量,做好心理准备.)
- Ubuntu 16.04 x64 (必须是英文原版,不能是优麒麟等.)
- 靠谱的网络连接(可以顺利访问GitHub等,要产生约30GB下载数据.如果不具备,远程服务器体验吧.)
我的配置如下:
- E3-1270V6 (Run Ubuntu directly)
- 32G DDR4 2133MHz (4 * 8GB)
- Intel SSD DC S3520 240G
如果虚拟机实在不够用,也可以使用物理机编译.也可以去购买时长付费的独服,或者裸金属服务器.
推荐链接:https://www.lijingquan.net/archives/4018
其实全程用SSH操作就可以,图形上也没什么东西的.
登陆后安装一大堆软件(1G 左右空间):
apt-get install wget git-core unzip make vim gcc g++ screen build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop gcc g++ htop nload iotop
还要创建一个普通权限账号.
adduser ubuntu usermod -a -G sudo ubuntu
然后创建工作目录(yocto_downloads 目录储存的是软件源码包.可以共享,挂载到NFS分区也可以哦.):
mkdir yocto mkdir yocto_downloads
然后拉取代码并解压(在yocto目录).
wget http://downloads.yoctoproject.org/releases/yocto/yocto-2.4.2/poky-rocko-18.0.2.tar.bz2 tar xvjf poky-rocko-18.0.2.tar.bz2 cd poky-rocko-18.0.2/
继续进入poky目录:
. ./oe-init-build-env
然后编辑conf/local.conf文件,取消部分注释并作如下修改(这个配置是生成VDI/VMDK镜像且尽量打包更多软件的配置.).
MACHINE ?= "qemux86-64" DL_DIR ?= "/home/ubuntu/yocto_downloads" SSTATE_DIR ?= "${TOPDIR}/sstate-cache" TMPDIR ?= "${TOPDIR}/tmp" SDKMACHINE ?= "x86_64" PACKAGE_CLASSES ?= "package_rpm package_ipk package_deb" EXTRA_IMAGE_FEATURES = "dbg-pkgs dev-pkgs ptest-pkgs tools-sdk tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks" IMAGE_FSTYPES = "wic.vdi wic.vmdk" BB_NUMBER_THREADS = "16" PARALLEL_MAKE ?= "-j 16"
使用toaster固然是很好的工具,但是我还是不喜欢,还是打命令比较爽快.而hob,早就废除了.
因为构建时间很长,我又不可能长时间占用SSH,所以我开了个screen(对,就是用screen命令.)再编译.你也可以直接编译.
time bitbake world
上面这个是构建完整的(加入time是为了看看最终需要多长时间),包含默认包里面的一切,先构建一次.(其实还有其他目标,比如什么都编译进去的bitbake world,但是时间就很长了.),这时候觉得你的固态比较卡,这也是正常的,毕竟4K密集,再好的SSD,他也有个上限,所以CPU反而不是最主要的.
简单的扫描后,就开始拉取,编译,我需要完成12318个任务(当然,每个人看起来不太一样.)
这时候看到CPU基本是跑满,满屏幕都是RUN状态,看起来就很爽有木有.
而且看磁盘瓶颈也不高,还是多升级CPU好.
正确做法是,放一边,几个小时后就会好.然后247分钟后完成了~ (4小时)
对应文件生成~
完整有了所用东西,再编译,就只是个打包操作就很快了.一进入任务就99%了~
6分钟就有结果了~
相应虚拟机文件也有了~