简单修改打造自己的Armbian-IMG底包

本文转自恩山,不为别的只是怕什么时候再被河蟹了感谢小狮子原文地址

  1. 下载Armbian的官方底包IMG ,比如你可以下载了Ubuntu 5.77 401的底包

    (个人推荐用这个修改的底包)Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img 本帖隐藏的内容
  2. 在虚拟机的Ubuntu系统下,输入命令

fdisk -l Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img

会出现如下信息

1
2
3
4
5
6
7
8
9
10
11
12
root@ubuntu:/mnt# fdisk -l Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img

Disk Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img: 1853 MB, 1853882368 bytes
4 heads, 32 sectors/track, 28288 cylinders, total 3620864 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcb9b2129

Device Boot Start End Blocks Id System
Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img1 8192 270335 131072 e W95 FAT16 (LBA)
Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img2 270336 3620863 1675264 83 Linux
  1. 我们要关注的是最后两句。img1是我们的boot区,.img2是文件区,比如我们要把去高负载的.dtb文件加入到boot区

    那么首先就要加载boot区,然后把文件拷贝进去,再做修改。
    那么怎么加载boot区呢,执行如下命令
    1
    mount -o loop,offset=4194304 Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img /media

上面的4194304怎么得来的,是8192*512,.img1的offset的Start从8192开始,这条语句就是把boot区的内容加载到/media里
然后在/media里就可以看到boot的内容,比如dtb文件夹,uEnv.ini文件,

把xiangsm大神在帖子里分享的5.77的dtb文件弄进去,就可以去高负载
下载地址
链接: https://pan.baidu.com/s/1UL1VQ5tfuKmBBS-PM-Mwhg 提取码: m68p
下载附件 –> 解开dtb文件 –> 复制到armbian的/boot/dtb/ 目录 –> 相应修改/boot/uEnv.ini中的dtb文件路径设置。

同理,我们可以加载.img2的文件分区,在里面修改sysctl.conf实现bbr的默认开启,
在/etc/sysctl.conf末尾添加下面两行:

1
2
3
4
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
然后执行:
$ sudo sysctl -p

在rc.local里添加modprobe pppoe实现pppoe的开机加载。

  1. 修改完毕后 ,用umount /media 退出,然后原开始你加载的IMG其实已经是你已经修改好的IMG了,此后可以自己刷入U盘试试了!

  2. dtb文件修改方法

    https://yadi.sk/d/srrtn6kpnsKz2/Linux/ARMBIAN/5.77/S905下载由@150balbes编译好的镜像,我选的是debian/desktop版,您请随意。

    解压镜像并写入U盘,以linux系统为例:

    1
    $ xzcat --keep Armbian_5.77_Aml-s905_Debian_stretch_default_5.0.2_desktop_20190318.img.xz | sudo dd of=/dev/sdX bs=1M && sync

    将写好armbian的U盘插入关机状态的n1,通电启动,armbian就运行起来了。初次运行时会提示修改root密码和创建一个常规用户。

    此时,armbian用的是kdahas-vim开发板的dtb,所以不完全适配n1,一些设备不工作,这是正常的,我们只需修改/boot/uEnv.ini指向n1的dtb即可。

    1
    2
    - 修改前的uEnv.ini:      dtb_name=/dtb/meson-gxl-s905x-khadas-vim.dtb
    - 修改后的uEnv.ini: dtb_name=/dtb/meson-gxl-s905d-phicomm-n1.dtb

    修改完成后重启系统,重启后所有设备(lan/wifi/bluetooth/etc.)全部能工作!除了系统负载有点高。

    1
    $ sudo reboot

    下面解决系统负载问题,关键:修改随镜像文件自带的dtb文件中的一项与中断处理有关的设置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # 反编译原始n1 dtb文件为n1.dts
    $ dtc -I dtb -O dts -o n1.dts /boot/meson-gxl-s905d-phicomm-n1.dtb

    # 用vi 或 nano打开n1.dts,将第183行注释掉。修改前:phandle = <0x1e>; 修改后: #phandle = <0x1e>;
    $ vi n1.dts
    ...

    # 编译新的n1.dtb
    $ dtc -I dts -O dtb -o n1.dtb n1.dts

    # 复制n1.dtb到/boot/dtb中并修改相应uEnv.ini文件
    $ sudo cp -av n1.dtb /boot/dtb/meson-gxl-s905d-phicomm-n1-xiangsm.dtb
    $ sudo sed -i -e 's/-n1/-n1-xiangsm/' /boot/uEnv.ini # 或用vi/nano可视化编辑

    # 好了,可以重启系统了,重启后,系统负载终于正常,并且各项硬件应该依然都能正常工作。
    $ sudo reboot

==========================================================
[注1] 在n1运行android时,务!必!不!要!将armbian u盘插入n1,否则armbian u盘的ext4分区内的文件权限和所有者会被android系统篡改,引起各种异常。
[注2] 开始用CZ600 u盘,可能是速度太慢,导致bootloader超时,fallback到emmc启动了,然后就要从头来过,因为U盘里的文件系统已经被污染。后用cz43,正常。

-------------���Ľ�����л�����Ķ�-------------
0%