硬盘准备:至少120G.
内存准备:至少8G.
时间准备:至少1小时.
工具:波特率支持1500000的USB-UART(CP2102/CP2104)
下载链接:https://mega.nz/#F!jGhVCBbA (不保证长期有效)
不管是哪个系统,Android还是Linux,貌似都有点问题.Linux表现为官方镜像不Boot,Android首次启动要Reset系统.是不是好奇怪.
第一步,解压:
第二步,安装OpenJDK 1.7以及一大堆其他软件.
sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-7-jdk git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev libwxgtk3.0-dev lib32readline6-dev gcc-multilib libswitch-perl vim sudo apt-get install gcc-arm-linux-gnueabihf lzop libncurses5-dev libssl1.0.0 libssl-dev
第三步,编译安卓.
针对U-Boot
cd u-boot make rk3399_defconfig make ARCHV=aarch64 -j16
针对内核
cd kernel make ARCH=arm64 orangepi_defconfig make ARCH=arm64 rk3399-orangepi.img -j16
针对安卓
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar source build/envsetup.sh lunch rk3399_mid_orangepi-userdebug make -j16
安卓编译比较耗时,这样就是成功的.
使用mkimage.sh脚本打包.
复制打包结果到~/android/RKTools/linux/Linux_Pack_Firmware/rockdev_for_build/Image,接着执行打包生成单一下载文件.(MiniLoader 被无视了?RKTools可能需要自己下载放进去.)
安卓编译垃圾清理~ (清理后,下次编译耗时++)
make installclean
第四步,安装驱动,把目标复制出来,烧写.
接着调整好IMG路径.
按DC头隔壁的RECOVERY按键,插入TYPE-C到电脑,再插板子,再插入DC头(12V),然后开始烧写~ 这部分就好了~ (内置没程序就MASHROM,有程序就LOADER)
点升级开始~ (如果发现是MASKROM的话,还要烧写过程中按着RECOVERY,直到进入LOADER模式.)
注意:启动分辨率需要大于等于1280*800.(最好1080p,但是我没有)
第五步,Linux的编译
编译环境准备(主要是64位编译器,安卓编译自带编译器所以不用做)
sudo apt-get install git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev libssl-dev pv e2fsprogs build-essential fakeroot devscripts
接下来当然是编译.
./build/mk-uboot.sh rk3399-orangepi ./build/mk-kernel.sh rk3399-orangepi
rootfs他已经制作好不少.(要自己下载放到out目录.加起来将近10G.我只放最小的ubuntu-server试试.)
./build/mk-image.sh -c rk3399 -t system -s 4000 -r out/ubuntu-server.img
我在Windows这么烧写~ (带Loader下烧写,Loader位于/home/tater/linux/rkbin/rk33)
Linux下执行烧写~ (Linux虚拟机没能正常识别他,需要Maskrom烧写.)
./build/flash_tool.sh -c rk3399 -p system -i out/system.img
最后,制作自己的rootfs.(其实就是tar转IMG)
sudo apt-get install qemu-user-static mkdir rootfs sudo tar -xpf ubuntu-base-16.04-core-arm64.tar.gz -C rootfs sudo cp -b /etc/resolv.conf rootfs/etc/resolv.conf sudo cp /usr/bin/qemu-aarch64-static rootfs/usr/bin/ # 进入根文件系统 sudo chroot rootfs /bin/bash # 更新软件仓库并安装软件 apt update apt upgrade # 根据自己需求安装功能(下面列出的两个一定要,第一个不装,串口什么没法用,第二个不装/sbin/init没有.) apt install udev systemd # 添加用户及设置密码 useradd -s '/bin/bash' -m -G adm,sudo tater # 给用户 tater 设置密码,如果不新建用户,需要配置/etc/securetty文件才能root登录. passwd tater # 给用户 root 设置密码 passwd root # 退出 Rootfs exit # 生成空白 image 文件(大小自己调节) dd if=/dev/zero of=ubuntu-server.img bs=1M count=2048 # 格式化 image 文件为 ext4 格式 sudo mkfs.ext4 ubuntu-server.img # 挂载 image 文件到 ubuntu-server 文件夹 mkdir ubuntu-server sudo mount ubuntu-server.img ubuntu-server/ # 将刚才制作的 rootfs 的内容拷贝到 image 挂载的文件夹下 sudo cp -rfp rootfs/* ubuntu-server/ # 取消挂载 sudo umount ubuntu-server/ # 检查文件系统的正确性 e2fsck -p -f ubuntu-server.img # 自动调整分区的大小 resize2fs -M ubuntu-server.img
最后,自制Ubuntu启动了~ (18.04 串口BUG没解决,没法用,现在启动了,需要获得所有可用空间,手动执行一次resize2fs /dev/mmcblk1p就可以.
)
用 OrangePi_build 工具编译,其实也蛮好~