其中,ARMBIAN-5.77,换内核的时候,发现 /dev/mmcblk1 中的分区表丢失。
用 fdisk 恢复它就行了。开始/结束,抄下面的表。5.67和5.77制作的分区表是一样的。(2023-08记录)
如果担心和我的N1的分区表不同。最好自己先备份一个。用命令
fdisk -l /dev/mmcblk1
。
Disk /dev/mmcblk1: 7.28 GiB, 7818182656 bytes, 15269888 sectors
Disklabel type: dos
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 1368064 1617919 249856 122M c W95 FAT32 (LBA)
/dev/mmcblk1p2 1619968 15269887 13649920 6.5G 83 Linux
如果确实没有备份。找到当时的安装u盘,找到文件 "/root/install.sh"。
手工执行一下前面的20-30行,跳过最前的 u-boot 备份,就用 u盘上原来的备份文件 "u-boot-default.img"。
执行 parted 分区, 恢复 u-boot,执行到 "sync"。就恢复分区表了。
两个链接,感觉有用,但没看懂。先留着。
【eMMC读写操作(eMMC5.1)】,【E900v22C Armbian 写入emmc】
各个kernel版本的尝试
最终,我用了 ophub的 kernel-5.15.125。见本帖子的后面。
尝试 SuzukiHonoka/s905d-kernel-precompiled 的各个kernel版本。
kernel-5.15.15 和 kernel-5.15.104。(2023-08记录)
uname -a
分别显示:
Linux aml 5.15.15-aml-s905d-starx-action #1 SMP PREEMPT Tue Jan 18 08:33:08 UTC 2022 aarch64 GNU/Linux
Linux aml 5.15.104-aml-s905d-starx-action #1 SMP PREEMPT Tue Mar 28 01:48:47 UTC 2023 aarch64 GNU/Linux
/boot/ 分区剩余 11MB, 8.2MB。
内核 和 nft-1.06 搭配很好。有 TUN, TAP, WIREGUARD, PPP, PPPOE 支持。无 loop 设备。
N1启动,直到进入系统,插 HDMI 的显示器,一直都显示开机 LOGO 图。启动OK。
插上USB键盘也没变化。系统只能远程登录。本地的键盘,显示器,没法用。
(15和104版一样,USB键盘,显示器没法用。网络正常。)
kernel-5.15.104 比5.15.15 编译的config项目多了一些。个人感觉 104 应该更好点。
kernel-6.1.42。 启动失败。N1 不能用。(2023-08记录)
kernel-6.1.25。 启动失败。N1 不能用。(2023-08记录)
kernel-5.13.14 (2023-08记录)
uname -a
显示:
Linux aml 5.13.14-aml-s905d-starx-action #1 SMP PREEMPT Sat Sep 4 10:35:52 UTC 2021 aarch64 GNU/Linux
/boot/ 分区剩余 4.9MB。
内核 和 nft-1.06 搭配很好。有 TUN, TAP, WIREGUARD; 无 PPP, PPPOE支持。
N1启动,直到进入系统,插 HDMI 的显示器,显示开机 LOGO 图几秒后,蓝屏。显示器提示"无信号"。
插上USB键盘也没变化。系统只能远程登录。本地的键盘,显示器,没法用。
退回 kernel5.0.2,重新装 kernel5.13.14,居然好了。(也许前一次安装, 哪里做的不对)
启动成功。本地显示器有显示,usb键盘工作正常。
kernel-5.14.11 (2023-08记录)
/boot/ 分区剩余 3.1MB。
内核 和 nft-1.06 搭配很好。有 TUN, TAP, WIREGUARD; 无 PPP, PPPOE支持。
N1启动,直到进入系统,插 HDMI 的显示器,显示开机 LOGO 图几秒后,蓝屏。显示器提示"无信号"。
插上USB键盘也没变化。系统只能远程登录。本地的键盘,显示器,没法用。
换用 kernel-5.0.2 的 dtb (改uEnv.ini),显示开机 LOGO 图几秒后,显示正常。
插上usb键盘没反应。本地console,有显示,不能输入,没法用。
也许,重装,也会好。没再测试了。
ARMBIAN 5.67, 5.77 之前换的不满意,再换
基础知识参考
【vmlinuz 文件解压缩】
【How do I uncompress vmlinuz to vmlinux?】
【Extract vmlinux from vmlinuz or bzImage】
N1 的 uboot 不支持 gzip压缩的内核,我测试过,启动失败。所以要解开它。# 如果 "file vmlinuz" 显示: Linux kernel ARM64 boot executable Image,
#--- 则 vmlinuz 不是 gzip压缩的,执行
cp vmlinuz Image
# 如果 "file vmlinuz" 显示: gzip compressed data, max compression,
#--- 则 vmlinuz 是 gzip压缩的,执行 (较慢)
dd if=vmlinuz-xxxx skip=$(head -c1m vmlinuz-xxxx | grep -abo -m1 -e $'\x1f\x8b\x08\x00' |cut -d: -f 1) bs=1 |zcat > ./Image
#或 (较快)
N=$(head -c1m vmlinuz-xxxx | grep -abo -m1 -e $'\x1f\x8b\x08\x00'| awk -F: '{print $1+1}') && tail -c +$N vmlinuz-xxx | gzip -d > ./Image
【initrd.img, vmlinux】
【initrd.img的压缩(制作)及解压的过程】
【How to build uInitrd/initrd.img for Ubuntu?】
【Extracting content from the file uInitrd】
mkimage, dumpimage 需要安装 apt install u-boot-tools
#---- 安装好 vmlinuz 之后,生成 initrd.img 和 uInitrd,执行,
/etc/kernel/postinst.d/initramfs-tools ${version}
update-initramfs -c -t -k "${version}"
#---- uInitrd 转 initrd.img.gz
dd if=/boot/uInitrd of=./initrd.img.gz bs=64 skip=1
dumpimage -T ramdisk -o uInitrd initrd.img.gz
#---- initrd.img.gz 转 uInitrd,
mkimage -A arm64 -O linux -T ramdisk -C gzip -a 0 -e 0 -n uInitrd -d /boot/initrd.img-xxx ./uInitrd-xxx
#---- vmlinuz 转 uImage,
mkimage -A arm64 -O linux -T kernel -C gzip -a 0x1080000 -e 0x1080000 -n "Linux" -d vmlinuz-xxx uImage
#---- uImage 转 vmlinuz,
dumpimage -T kernel -o vmlinuz uImage
【cpio格式 initrd 的解压与压缩】
试试别人的内核
【devmfc/debian-on-amlogic】
【ophub/kernel】
devmfc/debian-on-amlogic
试了试 他家的 6.1.38-meson64 (2023-08记录)
从 .config 文件看,有 TUN, TAP, BLK_DEV_LOOP, 还有很多的 ROCKCHIP 配置。没有选 ACPI。
换到 N1 上,无法启动。看来不合适。
ophub/kernel
去 【ophub/kernel_dev】下载 "5.15.125.tar.gz",约 89MB。
写了个脚本,见【Debian11_手工制作deb安装包_过程和例子】。
把 tar.gz 压缩包,转换成 deb 安装包。
这个脚本,创建"文件目录"部分,参考了 ophub 内核升级脚本 【armbian-update】"update_kernel()"函数的安装步骤。
在 N1 上执行这个脚本。耗时 2m55s 生成两个 deb 文件。文件的体积还好。
7.2M linux-headers-5.15.125-ophub-amlogic-s905d-osn_arm64.deb
26M linux-image-5.15.125-ophub-amlogic-s905d-osn_arm64.deb
把这两个包安装好。(2023-08记录)
注意: "boot" 分区剩余空间 86MB,安装 linux-image-xxx.deb 失败,报错:"空间不足"。
清理到剩余空间 105MB,安装成功。装完剩余 46MB。可以把之前移出的文件,再移回来。
因为安装结束,会触发脚本重新生成initrd.img,uInitrd,产生的临时文件 导致 boot分区满了。
两个解决办法,
把文件移出去,剩余空间留大点。
修改生成deb的脚本,去掉 postinst 脚本。不触发重新生成initrd.img。
"file vmlinuz-5.15.125-ophub" 显示: Linux kernel ARM64 boot executable Image,
vmlinuz 27MB。"/boot/"目录中,执行
cp vmlinuz-5.15.125-ophub zImage
uInitrd 已经重新生成了,不用修改。
检查 uEnv.ini 中 dtb 的路径。ophub的dtb,在 "/boot/dtb-5.15.125-ophub/" 目录中。
先 sync,再 reboot,重启。 N1 启动成功。(2023-08记录)
"uname -a" 显示,
Linux aml 5.15.125-ophub #1 SMP PREEMPT Wed Aug 9 12:36:03 CST 2023 aarch64 GNU/Linux
有 TUN, TAP, WIREGUARD, PPP, PPPOE, BLK_DEV_LOOP 支持。ipv6 功能正常。
BLK_DEV_LOOP 设置了 128 个,有点多,其实有 8个就够用了。
内核 和 nft-1.06 搭配很好。nftables 规则启用正常。(2023-08记录)
syslog中有 蓝牙,wifi的相关显示。我没测试 蓝牙,wifi。
连接本机的 HDMI显示器,usb键盘,工作正常。插u盘能正常识别,挂载。(2023-08记录)
如果这个内核,使用 SuzukiHonoka/s905d-kernel-precompiled 的 5.15.104 的 dtb,也能用,运行也没发现问题。
N1 不插外设,没啥访问,市电插座上的功率计显示,2.7~3.2 瓦。(2023-08记录)
以下各个版本的内核测试,都是使用【Debian11_手工制作deb安装包_过程和例子】中的脚本,打包成两个 deb 安装包。
安装其中的 linux-image-xxx(版本号)-amlogic-s905d.deb ,然后启动。
ophub/kernel
【kernel_dev】
"6.1.45.tar.gz"
90.5MB。
启动成功
2023-08测
hdmi显示器,usb键盘 工作正常。
vmlinuz 33MB。
128个dev_loop。有ppp。
【kernel_dev】
"5.15.125.tar.gz"
88.2MB。
启动成功
2023-08测
见上文的描述。
vmlinuz 27MB。
128个dev_loop。有ppp。
【kernel_stable】
"6.1.45.tar.gz"
84.4MB。
启动失败
2023-08测
黑屏,大约每十秒闪现一次开机logo。
似乎在不停重启。
安装了两次,测试了两次。排除了操作失误的可能。确实是不能启动。
【kernel_stable】
"5.15.125.tar.gz"
82.1MB。
启动成功
2023-08测
hdmi显示,usb键盘,正常。
vmlinuz 27MB。
128个dev_loop。有ppp。
【kernel_flippy】
"6.1.45.tar.gz"
72.9MB。
启动失败
2023-08测
黑屏,大约每十秒闪现一次开机logo。
似乎在不停重启。
【kernel_flippy】
"5.15.125.tar.gz"
65.9MB。
启动成功
2023-08测
hdmi显示,usb键盘,正常。
vmlinuz 24MB。
8个dev_loop。有ppp。
【kernel_beta】
"6.1.45.tar.gz"
84.4MB。
启动成功
2023-08测
hdmi显示,usb键盘,正常。
vmlinuz 33MB。
128个dev_loop。有ppp。
【kernel_beta】
"5.15.125.tar.gz"
82.1MB。
启动成功
2023-08测
hdmi显示,usb键盘,正常。
vmlinuz 27MB。
128个dev_loop。有ppp。
【osnosn/armbian-kernel-precompiled/】,用 ophub的源码,重新编译的。
# N1_Kernel_5.15.126+.rar 中,需要用到,两个 deb文件和一个 zImage。
dpkg -c linux-image-5.15.126+_5.15.126+-4_arm64.deb #查看deb包中的文件列表
dpkg -x linux-image-5.15.126+_5.15.126+-4_arm64.deb ./xxx/ #把deb包中的文件解压到xxx/目录中,用来查看文件
kernel-5.15.126。vmlinuz 22MB。有 ppp,tun,tap,wireguard。有 8个dev_loop。
安装说明,见【说明 armbian-kernel-s905d-phicomm-n1】。
## ---安装步骤---
cd /root/
mkdir boot_5.0.2-bak/; cd boot_5.0.2-bak/
## 移动文件,腾出空间
mv /boot/System.map-5.0.2-aml-s905 ./
mv /boot/config-5.0.2-aml-s905 ./
mv /boot/vmlinuz-5.0.2-aml-s905 ./
mv /boot/initrd.img-5.0.2-aml-s905 ./
mv /boot/uInitrd ./
mv /boot/zImage ./
## 备份其他文件
cp -p /boot/u-boot-default.img ./
cp -p /boot/armbian* ./
cp -p /boot/boot* ./
cp -p /boot/emmc_autoscript* ./
cp -p /boot/uEnv.ini ./
cp -rp /boot/dtb-5.0.2-aml-s905 ./
# 解压 RAR文件,并进入解压目录。先装headers再装image,然后覆盖zImage,最后替换dtb文件
dpkg -i linux-headers-5.15.126+_5.15.126+-4_arm64.deb #安装headers文件
dpkg -i linux-image-5.15.126+_5.15.126+-4_arm64.deb #安装新内核
cp zImage /boot/zImage #把 RAR中的 zImage拷贝过去
rm /boot/uImage #删除无用文件
cd /boot/; mkdir dtb-5.15.126/
cp -p /usr/lib/linux-image-5.15.126+/amlogic/meson-gxl-s905d-phicomm-n1.dtb dtb-5.15.126/
修改 /boot/uEnv.ini 中对应的行,用"#"注释旧的行,新增一行 dtb_name=/dtb-5.15.126/meson-gxl-s905d-phicomm-n1.dtb
sync; sync; #确保所有更改,已经写入emmc
换了 kernel-5.15.126,如果要使用 wireguard 网络,无需安装 wireguard包,仅安装apt install wireguard-tools
即可。(2023-10测)
因为安装 wireguard包,需要依赖官方内核 linux-image-xxx。而,N1无法安装官方内核。
【WireGuard_2和3台OpenWRT测试_LAN-LAN连接测试_Debian11_CentOS8】
android 旧手机。
做电脑副屏,用 spacedesk。手机和PC都要装 app。
做电脑副屏,买一个 USB3的HDMI视频采集卡,插在手机的 type-C 上。PC无需安装软件。
也可以插在PC的usb3上采集其他hdmi的视频输出。
做摄像头,用 DroidCam。手机和PC都要装 app。
行车记录仪,dailyraods。