配置OrangePi这类单板电脑不论是在官网或是一些个人博客上都能找到详细的教程,因此我的这系列博文会更偏向于记录配置过程遇到并解决的实际问题,而非一步一步的教程,当然我会在博文底部附上我所参考的详细教程的链接。希望这系列博文对初次接触OrangePi、同样有将其配置成服务器的想法的你有一定参考价值。
准备
网上各种烧录工具都简单易用,这里使用的是Win32 Disk Imager:
官网下载系统镜像:
系统
如果有系统启动速度的要求,建议使用Class10或以上的MicroSD卡,由于我暂时没有闲置的Class10,暂且用一张8G Class4代替。
目前能适配OrangePi Zero的最新Ubuntu server系统镜像版本为xenial_server_linux5.3.5_v1.0,不过后面会有一些原因导致我弃用Ubuntu server,改而使用Armbian。
使用Win32 Disk Imager写入镜像,过程中未遇到任何问题。
初次上电
为了实验最低电源要求,我从最差的电源适配器和电源线开始通电测试,初次上电两个网口灯均不亮,系电源线接触不良;网口灯保持常亮则为电源适配器供电不足。
正常开机时两个网口灯常亮1秒,随即黄灯闪烁3次。
开机完成后网口灯开始无规律闪烁,此时登陆局域网网关查看OrangePi所连接的IP地址,然后使用PUTTY默认配置(22端口,SSH)连接该IP。连接成功时提示 Login as:
OrangePi官方镜像默认用户名:orangepi/root 密码:orangepi
我首次登陆选用了普通用户orangepi。
调整磁盘大小
Ubuntu server 连接 SSH 后可能需要获取root权限,输入命令,获取权限:
$ sudo -s
查看磁盘大小命令:
$ df -h
两条网络上常见的调整磁盘大小命令:
$ fs_resize
$ resize_part
均提示未找到指令:
bash: fs_resize: command not found
以下为leejunguda的解答,实测有效解决问题:
First
$ fdisk -l
and you should know the partition name…
and in my case..
$ fdisk -c /dev/mmcblk0
input ‘p’
and show information of partition…
may be…..taget partition is 2…..
input “d” -> deldet partition….
input “2” -> target delete partition…
ipput “np” -> set new partition information…
input “p” ->set primary
input “2” -> target partition…
and input first sector number…….
(above…you type “fdisk -l” and find that number ( /dev/mmcblk0p2 ‘s start number )
and request last sector….and push enter key….
and input “w” ->write partiotion information….
System show error ….ignore….
$ reboot
$ resize2fs /dev/mmcblk0p2
$ df- h
done
解决过程如下:
$ fdisk –l # 显示所有物理磁盘名称
通常我们需要扩容的分区是/dev/mmcblk0p2
,其中/dev/mmcblk0
为物理磁盘名,其末尾p2
表示2号分区。通过以上命令给出的信息可以判断,2号分区之前均为系统目录,而2号分区之后都是未分配的空间,了解这个将有助于你在其他情况下自己判断需要扩容的分区号。记录你需要扩容的磁盘名称,以及对应分区p2
的起始 sector 信息,通常为表示范围的两个数字中小的那一个,同时记录/dev/mmcblk0
磁盘的结束 sector 号。
$ fdisk -c /dev/mmcblk0 # 选择我们需要操作的磁盘/dev/mmcblk0
此命令后,我们将进入 fdisk
工具内的命令行:
p # 显示所有分区信息,多数情况下我们此时需要操作的分区号为2
d # 进入删除分区命令
2 # 选择我们需要操作的2号分区
np # 配置一个新的分区
p # 将新的分区配置为主分区(primary)
2 # 对应上面删除的2号分区
# 这里填写原始2号分区的起始sector号
# 随后提示要求输入新的结束sector号,本着扩容的目的,输入磁盘的结束sector号即可
w # 立即执行刚刚配置的分区的修改操作,忽略ERROR提示
我们已经执行完了所有分区操作,回到Linux终端:
$ reboot # 重启
重启完成后,使用 resize2fs
工具完成最终的操作:
$ resize2fs /dev/mmcblk0p2
此时可以使用 df- h
命令确认已完成磁盘扩容。
软件更新
以下操作均需在root用户下完成。
$ apt-get update # 检查更新
$ apt-get upgrade # 安装更新
安装更新时报如下错误:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
以下为HuFeiHu-Blog分析的原因:
锁定的文件会阻止 Linux 系统中某些文件或者数据的访问,这个概念也存在于 Windows 或者其他的操作系统中。
一旦你运行了 apt-get 或者 apt 命令,锁定文件将会创建于/var/lib/apt/lists/、 /var/lib/dpkg/、 /var/cache/apt/archives/ 中。
这有助于运行中的 apt-get 或者 apt 进程能够避免被其它需要使用相同文件的用户或者系统进程所打断。当该进程执行完毕后,锁定文件将会删除。
当你没有看到 apt-get 或者 apt 进程的情况下在上面两个不同的文件夹中看到了锁定文件,这是因为进程由于某个原因被杀掉了,因此你需要删除锁定文件来避免该错误。
参考他的方法,解决方案如下:
1. 找到并且杀掉所有的 apt-get 和 apt 进程
使用 ps
和 grep
命令并用管道组合来得到含有 apt 或者 apt-get 的进程:
$ ps -A | grep apt
通过进程号杀掉列出的两个 apt 相关进程,以下方法选择其一:
$ sudo kill -9 processnumber # 9 是 SIGKILL 的信号数,它会杀掉第一个 apt 进程
$ sudo kill -SIGKILL processnumber
2. 删除锁定文件
首先运行下面的命令来移除 /var/lib/dpkg/ 文件夹下的锁定文件:
$ sudo rm /var/lib/dpkg/lock
之后像下面这样强制重新配置软件包:
$ sudo dpkg --configure -a
也可以删除 /var/lib/apt/lists/ 以及缓存文件夹下的锁定文件:
$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock
接下来,以下任一命令更新你的软件包源列表:
$ sudo apt update
$ sudo apt-get update
在运行dpkg --configure -a
时报如下错误:
dpkg: error: parsing file '/var/lib/dpkg/updates/0008' near line 0: newline in field name '#padding'
参考czw0723的方法:
$ sudo rm /var/lib/dpkg/updates/*
$ sudo apt-get update
最后成功执行安装更新命令:
$ apt-get upgrade
拓展
- Github下载速度太慢,选择主机端先下载,再通过SMB共享至OrangePi
首先安装依赖的包,使用mount.cifs需要cifs-utils软件包(以及cifs-utils依赖的软件包)。
$ sudo apt install cifs-utils
以下两种方法之一挂载共享文件夹:
$ sudo mount.cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw]
$ sudo mount -t cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw]
实测例:
$ sudo mount.cifs //192.168.1.77/Documents /mnt/share -o user=Guest,passwd=
以下命令以卸载挂载的网络磁盘:
$ sudo umount [mount point]
实测例:
$ sudo umount /mnt/share
- 安装Netdata
参考:使用Orange Pi Zero做小小服务器(Netdata篇)
报错缺少 uuid-dev 和 zlib1g-dev , apt-get
命令检查确实存在这两个库,安装提示使用 --libs-are-really-here
选项,但问题依旧。
参考科技爱好者的方法:
官方提供一键安装程序,使用于任何Linux系统,包括树莓派上:
$ bash <(curl -Ss https://my-netdata.io/kickstart.sh)
安装过程中提示需要两个谷歌云上的文件,采用手动下载:
- http://storage.googleapis.com/netdata-nightlies/netdata-latest.tar.gz
- http://storage.googleapis.com/netdata-nightlies/sha256sums.txt
再通过SMB共享至OrangePi端
依赖库检查通过,开始编译…
开始make…
开始bash…
终于…
enjoy real-time performance and health monitoring...
Netdata常用命令:
$ systemctl stop netdata # 停止
$ systemctl start netdata # 启动
$ systemctl restart netdata # 重启
$ systemctl enable netdata # 开机启动
$ sudo bash /usr/libexec/netdata-uninstaller.sh # 卸载netdata