关于我
~一个热爱火影的业余小提琴玩家~
Joynaruto

当树莓派安装Ubuntu 20.04

前言

在树莓派上安装过了OpenwrtLakka以及官方的Raspbian后,我决定在树莓派上尝试下最爱的Ubuntu,毕竟这是开始的地方 :oops:

安装

  1. 首先去树莓派官网下载Ubuntu系统镜像,我选的是Ubuntu 20.04 Server版本,由于我树莓派4b比较新,所以还没有针对他的专属版本,于是我就选树莓派4的64-bit版本进行了一个尝试。

    友情提示
    建议出国,否则龟速!

  2. 下完后通过balenaEtcher把系统烧进TF卡中
  3. 在引导文件夹中添加一个空白的ssh文件来开启默认ssh连接
  4. 插卡插网线通电
  5. DHCP中找到树莓派的IP地址,通过putty进行首次连接

调试

通过上述的步骤就能顺利进入到树莓派Ubuntu 20.04 Server的后台了,在正常使用前还要绕过下面几个坑:

坑1:系统时间不正确

默认安装后系统时间是错误的,比正确的北京时间早了一个多月,这会导致执行apt update后报错无法更新源或者下载软件。这种问题通常情况下只要切换下时区就能顺利校正并保存日期时间,但在树莓派上却不行,因为树莓派是没有bios电池的,每次断电或重启就会导致时间重置,所以除了切换时区外还得用到ntp服务器来同步时间

解法:

#切换时区,选择Asia-Shanghai并保存
sudo dpkg-reconfigure tzdata
----------------------------------------------
#安装ntp服务
#打开ntp配置文件
sudo nano /etc/ntp.conf
#添加国内可用的ntp服务器
server ntp.fudan.edu.cn iburst perfer
server time.asia.apple.com iburst
server asia.pool.ntp.org iburst
server ntp.nict.jp iburst
server time.nist.gov iburst
#同步时间
sudo ntpd -s -d
#重启ntp服务
sudo /etc/init.d/ntp restart
#检验下是否已校正
date
#在rc.local中添加开机启动
sudo ntpd -s -d &
sudo /etc/init.d/ntp restart &
#重启看是否生效

坑2:替换源

说到替换源,这种安装后的常规操作在树莓派上又是一个坑,因为树莓派是Arm架构所以导致我一开始没注意直接把X86替换进去…GG。。后来我又找了Arm架构的清华源,阿里源,中科源以及163源,执行apt update && apt upgrade -y时都提示E类型错误,无法成功升级…崩溃 :cry: 其实后来发现关键是要用替换关键词的方法,而不是直接把原来的标注掉再添加上述的源

解法:

#编辑源文件
sudo nano /etc/apt/sources.list
#替换关键字而不是直接添加源地址
将地址ports.ubuntu.com替换为mirrors.aliyun.com
#以下2条地址不要替换,替换后将导致无法更新安全补丁,猜测是阿里源的问题
deb http://ports.ubuntu.com/ubuntu-ports focal-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports focal-security universe

坑3:搜索不到5Ghz信号

默认安装好后,通过iwlist wlan0 scan | grep SSID是搜索不到我家的5Ghz信号的,通过iwlist channel来查看当前扫描的信道发现,我家的无线信道并不在内,看来原因出在无线信道上,那就好办了,通过crda就能改变无线的国家区域设定

解法:

#安装crda
sudo apt install crda
#编辑crda配置文件
nano /etc/default/crda
#在最后的REGDOMAIN后加入想要设置的国家区域,我设置的是美国
REGDOMAIN=US
#重启树莓派
sudo reboot

经过上述步骤后再通过iwlist wlan0 scan | grep SSID就能看到我的5Ghz信号了,接下来就可以配置连接了

