Gentoo根文件系统制作(在PC主机上操作)
准备stage3
解压stage3到本地目录temp
mkdir temp
sudo tar jxvf stage3-arm64-arm64-20170223.tar.bz2 -C temp
chroot via qemu-user-static in docker
使用qemu-user-static in docker来修改
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
到这里就可以执行chroot了
sudo chroot temp
安装alien(为了解压deb包)
emerge alien
解压deb,得到qemu-user-static-2.0.0~rc1+dfsg.tgz
alien -t qemu-user-static_2.0.0~rc1+dfsg-0ubuntu3_amd64.deb
解压qemu-user-static-2.0.0~rc1+dfsg.tgz得到qemu-aarch64-static
sudo cp qemu-aarch64-static /usr/bin/qemu-aarch64
sudo cp /usr/bin/qemu-aarch64 temp/usb/bin/qemu-aarch64
安装app-emulation/qemu-user为了获得脚本(用的是overlay安装)
emerge app-emulation/qemu-user
执行脚本(确保aarch64的执行正确, /usr/bin/qemu-arm如果存在会导致失败,删除即可)
sudo /etc/init.d/qemu-binfmt start
基本配置
拷贝DNS信息
cp -L /etc/resolv.conf temp/etc/
制作文件系统
可以完全参考mygentoo,此处不详细描述
挂载必要目录
mount -t proc proc temp/proc
mount --rbind /sys temp/sys
mount --make-rslave temp/sys
mount --rbind /dev temp/dev
mount --make-rslave temp/dev
chroot temp
Ubuntu根文件系统制作(在PC主机上操作)
准备ubuntu base
解压ubuntu core到本地目录temp
mkdir temp
sudo tar xzvf ubuntu-base-16.04.1-base-arm64.tar.gz -C temp
基本配置
拷贝DNS信息
cp -L /etc/resolv.conf temp/etc/resolv.conf
Qemu static user
sudo cp /usr/bin/qemu-aarch64 temp/usr/bin/
到这里就可以执行chroot了
sudo chroot temp
设置主机名(不设置sudo会有问题)
echo"rk3399" > /etc/hostname
设置主机入口IP(hosts中要包含hostname)
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.1.1 rk3399" >> /etc/hosts
制作文件系统
进入根文件系统进行操作
sudo chroot temp
更新及安装必要软件
apt update
apt-get install console-setup iputils-ping sudo vim net-tools
ssh software-properties-common
其中console-setup encoding选的是utf-8(该软件不安装串口无法输入) 这里并不需要/etc/init/目录下有类似ttyFIQ0.conf的文件
添加用户
useradd -s '/bin/bash' -m -G adm,sudo zeroway
给用户设置密码
passwd zeroway
修改/etc/sudoers
zeroway ALL=(ALL:ALL) ALL
设置分区信息(/etc/fstab,推荐这种方法)
/dev/mmcblk0p5 / ext4 defaults,noatime,errors=remount-ro 0 1
或者用下面这种
ln -fs /proc/self/mounts /etc/mtab
ubuntu 应用
安装aria2
add-apt-repository ppa:t-tujikawa/ppa
apt-get update
apt-get install aria2
ubuntu上触摸屏校准(touch calibrator)
参考文章:i.MX6UL图形界面,触屏校准
安装校准工具包(用来进行触屏校准数据获取)
sudo apt install xinput-calibrator
查看/usr/share/X11/xorg.conf.d/目录下是否有40-libinput.conf这个文件
没有这个文件,则需要安装xserver-xorg-input-libinput
sudo apt-get install xserver-xorg-input-libinput
复制该文件到/etc/X11/xorg.conf.d/目录下(/etc/X11可能没有,需要自己创建)
sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/
进入/etc/X11/xorg.conf.d/目录下修改40-libinput.conf文件,找到touchscreen section
在Identifier下添加一行 Option "CalibrationMatrix" "校准矩阵数据"
这里"校准矩阵数据",需要根据实际情况进行校准矩阵的编写,可以参考这个链接libinput
下面是我手里板的内容(没有填写校准矩阵数据)
Section "InputClass"
Identifier "libinput touchscreen catchall"
Option "CalibrationMatrix"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
重启开发板后触摸校准即生效
Arch根文件系统制作(在PC主机上操作)
下载ArchLinuxARM-aarch64-latest.tar.gz
解压到本地
mkdir temp
sudo tar xzvf ArchLinuxARM-aarch64-latest.tar.gz -C temp/
Qemu static user
sudo cp /usr/bin/qemu-aarch64 temp/usr/bin/
到这里就可以执行chroot了
sudo chroot temp
设置用户和密码
useradd -m -s /bin/bash zeroway
passwd zeroway
设置主机名
echo"rk3399" > /etc/hostname
修改支持开发板默认串口
cp /lib/systemd/system/serial-getty@.service /lib/systemd/system/serial-getty@ttyFIQ0.service
把里面的"%i.device"改为"%i"
设置开机启动服务
systemctl enable serial-getty@ttyFIQ0.service
修改源(/etc/pacman.d/mirrorlist)
设置到这里就可以制作成镜像烧写,烧写开机后切换到root用户,默认root密码为root
安装桌面
更新软件源
pacman -Syu
更新pacman key
pacman-key --init
pacman-key --populate
安装X Window
pacman -S xorg-server
pacman -S xorg-twm xorg-xclock xterm
pacman -S xorg
pacman -S xorg-xinit
测试是否安装成功
startx
安装slim(Display Manager)
pacman -S slim
开机启动slim(systemd)
systemctl enable slim.service
其中DM的配置文件是(/etc/slim.conf)有如下内容
login_cmd exec /bin/bash -login ~/.xinitrc %session
所以创建(~/.xinitrc)其内容如下(比如启动i3wm)
#!/bin/sh
exec i3
添加执行权限给.xinitrc
chmod +x ~/.xinitrc
安装xfce4(Window Manager)
pacman -S xfce4
测试是否安装成功
startxfce4
wifi使用
拷贝下面的固件到/lib/firmware目录下
fw_bcm4356a2_ag.bin
nvram_ap6356s.txt
使用ssid和密码生成配置文件
wpa_passphrase yourssid yourpassphrase > /etc/wpa_supplicant.conf
在配置文件最顶部添加下面内容
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
确保有相应的目录
mkdir -p /var/run/wpa_supplicant
启动wpa_supplicant
wpa_supplicant -B -Dnl80211 -i wlan0 -c /etc/wpa_supplicant.conf
使用DHCP获得IP地址后即可上网
dhcpcd wlan0
将根文件系统制作成镜像
这里制作一个8G的ext4格式的镜像文件
dd if=/dev/zero of=linuxroot.img bs=1M count=8192
sudo mkfs.ext4 linuxroot.img
mkdir rootfs
sudo mount linuxroot.img rootfs/
sudo cp -rfp temp/* rootfs/
sudo umount rootfs/
e2fsck -p -f linuxroot.img
resize2fs -M linuxroot.img
烧写制作好的文件系统镜像
rkflashtool w linuxroot < linuxroot.img
开机进入系统在系统正确加载后执行扩展文件系统命令(这里的mmcblk1p5对应的linuxroot分区)
resize2fs /dev/mmcblk1p5
解包和打包
rk3399 ramdisk下载地址
参考文章android boot.img unpack pack
参考文章Boot.img tools unpack, repack, ramdisk
工具源码下载
git clone
cd rockchip-mkbootimg
make
打包boot
mkbootimg --kernel Image --ramdisk ramdisk_linux.cpio.gz --second resource.img -o linux_boot.img
解包boot
unmkbootimg -i linux_boot.img
解包ramdisk到当前目录
gzip -d ramdisk_linux.cpio.gz
cpio -idmv < ramdisk_linux.cpio
打包当前目录到ramdisk.cpio.gz
find . | cpio -o -H newc | gzip > ../ramdisk.cpio.gz
原作者:54shady