[笔记] RaspberryPi 4B安装64位系统与部署FileRun

945 阅读6分钟

写入镜像到SD卡

  1. 下载镜像文件:https://www.raspberrypi.com/software/operating-systems/
  2. 64bit下载地址:https://downloads.raspberrypi.org/raspios_arm64/,或https://downloads.raspberrypi.org/raspios_lite_arm64/
  3. 解压:unzip 2021-05-07-raspios-buster-armhf-full.zip
  4. 连接电脑,查看设备号:diskutil list
  5. 卸载sd卡:diskutil unmount /dev/disk2,或diskutil unmountDisk /dev/disk2
  6. 写入:sudo dd if=2021-05-07-raspios-buster-armhf-full.img of=/dev/disk2 bs=1m
  7. 或解压并写入(无效):unzip 2021-05-07-raspios-buster-armhf-full.zip | sudo dd of=/dev/disk2 bs=1m
  8. 查看进度(打开另一终端执行):sudo pkill -INFO dd

开启SSH

  1. 新建文件:wpa_supplicant.conf

  2. 写入如下内容,按实际修改wifi名等信息:

    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    country=CN
    network={
     ssid="OpenWrt"
     scan_ssid=1
     psk="xxxx"
     priority=1
    }
    
  3. 新建空白文件:ssh

  4. 默认用户:pi,默认密码:raspberry

  5. 修改密码:passwd

  6. 公钥登陆

    • 创建~/.ssh/authorized_keys文件
    • 修改.ssh目录权限:chmod 700 .ssh
    • 修改authorized_keys权限:chmod 600 .ssh/authorized_keys
    • 编辑:vim .ssh/authorized_keys,添加公钥
    • 可选,如果所属用户与当前用户不一致执行:sudo chown pi:pi .ssh/authorized_keys

开启VNC

  1. 修改配置:sudo raspi-config,选择Interfacing Options -> VNC

  2. 开启服务后,默认配置与mac屏幕共享不兼容,需按如下修改

  3. 启用服务:sudo vncpasswd -service

  4. 生成密码:sudo vncpasswd -service

  5. 修改认证方式:sudo vi /etc/vnc/config.d/common.custom,写入:

    Authentication=VncAuth
    
  6. 重启服务:sudo systemctl restart vncserver-x11-serviced

扩展SD卡空间

  1. 执行:df -h,查看root空间大小,如果比sd卡空间差距太大按以下扩容
  2. 执行:sudo raspi-config
  3. 选择:Advanced Options -> Expand Filesystem

修改位置、时区、键盘

  1. 修改位置与时区:sudo raspi-config,Localisation Options

  2. 修改语言后如遇报错“perl: warning: Setting locale failed.”,执行:sudo vi /etc/default/locale,添加以下内容

    LANG=en_US.UTF-8
    LC_ALL=en_US.UTF-8
    LANGUAGE=en_US.UTF-8
    
  3. 修改键盘:sudo raspi-config,Localisation Options,Keyboard,或执行sudo dpkg-reconfigure keyboard-configuration

  4. 修改键盘命令无响应,需要先连接键盘

更换镜像源

  1. 修改sources.listsudo vi /etc/apt/sources.list

    # 32bit源
    deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
    deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
    
    # 64bit源
    deb https://mirrors.tuna.tsinghua.edu.cn/debian buster main contrib non-free
    deb https://mirrors.tuna.tsinghua.edu.cn/debian-security/ buster/updates main contrib non-free
    deb https://mirrors.tuna.tsinghua.edu.cn/debian buster-updates main contrib non-free
    
  2. 修改raspi.listsudo vi /etc/apt/sources.list.d/raspi.list

    # 32bit源
    deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
    
    # 64bit源
    deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
    
  3. 更新软件列表:sudo apt-get update

  4. 修改pip源,创建文件夹:mkdir ~/.pip,创建文件:vi ~/.pip/pip.conf

    [global]
    index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
    trusted-host=pypi.tuna.tsinghua.edu.cn
    
  5. 复制到root目录:sudo mkdir /root/.pip,再执行sudo cp .pip/pip.conf /root/.pip

  6. 保存后再使用pip命令安装

安装golang

  1. 执行:sudo apt-get install golang-go
  2. 查看版本:go version

更新vim

  1. 默认vi存在上下左右变ABCD问题
  2. 删除:sudo apt-get remove vim-common
  3. 安装:sudo apt-get install vim

配置64bit内核模式(64位系统不用改)

  1. 检查/boot分区是否存在kernel8.img文件

  2. 不存在先更新系统:sudo rpi-update

  3. 存在修改config.txt文件:sudo vi /boot/config.txt,文件末尾添加

    arm_64bit=1
    
  4. 查看系统位数:getconf LONG_BIT,或hostnamectl,或file /usr/bin/htop

  5. 重启:sudo reboot,或sudo shutdown -r now

  6. 关机:sudo halt,或sudo power off,或sudo shutdown -h now

  7. 配置完后只是内核为64bit,实际系统还是32bit

安装screenfetch

  1. 安装:sudo apt-get install screenfetch
  2. 执行:screenfetch

截图

  1. 安装(默认已经安装):sudo apt-get install scrot
  2. 延时截屏:scrot -d 5 -c
  3. 截取特定窗口:scrot -s