#编辑 /etc/netplay/*.yaml来配置无线
nano /etc/netplay/*.yaml
#添加相应配置(空格需完全一样)
network:
    ethernets:
        eth0:
            dhcp4: true
    version: 2    // 以上是原有的,下面的是新增
    wifis:
        wlan0:
            dhcp4: true
            access-points:
                "无线名称":
                    password: "无线密码"

之后就可以拔掉网线,把树莓派接上电源,角落安排咯,通过无线来进项管理控制 :idea:

一些日常使(zhe)用(teng)

将终端设置成中文

默认安装完后终端显示的是英语,把他调成中文有2个好处,一是看起来更舒服,二来在解压某些中文压缩包时也能正常显示文件名。

  1. 通过如下命令
    sudo dpkg-reconfigure --force locales
  2. 选择最后的zh_CN.UTF-8zh_CN.GBK
  3. 将选择停留在zh_CN.UTF-8上并确认
  4. 注销并重新登录后即可发现终端语言已经调整为中文

配置阿里DDNS

虽然我有白裙以及华硕自带的两个DDNS,日常使用非常棒,但若我要是在内网服务器上配置一些web服务,比如Apache2或则Nextcloud之类,就需要用Https以及相应的证书来配置开启小绿锁。由于家用宽带一般没有VPS那样的固定公网IP,家用宽带一般都是动态公网IP,有的甚至直接是内网IP,所以不能像配置VPS那样直接在域名控制台添加一条解析记录完事儿,要通过DDNS的方式来动态解析我们的公网IP。我在Github上翻到由mgsky1开发的这款阿里DDNS脚本,真心感谢!先说下本脚本仅适用于动态公网IP的用户,内网用户不用折腾了,出门右转frpnps吧~安装配置不复杂,官方文档说的具体了,我稍微总结下:

  1. 安装python环境
    pip3 install aliyun-python-sdk-core-v3
  2. 这里下载配置文件并上传到服务器中
  3. 修改src目录中的config.json,填入相应的AccessKeyIdAccessKeySecretFirst-level-domain以及Second-level-domain(阿里的这些key以及id如何获取不再赘述)
  4. 运行DDNS.py
    python3 src/DDNS.py
  5. 可以看到提示解析成功,并且控制台中也可以看到一条成功解析的记录
  6. 添加crob任务来定时解析,我设置的是10分钟解析一次
    */10 * * * * python3 /home/aliddns/src/DDNS.py
  7. /etc/rc.local中添加sudo python3 /root/aliddns/src/DDNS.py &来支持开机启动
  8. 至此树莓派已经可以通过阿里DDNS自动解析动态公网IP咯 :idea:

配置Nextcloud

配置过程以及后续排雷可以参照这篇

这次看到有新版本18.0.4就直接上新版本。这边值得一提的是硬盘挂载这块,Ubuntu 20.04默认带了ntfs-3g,所以可以直接挂载ntfs格式的硬盘或U盘。

#查看硬盘序号,例如我这里是/dev/sda1
fdisk -l
#挂载硬盘到mnt目录
mount /dev/sda1 /mnt/
#查看是否挂载成功,应该可以看到mnt下挂载的硬盘了
df -h
#在NextCloud中启用外部存储后挂载本地存储即可看到新挂载的硬盘
-------------------------------------------
#查看磁盘分区的UUID
sudo blkid
#配置开机自动挂载
sudo nano /etc/fstab
#填入相应参数
UUID=12345678-1234-123f-1234-123456789876 /data ntfs defaults 0 1
#配置硬盘不工作时自动休眠,通过crontab执行定时任务
*/10 * * * * sudo hdparm -y /dev/sdb1   //硬盘盘符根据自己来定义,时间我设置10分钟
#查看硬盘状态
hdparm -C /dev/sdb1   //激活为active,省电为standby
-------------------------------------------
#若要卸载硬盘则使用umount
umount /dev/sda1

***2020.5.18挂载硬盘碰到的权限问题***

由于默认data分区是在我16g的TF卡上,于是我想把默认的存储空间换到我挂载的移动硬盘上,操作还是挺简单的:

#建立和原data目录同级目录,我这里以2233为例
mkdir /var/www/html/nextcloud/2233
#拷贝原data目录下所有文件及文件夹至2233目录下
cp或rsync选一个
#编辑nextcloud配置文件
nano /var/www/html/nextcloud/config/config.php
#修改nextcloud默认存储路径
把'datadirectory' => '/var/www/html/nextcloud/data',修改为'datadirectory' => '/var/www/html/nextcloud/2233',
#重启网络服务器(以Apache为例)
service apache2 restart

由于我挂载的是ntfs格式的硬盘,很快发现一个问题:

解法:在Nextcloud的配置文件中添加一行'check_data_directory_permissions' => false,即不检查文件夹权限即可绕过该校验。

最后

至此树莓派4b上的Ubuntu 20.04 Server初体验基本到此为止,接下来就阔以日(ji)常(xu)使(zhe)用(teng)咯 :-P


以下文章对本次折腾起到了很大的帮助,特此感谢:

  1. 树莓派4B(4G版本)安装Ubuntu 19.10
  2. 树莓派3B+笔记(3)–ubuntu mate下配置wifi
  3. 我的家庭Wifi SSID在Ubuntu中不可见
  4. 修改和校正树莓派时间
  5. 一个可以自动更新动态域名解析(DDNS)的脚本分享
  6. linux下实现自有域名ddns动态域名解析-aliddns篇
  7. 树莓派Raspberry Pi安装NextCloud教程
  8. Ubuntu server 设置系统语言为中文或任意语言,真正正确的方法
  9. nextcloud ntfs权限问题及解决方法
  10. NextCloud挂载数据盘

发表回复

textsms
account_circle
email

Joynaruto

当树莓派安装Ubuntu 20.04
前言 在树莓派上安装过了Openwrt,Lakka以及官方的Raspbian后,我决定在树莓派上尝试下最爱的Ubuntu,毕竟这是开始的地方 :oops: 安装 首先去树莓派官网下载Ubuntu系统镜像,我选…
扫描二维码继续阅读
2020-05-16