抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

Ubuntu Server 在树莓派4B Arm64上的踩坑历程

背景信息

起初我对树莓派是抱有很大的希望的,但是没想到过程是这么的巴(曲)(折)

OMV/PVE

OMV 是一个 NAS 系统,基于 Debain,支持多种文件协议的配置,但这个基于很是尴尬,因为涉及到插件,和内核扯上了关系,很抱歉的就是系统太新不支持,但官方的64位镜像还在测试并未发布。

PVE 是一个虚拟机,我以为是一个 NAS,而且很遗憾 arm 不是他的对象。

经过一番尝试,在 Arm64上来得并不直接,考虑到成本以及实际效用,不再考虑。

Ubuntu 的软件源一直都不友好,改一下:

#把里面的http://ports.ubuntu.com/ 全部换成中科大的镜像源 https://mirrors.ustc.edu.cn/
sudo vi /etc/apt/sources.list
#可使用 vim 的替换功能
:%s/http\:\/\/security.ubuntu.com\//https\:\/\/mirrors.ustc.edu.cn\//g
#%s/被替换的字符/需要被替换的字符/g 表示替换全文 字符中的特殊字符需要转义

Docker

官方文档:https://docs.docker.com/engine/install/ubuntu/#installation-methods

看SET UP THE REPOSITORY部分,按步骤默认即可,默认 arm64的稳定版。

#具体命令
sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

#可选 验证指纹是否一致
sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
    "deb [arch=arm64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

docker info

Docker迁移

我只用迁移 volume,由于 docker 的 volume 官方并没有给出合适的导入导出方式,只能使用 docker cp 拷贝出来,然后在另一边挂载到一个容器了再拷贝进去。( 网上的方案太麻烦,我觉得直接拷贝最简单,有更简单的请留言,当然我这里是 volume 不多的情况,如果多,那我会很头疼,所以对于经常修改的 data 我常常使用挂载方式而非 volume)

其他均使用 yml 进行创建。

安装 oh-my-zsh & auto-suggestion

设置代理

vi ~/.bashrc
##文件中追加以下内容(代理不做解释)
export http_proxy="http://localhost:代理端口"
export https_proxy="http://localhost:代理端口"
##end
source ~/.bashrc

安装 zsh 配置 oh-my-zsh

git:https://github.com/ohmyzsh/ohmyzsh

sudo apt install zsh
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

安装auto-suggestion

git:https://github.com/zsh-users/zsh-autosuggestions

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

#编辑~/.zshrc 找到plugins=(git)改为plugins=(git zsh-autosuggestions)
vi ~/.zshrc
source ~/.zshrc

zsh 主题

git:https://github.com/romkatv/powerlevel10k

配置有点多,就不说了,其实自带的也挺好,下次敲命令就不用那么麻烦啦。

Mysql

Mysql 使用Mariadb替代,地址:https://hub.docker.com/_/mariadb

Mariadb是 Mysql 的社区版本,数据库有些许不兼容,主要是数据格式上,sql 数据库导出后手动替换。

后来发现官方的mysql-server:https://hub.docker.com/r/mysql/mysql-server/

使用官方的 mysq-server8.0,是 centos 底包,使用的是 yum 包管理器,同时创建的 mysql 容器需要进行权限处理。

#进入 mysql 容器 容器名 mysql8需要替换
docker exec -it mysql8 /bin/bash
#登录 mysql
mysql -u root -p
#开放 root 账户任意地址访问权限
use mysql;
update user set host = '%' where user = 'root';
flush privileges;

Gogs

地址:https://hub.docker.com/r/gogs/gogs-rpi

Gogs 具备仓库迁移功能,可以很方便的切换到新仓库并保留历史记录。

PhpMyAdmin

PhpMyAdmin 使用三方进行替代,地址:https://hub.docker.com/r/biarms/phpmyadmin

与官方无异,支持了 arm64。

对于上面需要进行镜像替换的软件,如果以前使用 docker-compose 创建的,那么只需要更改镜像即可,其他参数均不用改变。

数据服务NAS

广告过滤 DNS

Other

就目前看来,基本功能都搭完了,总的来说,就是一个文件盘+路由,此外加些小工具,因为都是自己动手,能动性高一点点,但是也麻烦,对于 arm 这个生态,还有太多太多不方便的地方,但 docker 这种技术无疑减轻了一些负担。但有时候也觉得是一种麻烦,因为镜像得重新找,万一不维护了呢?所以毫无疑问目前最好的还是 x86。

树莓派,我很满意,虽然有点折腾,但就性能上,我还远远用不完,将这些服务从 mac 上搬离都,极大的利好了我的 mac,不好评都不好意思。

苹果发布 arm 的笔记本了,对于这种巨头来说,arm 想必会有更快的发展。期待后期的成长值。


0条评论

发表评论