海运的博客

n1盒子不能开机救砖

发布时间:October 17, 2018 // 分类:N1 // No Comments

将armbian写入N1 mmc分区的时候将分区搞坏了,启动时显示logo界面后一直黑屏,不能进入android系统和通过U盘启动,也就没办法进入线刷模式,准备拆机短接进入线刷模式,再不行上TTL线,偶然在恩山看到通过插拔电源接口线可进入线刷模式,试了下刷机成功,万幸。
1.打开刷机软件导入镜像,点击开始。
2.N1盒子端拔掉电源线,用双公头USB线连接电脑和盒子
3.插入电源线,不出意外开始刷机。

参考:
http://www.right.com.cn/forum/thread-336312-1-1.html
http://www.right.com.cn/forum/thread-335972-1-1.html

ubuntu/linux交叉编译n1下armbian内核

发布时间:October 15, 2018 // 分类:N1 // 7 Comments

之前有写编译armbian内核模块 ,但是在有些情况下模块并不能被加载。如我要开启bbr,虽然系统自带了bbr模块,但是没bbr所需要的fq队列模块,编译fq模块后不能加载,因为内核在编译的时候未开启NET_SCHED,遇到这种情况只有重新编译内核了。
2018-10-15_192540.png
将下载的armbian img镜像挂载到硬盘,等会编译好内核后直接替换镜像中原先的内核,使用armbian的rootfs系统。

losetup -P -f --show Armbian_5.62_Aml-s9xxx_Ubuntu_bionic_default_4.18.7_20181012.img 
#loop3为上面挂载的loop设备
mount /dev/loop3p2 /mnt/
mount /dev/loop3p1 /mnt/boot/

安装编译工具及配置编译环境:

apt-get install gcc make pkg-config git bison flex libelf-dev libssl-dev libncurses5-dev libncursesw5-dev
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
tar -Jxvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz 
export ARCH=arm64 
export CROSS_COMPILE=/root/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
git clone https://github.com/150balbes/Amlogic_s905-kernel.git
#4.9内核,gcc要使用版本6
#git clone -b khadas-4.9 https://github.com/150balbes/Amlogic_s905-kernel.git
cd Amlogic_s905-kernel
#使用4.18.7内核
git checkout 20181012

使用armbian自带内核的配置文件:

cp /mnt/boot/config-4.18.7-aml-s9xxx .config

然后再配置要开启的功能,退出时要保存配置,更多编译选项使用make help查看。

make clean
make menuconfig

编译安装内核文件:

make LOCALVERSION="-aml-s9xxx" Image -j 4
make install INSTALL_PATH=/mnt/boot/
cp arch/arm64/boot/Image /mnt/boot/zImage

编译安装内核模块:

rm -rf /mnt/lib/modules
make LOCALVERSION="-aml-s9xxx" modules -j 4
make modules_install INSTALL_MOD_PATH=/mnt/

使用修改的dtb文件解决armbian 4.18负载较高问题:

rm -rf /mnt/boot/dtb.img
wget https://github.com/yangxuan8282/phicomm-n1/releases/download/dtb/meson-gxl-s905d-phicomm-n1.dtb -O /mnt/boot/dtb.img

完成,将修改好的img镜像dd到u盘即可使用。

linux下查看N1盒子mmc分区信息

发布时间:October 14, 2018 // 分类:N1 // No Comments

在x86电脑上使用fdisk就能查看所有硬盘的信息,n1为android mmc分区,通过u盘引导linux后查看分区方法如下
查看mmc存储的设置号:

cat /proc/devices |grep mmc
179 mmc

查看对应的分区信息:

cat /proc/partitions |grep 179
 179        0    7634944 mmcblk0
 179        1       4096 mmcblk0p1
 179        2      65536 mmcblk0p2
 179        3     524288 mmcblk0p3
 179        4       8192 mmcblk0p4
 179        5      32768 mmcblk0p5
 179        6      32768 mmcblk0p6
 179        7       8192 mmcblk0p7
 179        8       8192 mmcblk0p8
 179        9      32768 mmcblk0p9
 179       10      32768 mmcblk0p10
 179       11      32768 mmcblk0p11
 179       12    1310720 mmcblk0p12
 179       13    5419008 mmcblk0p13
 179       96        512 mmcblk0rpmb
 179       64       4096 mmcblk0boot1
 179       32       4096 mmcblk0boot0

查看分区映射:

