ARM的点点滴滴记录

Raspberry Pi

当初为了搭个docker集群环境折腾了树莓派,主要是看它价格便宜又省电。买了3个树莓派2代,大概花了600多块,当时ARM能跑Docker还是很新鲜的玩意。

我用树莓派搭建docker集群环境,参考Hypriot的博客

CubieBoard

在ARM上装Docker当时真是个大坑,官方支持很差,社区文档也少,全靠硬啃。

  • 安装docker

    • 选择Hypriot(截止到2017年3月版本是docker 1.11.1),适合想要快速上手Docker ARM环境的用户,文档相对完整

      shell
      1
      
      $ apt-get install -y apt-transport-https
      • Add respository key
      shell
      1
      
      $ wget -q https://packagecloud.io/gpg.key -O - | sudo apt-key add -
      • Add repository
      shell
      1
      2
      
      $ echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' | sudo tee /etc/apt/sources.list.d/hypriot.list
      $ apt-get update
      • Install Hypriot
      shell
      1
      2
      
      $ apt-get install -y docker-hypriot
      $ systemctl enable docker
    • 选择Dockerproject (随官方更新,截止2017年3月,版本17.03-ce),适合需要最新Docker功能和长期维护的用户

      shell
      1
      2
      
      $ sudo apt-get update
      $ sudo apt-get install apt-transport-https ca-certificates
      • Add repository
      shell
      1
      
      $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

      用下面的命令将 APT 源添加到 source.list(将其中的 替换为下表"表一:dockerproject 对应表"的值):

      shell
      1
      
      $ echo "<REPO>" | sudo tee /etc/apt/sources.list.d/docker.list
      • Install Docker-Engine
      shell
      1
      2
      
      $ apt-get update
      $ apt-get install -y docker-engine
  • Cubietruck (系统:armbian) 问题与记录

    • 外置硬盘挂死的原因及处理: 参考:Arch hdparm

      Values 1-127 permit spin-down, 128-254 do not and 255 disables advanced power management altogether (if the drive supports it).

      Values 1 to 240 are in 5 second steps, values 241 to 251 are steps of 30 minutes,

      see the table below.

      解决方法:

      shell
      1
      
      # hdparm -B 127 /dev/sdx
    • 被墙 利用pogoplug的shadowsocks做的ss5代理,用tsocks工具更新软件。

    • docker构建gogs: 利用PogoPlug在官方GIT库的Dockerfile和build.sh增加代理来完成部署

      shell
      1
      2
      
      export http_proxy=http://192.168.208.88:8118
      export https_proxy=http://192.168.208.88:8118

      把Dockerfile参考如下修改:

      dockerfile
      1
      2
      3
      4
      5
      6
      
      RUN export http_proxy=http://192.168.208.88:8118 \
       && export https_proxy=http://192.168.208.88:8118 \
       && apk --no-cache --no-progress add curl \
       && curl -x 192.168.208.88:8118 -L https://github.com/tianon/gosu/releases/download/1.9/gosu-armhf -o /usr/sbin/gosu \
       && chmod +x /usr/sbin/gosu \
       && apk --no-cache --no-progress add ca-certificates bash git linux-pam s6 openssh socat tzdata

PogoPlug 破狗

PogoPlug其实是个NAS盒子,当年挺流行的,后来因为各种原因淘汰了,我就把它改造成了代理服务器,这大概就是所谓的"破狗"由来吧。

  • 安装openwrt,部署shadowsocks提供ss5代理服务

    • 打开Luci,定位到"系统"-“软件包”-“配置"选项卡,然后在设置中现将下面一行注释掉,如下:
    shell
    1
    
    #option check_signature 1
    • 接着在末尾添加软件源:
    shell
    1
    2
    
    src/gz openwrt_dist http://openwrt-dist.sourceforge.net/packages/OpenWrt/base/oxnas
    src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/packages/OpenWrt/luci
    • 更新源并安装shadowsocks
  • 提供nfs服务 这个主要是给家里其他设备共享文件用,比如树莓派集群可以挂载共享存储。

Orange Pi

  • Orange Pi Zero (系统:armbian)问题与记录:

    • 结合OrangePiNas板子使用,主要是搭建小型家庭NAS,存储一些文档和媒体文件。

  • Orange Pi One (系统:dietpi)问题与记录:

    • 默认en_GB字符,会经常报错,更改为zh_CN,具体表现是某些命令行工具显示乱码,系统日志也是乱码。

Nano Pi

  • Nano Pi Neo (系统:armbian)问题与记录: Nano Pi Neo的特点就是体积超级小,只有拇指大小,适合嵌入到其他设备中。

  • Nano Pi M3 (系统:kali linux)问题与记录:

    • Kali Linux有提供官方镜像下载:Kali Linux ARM Images 下载地址

    • 扩容SD卡: Kali镜像不会自动利用SD卡的剩余空间,所以需要手动扩容。

      • 查看第二分区的起始地址, 后面需要
      shell
      1
      
      cat /sys/block/mmcblk0/mmcblk0p2/start
      • 启用 fdisk 磁盘管理工具
      shell
      1
      
      fdisk /dev/mmcblk0
      • 删除分区
      shell
      1
      
      Command (m for help): d
      • 删除第二分区
      shell
      1
      
      Partition number (1,2, default 2): 2
      • 创建一个新分区
      shell
      1
      
      Command (m for help): n
      • 创建主分区
      shell
      1
      2
      3
      4
      
      Partition type
       p   primary (1 primary, 0 extended, 3 free)
       e   extended (container for logical partitions)
      Select (default p): p
      • 选择分区 2
      shell
      1
      
      Partition number (2-4, default 2): 2
      • 输入第二分区起始扇区
      shell
      1
      
      First sector (125001-31116287, default 126976): 125001
      • 输入最后一个结束扇区, 直接回车代表剩余所有

      • 将上面的操作写入分区表

      shell
      1
      
      Command (m for help): w
      • 重启后继续执行如下命令,否则容量还是以前的,重新分配分区大小
      shell
      1
      
      resize2fs /dev/mmcblk0p2
      • 到此扩容完成。使用 df -lh 查看容量已扩至 SD 卡实际所有可用物理容量。

附表:

表一:dockerproject 对应表

操作系统版本REPO
Precise 12.04 (LTS)deb https://apt.dockerproject.org/repo ubuntu-precise main
Trusty 14.04 (LTS)deb https://apt.dockerproject.org/repo ubuntu-trusty main
Xenial 16.06 (LTS)deb https://apt.dockerproject.org/repo ubuntu-xenial main
Debian 7 Wheezydeb https://apt.dockerproject.org/repo debian-wheezy main
Debian 8 Jessiedeb https://apt.dockerproject.org/repo debian-jessie main
Debian Stretch/Siddeb https://apt.dockerproject.org/repo debian-stretch main