N1盒子再体验之armbian装在笔记本硬盘上

  |   0 评论   |   0 浏览

背景

N1盒子的eMMC的读写能力不行,正好我有一块SSD移动硬盘,希望在移动硬盘上安装armbian系统。

初体验

系统下载

同前文,下载了稳定版本:Armbian_5.99_Aml-g12_Debian_buster_default_5.3.0_20191125。地址见本文末尾的参考中。

其中 buster 是 debian 10的代号,5.3.0是内核版本,20191125是编译日期。

制作刷机U盘

  1. 下载一个制作启动盘的工具rufus
  2. windows下用rufus将下载好的 Armbian_5.99_Aml-g12_Debian_buster_default_5.3.0_20191125.img.xz 刻录到U盘中。

linux下用 xz -cd Armbian_5.99_Aml-g12_Debian_buster_default_5.3.0_20191125.img.xz > /dev/sda来刻录到U盘中。

成功后,U盘上会有两个分区。一个较小的BOOT分区,格式是FAT,一个较大的ROOTFS分区,格式是ext4。

  1. 编辑 BOOT分区上的 uEnv.ini 文件

修改第一行,将路径的文件名替换为 meson-gxl-s905d-phicomm-n1.dtb,即指定从U盘启动。

从刷机U盘启动

如果是在YYF系统的话,可以设置成为从USB启动

adb connect 盒子ip
adb shell reboot update

或者参考文末的N1盒子U盘启动工具-支持SX05RE或ARMBIAN系统

启动后,输入 lsblk可见使用了内存盘 zram0做为 /var/log目录,zram1做为 SWAP

NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda            8:0    0 223.6G  0 disk
├─sda1         8:1    0   128M  0 part /boot
└─sda2         8:2    0 221.2G  0 part /
mmcblk1      179:0    0   7.3G  0 disk
mmcblk1boot0 179:32   0     4M  1 disk
mmcblk1boot1 179:64   0     4M  1 disk
zram0        253:0    0    50M  0 disk /var/log
zram1        253:1    0 901.1M  0 disk [SWAP]

禁用111端口

systemctl stop rpcbind.socket

系统优化

扩容swap

由于我用的SSD硬盘,可以适当扩容swap。

  1. 创建swapfile: 2GB
dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048

结果

2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 51.7974 s, 41.5 MB/s
  1. 格式化交换文件
mkswap /mnt/swapfile
mkswap: /mnt/swapfile: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=5ded1a0a-e22c-493b-9aee-afd5a50299d7
  1. 加载swap
chmod 0600 /mnt/swapfile
swapon /mnt/swapfile
  1. 写入fstab

/etc/fstab末尾添加:

/mnt/swapfile swap swap defaults 0 0

删除zram的swap

  1. 查看现有的swap
# cat /proc/swaps
Filename				Type		Size	Used	Priority
/dev/zram1                              partition	922748	0	5

或者

# swapon -s
Filename				Type		Size	Used	Priority
/dev/zram1                             	partition	922748	0	5
  1. 释放指定的swap
# swapoff /dev/zram1
  1. 禁用zram服务

修改文件 /etc/default/armbian-zram-config,改为:

ENABLED=false

禁用zram的/var/log

zram的/var/log会每15分钟检查一下使用率,超过75%时会刷入eMMC磁盘。
同样,由于我用的SSD硬盘,可以禁用掉这种机制。

  1. 修改 /etc/default/armbian-ramlog,如下:
ENABLED=false
  1. 禁用定时截断任务

修改文件 /etc/cron.d/armbian-truncate-logs,如下:

# */15 * * * * root /usr/lib/armbian/armbian-truncate-logs
  1. 禁用另一个任务

修改文件 /etc/cron.daily/armbian-ram-logging,如下:

#!/bin/sh
# /usr/lib/armbian/armbian-ramlog write >/dev/null 2>&1
  1. 重启服务

重启后发现,/var/log.hdd/为空了。

禁用UAS (UASP)

UAS/UASP是一种快速的移动硬盘读取方法,但是在某些硬件上会报错,出现如下错误信息

[Apr 6 17:52] sd 0:0:0:0: [sda] tag#7 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD
[  +0.000014] sd 0:0:0:0: [sda] tag#7 CDB: opcode=0x2a 2a 00 01 c9 d2 00 00 00 30 00
[  +0.023985] scsi host0: uas_eh_device_reset_handler start
[  +0.000059] usb 1-2: cmd cmplt err -2
[  +0.128099] usb 1-2: reset high-speed USB device number 2 using xhci-hcd
[  +0.151516] scsi host0: uas_eh_device_reset_handler success

这时可以通过禁用uas来解决上面的问题。编辑文件 /boot/uEnv.ini,修改如下:

dtb_name=/dtb/amlogic/meson-gxl-s905d-phicomm-n1-new.dtb
bootargs=root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 usb-storage.quirks=1d6b:0003:u,152d:0578:u,1d6b:0002:u

其中末尾的 usb-storage.quirks=1d6b:0003:u,152d:0578:u,1d6b:0002:u为新加入的,其中的A1:A2:u, A3:A4:u, A5:A6:u中的Axx系统,对应于 lsusb中的结果

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

重启后,可以发现已经不现使用uas驱动了。

$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/0p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
    |__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M

禁用服务自启动

systemctl disable dnsmasq
systemctl disable docker

修改MAC地址

armbian的MAC地址是固定的b8:27:eb:74:f2:6c。如果一个局域网内有两个N1盒子,装了armbian系统的话,之间会发生冲突。推荐使用FixWlanMAC.sh脚本来修复,具体如下:

#!/bin/bash

#update:2019-11-11
#author:alon2000

#LAN_MAC=`ifconfig eth0 | grep -w ether | awk '{print $2}'`
LAN_MAC=`cat /sys/class/net/eth0/address`
MAC_HEAD=`echo $LAN_MAC|cut -c1-15`
MAC_TAIL=`echo $LAN_MAC|cut -c16-17`
MAC_TAILn=$((16#${MAC_TAIL}-1))

WLAN_MAC="$(printf '%s%02x\n' $MAC_HEAD $[MAC_TAILn])"

if [[ -f "/lib/firmware/brcm/brcmfmac43455-sdio.phicomm,n1.txt" ]] ; then
  sed -i -e "s/^macaddr=b8:27:eb:74:f2:6c$/macaddr=$WLAN_MAC/" \
  "/lib/firmware/brcm/brcmfmac43455-sdio.phicomm,n1.txt"
fi

if [[ -f "/lib/firmware/brcm/brcmfmac43455-sdio.txt" ]] ; then
  sed -i -e "s/^macaddr=b8:27:eb:74:f2:6c$/macaddr=$WLAN_MAC/" \
  "/lib/firmware/brcm/brcmfmac43455-sdio.txt"
fi

echo "WiFi MAC address modified successfully! reboot..."
reboot

参考