安装Docker

  1. 安装dockersudo apt-get install docker.io

  2. 启动服务:sudo systemctl start docker

  3. 开机启动服务:sudo systemctl enable docker

  4. 新建组:sudo groupadd docker

  5. 加入当前用户:sudo gpasswd -a ${USER} docker

  6. 重启dockersudo service docker restart,或sudo systemctl restart docker

  7. 切换当前会话到新组:newgrp - docker

  8. 查看版本:docker version

    Client:
     Version:           18.09.1
     API version:       1.39
     Go version:        go1.11.6
     Git commit:        4c52b90
     Built:             Fri, 13 Sep 2019 10:45:43 +0100
     OS/Arch:           linux/arm
     Experimental:      false
    
    Server:
     Engine:
      Version:          18.09.1
      API version:      1.39 (minimum version 1.12)
      Go version:       go1.11.6
      Git commit:       4c52b90
      Built:            Fri Sep 13 09:45:43 2019
      OS/Arch:          linux/arm
      Experimental:     false
    
  9. 测试:docker run hello-world

  10. 安装docker-compose

    • 先安装libffisudo apt-get install libffi-dev python3-pip
    • 安装:pip3 install docker-compose
  11. 查看版本:docker-compose version

    docker-compose version 1.29.2, build unknown
    docker-py version: 5.0.2
    CPython version: 3.7.3
    OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019
    
  12. 更换镜像源:sudo vi /etc/docker/daemon.json,写入:

    {
        "registry-mirrors": ["https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"],
        "experimental": true
    }
    
  13. 重启docker服务

  14. docker容器重启策略

    • no:默认策略,在容器退出时不重启容器
    • on-failure:在容器非正常退出时(退出状态非0),才会重启容器
    • on-failure:3:在容器非正常退出时重启容器,最多重启3次
    • always:在容器退出时总是重启容器
    • unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
  15. 常用命令

    • 查找镜像:docker search mariadb
    • 拉取镜像:docker pull afian/filerun
    • 查看本地镜像:docker images
    • 查看本地所有镜像:docker image ls -a
    • 查看所有容器:docker container ls -a
    • 查看日志:docker logs 7e612
    • 删除镜像:docker rmi 058b811e09cb
    • 停止容器:docker stop 658b811e09cb
    • 删除容器:docker rm 658b811e09cb
    • 复制文件到本地:docker cp 4b76e9d4a620:/trojan/client.yaml ./client1.yaml
    • 复制文件到容器:docker cp client1.yaml 4b76e9d4a620:/trojan/client.yaml
    • 以守护进程运行:docker-compose up -d
    • 查看运行的服务:docker-compose ps
    • 查看日志:docker-compose logs web
    • 重启服务:docker-compose restart
    • 停止服务:docker-compose stop
    • 停止并移除容器:docker-compose down
    • kill服务:docker-compose kill
    • 删除服务:docker-compose rm

部署FileRun

  1. 先安装dockerdocker-compose

  2. 创建文件:vi docker-compose.yml

    version: '2'
    
    services:
      db:
        image: mariadb:10.5.12
        environment:
          MYSQL_ROOT_PASSWORD: filerun
          MYSQL_USER: filerun
          MYSQL_PASSWORD: filerun
          MYSQL_DATABASE: filerun
        volumes:
          - /filerun/db:/var/lib/mysql
        restart: unless-stopped
    
      web:
        image: ponte124/filerun:latest-arm64v8
        environment:
          FR_DB_HOST: db
          FR_DB_PORT: 3306
          FR_DB_NAME: filerun
          FR_DB_USER: filerun
          FR_DB_PASS: filerun
          APACHE_RUN_USER: www-data
          APACHE_RUN_USER_ID: 33
          APACHE_RUN_GROUP: www-data
          APACHE_RUN_GROUP_ID: 33
        depends_on:
          - db
        links:
          - db:db
        ports:
          - "80:80"
        volumes:
          - /filerun/html:/var/www/html
          - /filerun/user-files:/user-files
        restart: unless-stopped
    
  3. 官方文档:https://docs.filerun.com/docker

  4. 启动:docker-compose up -d

  5. 默认用户密码:superuser/superuser

  6. 使用afian/filerun镜像,日志显示standard_init_linux.go:207: exec user process caused "exec format error",原因该镜像不是arm环境构建的镜像

部署Aria2

  1. 修改文件:vi docker-compose.yml,添加以下内容:

      aria2:
        image: p3terx/aria2-pro
        environment:
          - PUID=33
          - PGID=33
          - UMASK_SET=022
          - RPC_SECRET=P3TERX
          - RPC_PORT=6800
          - LISTEN_PORT=6888
          - DISK_CACHE=64M
          - IPV6_MODE=false
          - UPDATE_TRACKERS=true
          - CUSTOM_TRACKER_URL=
          - TZ=Asia/Shanghai
        volumes:
          - /filerun/aria2-config:/config
          - /filerun/user-files/Downloads:/downloads
        ports:
          - 6800:6800
          - 6888:6888
          - 6888:6888/udp
        restart: unless-stopped
        logging:
          driver: json-file
          options:
            max-size: 1m
    
      ariang:
        image: p3terx/ariang
        command: --port 6880
        ports:
          - 6880:6880
        restart: unless-stopped
        logging:
          driver: json-file
          options:
            max-size: 1m
    
  2. PUID与PGID使用:id www-data查看,保证与filerun有同样权限

  3. 其它参数说明:https://hub.docker.com/r/p3terx/aria2-pro

  4. 更新:docker-compose up -d

  5. 浏览器访问6880端口,点击AriaNg设置里的RPC标签,填入配置文件RPC_SECRET对应的密钥

运行Trojan镜像

  1. 官方镜像:docker pull p4gefau1t/trojan-go:v0.10.6

  2. 官方镜像启动:docker run -d --name trojan-go -v /home/pi/trojan:/etc/trojan-go -p 1080:1080 p4gefau1t/trojan-go:v0.10.6 /etc/trojan-go/client.yaml