瑞芯微Rockchip开发者社区
直播中

贾小龙

7年用户 1618经验值
私信 关注
[经验]

在PC主机上完成一种Gentoo根文件系统制作

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

更多回帖

发帖
×
20
完善资料,
赚取积分