ls -al /dev/block/179*        
lrwxrwxrwx 1 root root 10 Jul 29 09:08 /dev/block/179:0 -> ../mmcblk0
lrwxrwxrwx 1 root root 13 Jul 29 09:08 /dev/block/179:1 -> ../bootloader
lrwxrwxrwx 1 root root  7 Jul 29 09:08 /dev/block/179:10 -> ../misc
lrwxrwxrwx 1 root root  7 Jul 29 09:08 /dev/block/179:11 -> ../boot
lrwxrwxrwx 1 root root  9 Jul 29 09:08 /dev/block/179:12 -> ../system
lrwxrwxrwx 1 root root  7 Jul 29 09:08 /dev/block/179:13 -> ../data
lrwxrwxrwx 1 root root 11 Jul 29 09:08 /dev/block/179:2 -> ../reserved
lrwxrwxrwx 1 root root  8 Jul 29 09:08 /dev/block/179:3 -> ../cache
lrwxrwxrwx 1 root root 15 Jul 29 09:08 /dev/block/179:32 -> ../mmcblk0boot0
lrwxrwxrwx 1 root root  6 Jul 29 09:08 /dev/block/179:4 -> ../env
lrwxrwxrwx 1 root root  7 Jul 29 09:08 /dev/block/179:5 -> ../logo
lrwxrwxrwx 1 root root 11 Jul 29 09:08 /dev/block/179:6 -> ../recovery
lrwxrwxrwx 1 root root 15 Jul 29 09:08 /dev/block/179:64 -> ../mmcblk0boot1
lrwxrwxrwx 1 root root  6 Jul 29 09:08 /dev/block/179:7 -> ../rsv
lrwxrwxrwx 1 root root  6 Jul 29 09:08 /dev/block/179:8 -> ../tee
lrwxrwxrwx 1 root root  8 Jul 29 09:08 /dev/block/179:9 -> ../crypt
lrwxrwxrwx 1 root root 14 Jul 29 09:08 /dev/block/179:96 -> ../mmcblk0rpmb

然后可以使用fdisk查看特定分区信息了,如查看mmcblk0p13:

fdisk -l /dev/data

嵌入式平台软件仓库Entware

发布时间:October 13, 2018 // 分类:N1 // No Comments

Entware的包管理器是opkg,类似于apt-get和yum,只不过Entware独立于操作系统之外,不使用系统本身的依赖,现仓库提供的软件基于GCC 7.3和glibc 2.27构建,安装的软件根目录位于/opt目录,相当于一个chroot环境。
aarch64安装:

wget http://bin.entware.net/aarch64-k3.10/installer/generic.sh
sh generic.sh

将Entware安装软件的目录添加到系统PATH变量:

export PATH="$PATH:/opt/bin/:/opt/sbin/"
echo 'export PATH="$PATH:/opt/bin/:/opt/sbin/"' >> /root/.bashrc

使用opkg安装软件:

opkg find vim
opkg install vim

ubuntu下交叉编译arm64/armbian内核模块

发布时间:October 13, 2018 // 分类:N1 // 5 Comments

安装编译环境及下载交叉编译工具:

apt update
apt -y install gcc make pkg-config git bison flex libelf-dev libssl-dev libncurses5-dev bc
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
tar -Jxf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz 
export ARCH=arm64 
export CROSS_COMPILE=`pwd`/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

查看内核版本:

uname -r
4.18.7-aml-s9xxx

下载内核源码:

#git clone https://github.com/150balbes/Amlogic_s905-kernel.git
#使用4.18.7内核
#git checkout 20181012
git clone -b 20181012 --depth 1 https://github.com/w22gb8/Amlogic_s905-kernel.git
cd Amlogic_s905-kernel

初始化配置,不做这步直接编译模块会提示错误: fatal error: include/generated/autoconf.h: No such file or directory。

cp config_5.60 .config
make prepare
make scripts

编译指定模块:

make M=net/ipv4/ CONFIG_TCP_CONG_BBR=m modules
make M=drivers/usb/class CONFIG_USB_PRINTER=m modules

编译所有模块:

make modules 
make modules_install INSTALL_MOD_PATH=/

复制模块到目标机器对应目录并加载:

cp tcp_bbr.ko /lib/modules/`uname -r`/kernel/net/ipv4
#echo 'kernel/net/ipv4/tcp_bbr.ko:' >> /lib/modules/`uname -r`/modules.dep
depmod 
modprobe tcp_bbr

加载模块时出现invalid module format的错误,是version magic版本不一致或crc校验不通过,可通过modinfo查看本机模块和新编译模块version magic版本信息,通过dmesg查看log出现以下错误:

sch_fq: version magic '4.18.7 SMP preempt mod_unload aarch64' should be '4.18.7-aml-s9xxx SMP preempt mod_unload aarch64'

可见内核版本后缀不一样,在编译时添加版本后缀:

make LOCALVERSION="-aml-s9xxx"

编译模块时添加版本后缀无效?那就在初始时添加,后续编译时不要再次添加。

make LOCALVERSION="-aml-s9xxx" modules_prepare

参考:
https://serverfault.com/questions/568395/what-is-creating-the-generated-autoconf-h
https://wiki.archlinux.org/index.php/Compile_kernel_module

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...