Difference between revisions of "APITestPage"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(75 intermediate revisions by the same user not shown)
Line 1: Line 1:
===Linux系统编译===
+
[[Getting Started with OpenMediaVault|English]]
====各个OS对应的内核与u-boot版本====
+
==OpenMediaVault版本信息==
{| class="wikitable"
+
* OS: Debian 12<br />
|-
+
* OpenMediaVault: 7.0.5-1 (Sandworm)<br />
! 操作系统
+
* Docker: 26.0.1<br />
! 内核版本
+
* Others: 已安装OMV-Extras软件包<br />
! uboot版本
+
==旧版本的OpenMediaVault文档==
! 交叉编译器
+
Link to → [[Getting Started with OpenMediaVault6/zh|Getting Started with OpenMediaVault6]]
! 分区类型
+
==OpenMediaVault运行界面==
! 构建工具集
+
[[File:Openmediavault7-zh.png|600px]]
! 内核代码分支
+
==支持的平台==
! 内核配置
+
* RK3328<br />
! uboot代码分支
+
* RK3399<br />
! uboot配置
+
* RK3568<br />
|-
+
* RK3588<br />
| buildroot
+
==查看IP地址==
| rowspan="2" | linux v4.19.y
+
由于主机名默认为开发板的型号, 所以可以使用ping命令来获得IP地址,例如CM3588,可以用命令:
| rowspan="7" | u-boot <br />v2017.09
+
| rowspan="7" | 11.3-aarch64
+
| rowspan="2" | [https://github.com/friendlyarm/sd-fuse_rk3328/blob/kernel-4.19/prebuilt/parameter.template GPT]
+
| rowspan="2" | [https://github.com/friendlyarm/sd-fuse_rk3328/tree/kernel-4.19 sd-fuse]
+
| rowspan="2" | [https://github.com/friendlyarm/kernel-rockchip/tree/nanopi4-v4.19.y nanopi4-v4.19.y]
+
| rowspan="2" | nanopi4_linux_defconfig
+
| rowspan="7" | [https://github.com/friendlyarm/uboot-rockchip/tree/nanopi4-v2017.09 nanopi4-v2017.09]
+
| rowspan="7" | rk3288_defconfig
+
|-
+
| friendlycore-focal-arm64
+
|-
+
| friendlycore-lite-focal-arm64
+
| rowspan="5" | linux v5.15.y
+
| rowspan="5" | [https://github.com/friendlyarm/sd-fuse_rk3328/blob/kernel-5.15.y/prebuilt/parameter.template GPT]
+
| rowspan="5" | [https://github.com/friendlyarm/sd-fuse_rk3328/tree/kernel-5.15.y<br /> sd-fuse]
+
| rowspan="5" | [https://github.com/friendlyarm/kernel-rockchip/tree/nanopi-r2-v5.15.y nanopi-r2-v5.15.y]
+
| nanopi-r2_linux_defconfig
+
|-
+
| friendlywrt21
+
| rowspan="4" | nanopi-r2_linux_defconfig<br />+friendlywrt.config
+
|-
+
| friendlywrt21-docker
+
|-
+
| friendlywrt22
+
|-
+
| friendlywrt22-docker
+
|}
+
* 内核源代码仓库地址:https://github.com/friendlyarm/kernel-rockchip
+
* u-boot源代码仓库地址:https://github.com/friendlyarm/uboot-rockchip
+
* 交叉编译工具链存放在如下路径: /opt/FriendlyARM/toolchain/,使用前需导出到PATH环境变量,例如需要使用11.3-aarch64版本的编译器,使用如下命令:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
+
ping CM3588
 
</syntaxhighlight>
 
</syntaxhighlight>
* sd-fuse构建工具集可以用于快速编译kernel和uboot、重新打包sd卡固件与卡刷固件等
+
==登录OpenMediaVault网页后台==
* 点击表格中的MBR与GPT可查看各系统的分区布局(配置文件)
+
在网页浏览器输入开发板的IP地址, 网页登录帐号默认为:
 
+
====编译内核linux-v4.4.y====
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| lubuntu
+
| eflasher
+
| friendlydesktop-arm64
+
| friendlycore-arm64
+
|}
+
下载源代码并编译:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi4-linux-v4.4.y kernel-rockchip
+
用户名: admin
cd kernel-rockchip
+
密码: openmediavault
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH
+
touch .scmversion
+
# 编译内核
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4_linux_defconfig
+
# make ARCH=arm64 CROSS_COMPILE=aarch64-linux- menuconfig  # 启动配置界面
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4-images -j$(nproc)
+
# 编译驱动模块
+
mkdir -p out-modules
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules -j$(nproc)
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules_install
+
KERNEL_VER=$(make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 kernelrelease)
+
rm -rf $PWD/out-modules/lib/modules/${KERNEL_VER}/kernel/drivers/gpu/arm/mali400/
+
[ ! -f "$PWD/out-modules/lib/modules/${KERNEL_VER}/modules.dep" ] && depmod -b $PWD/out-modules -E Module.symvers -F System.map -w ${KERNEL_VER}
+
(cd $PWD/out-modules && find . -name \*.ko | xargs aarch64-linux-strip --strip-unneeded)
+
 
</syntaxhighlight>
 
</syntaxhighlight>
编译完会生成如下文件:
+
==设置网页登录密码==
{| class="wikitable"
+
网页上点击右上角的头像,选择 “更改密码”
|-
+
==默认的Linux帐号与密码==
| kernel.img
+
普通用户:<br/>
| resource.img
+
&nbsp;&nbsp;&nbsp;&nbsp;用户名: pi<br/>
| 驱动模块位于out-modules目录
+
&nbsp;&nbsp;&nbsp;&nbsp;密码: pi<br/>
|}
+
<br/>
安装内核: <br>
+
Root用户:<br/>
请参考 [[#下载uboot与内核到目标板]]<br>
+
&nbsp;&nbsp;&nbsp;&nbsp;用户名: root<br/>
 
+
&nbsp;&nbsp;&nbsp;&nbsp;密码: fa<br/>
====编译u-boot v2014.10====
+
==设置网页超时时间==
本节内容适用于如下OS:
+
进入 '''系统 -> 工作台''',设置"自动登出"时间。
{| class="wikitable"
+
==通过ssh登录==
|-
+
| lubuntu
+
| eflasher
+
| friendlydesktop-arm64
+
| friendlycore-arm64
+
|}
+
下载源代码并编译:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/uboot-rockchip --single-branch --depth 1 -b nanopi4-v2014.10_oreo
+
ssh pi@YourIPAddress
cd uboot-rockchip
+
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH
+
make CROSS_COMPILE=aarch64-linux- rk3399_defconfig
+
make CROSS_COMPILE=aarch64-linux-
+
 
</syntaxhighlight>
 
</syntaxhighlight>
编译完成后会生成如下文件:
+
pi用户的初始密码为 pi
{| class="wikitable"
+
==更新用户密码==
|-
+
| uboot.img
+
| trust.img
+
| rk3399_loader_v1.22.119.bin
+
|}
+
安装u-boot: <br />
+
请参考 [[#下载uboot与内核到目标板]]<br>
+
 
+
====编译内核linux-v4.19.y====
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| debian-buster-desktop-arm64
+
| debian-bullseye-core-arm64
+
| debian-bullseye-desktop-arm64
+
| debian-bullseye-minimal-arm64
+
|-
+
| friendlycore-focal-arm64
+
| friendlycore-lite-focal-kernel4-arm64
+
| friendlywrt21-kernel4
+
| buildroot
+
|}
+
下载源代码并编译:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi4-v4.19.y kernel-rockchip
+
sudo passwd root
cd kernel-rockchip
+
sudo passwd pi
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
+
touch .scmversion
+
# 编译内核
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4_linux_defconfig
+
# make ARCH=arm64 CROSS_COMPILE=aarch64-linux- menuconfig  # 启动配置界面
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4-images -j$(nproc)
+
# 编译驱动模块
+
mkdir -p out-modules
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules -j$(nproc)
+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- INSTALL_MOD_PATH="$PWD/out-modules" modules_install
+
KERNEL_VER=$(make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 kernelrelease)
+
rm -rf $PWD/out-modules/lib/modules/${KERNEL_VER}/kernel/drivers/gpu/arm/mali400/
+
[ ! -f "$PWD/out-modules/lib/modules/${KERNEL_VER}/modules.dep" ] && depmod -b $PWD/out-modules -E Module.symvers -F System.map -w ${KERNEL_VER}
+
(cd $PWD/out-modules && find . -name \*.ko | xargs aarch64-linux-strip --strip-unneeded)
+
 
</syntaxhighlight>
 
</syntaxhighlight>
编译完会生成如下文件:
+
==配置网络与时区==
{| class="wikitable"
+
用root用户登录ssh:
|-
+
| kernel.img
+
| resource.img
+
| 驱动模块位于out-modules目录
+
|}
+
安装内核: <br>
+
请参考 [[#下载uboot与内核到目标板]]<br>
+
====编译内核linux-v5.15.y====
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| friendlywrt21
+
| friendlywrt21-docker
+
| friendlywrt22
+
| friendlywrt22-docker
+
| friendlycore-lite-focal-kernel5-arm64
+
|}
+
下载源代码并编译:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/kernel-rockchip --single-branch --depth 1 -b nanopi-r2-v5.15.y kernel-rockchip
+
ssh root@IPAddress
cd kernel-rockchip
+
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
+
touch .scmversion
+
# 编译内核
+
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi4_linux_defconfig
+
# make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig  # 启动配置界面
+
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 -j$(nproc)
+
# 编译驱动模块
+
mkdir -p out-modules && rm -rf out-modules/*
+
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 INSTALL_MOD_PATH="$PWD/out-modules" modules -j$(nproc)
+
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 INSTALL_MOD_PATH="$PWD/out-modules" modules_install
+
KERNEL_VER=$(make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 kernelrelease)
+
[ ! -f "$PWD/out-modules/lib/modules/${KERNEL_VER}/modules.dep" ] && depmod -b $PWD/out-modules -E Module.symvers -F System.map -w ${KERNEL_VER}
+
(cd $PWD/out-modules && find . -name \*.ko | xargs aarch64-linux-strip --strip-unneeded)
+
 
</syntaxhighlight>
 
</syntaxhighlight>
打包kernel.img与resource.img:
+
执行如下命令:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3399/kernel-5.15.y/tools/mkkrnlimg && chmod 755 mkkrnlimg
+
omv-firstaid
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3399/kernel-5.15.y/tools/resource_tool && chmod 755 resource_tool
+
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3399/kernel-5.15.y/prebuilt/boot/logo.bmp
+
wget https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3399/kernel-5.15.y/prebuilt/boot/logo_kernel.bmp
+
./mkkrnlimg arch/arm64/boot/Image kernel.img
+
mkdir kernel-dtbs
+
cp -f arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dtb kernel-dtbs/rk3399-nanopi4-rev09.dtb
+
cp -f arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dtb kernel-dtbs/rk3399-nanopi4-rev0a.dtb
+
cp -f arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4se.dtb kernel-dtbs/rk3399-nanopi4-rev0b.dtb
+
cp -f arch/arm64/boot/dts/rockchip/rk3399-nanopc-t4.dtb kernel-dtbs/rk3399-nanopi4-rev00.dtb
+
./resource_tool --dtbname kernel-dtbs/*.dtb logo.bmp logo_kernel.bmp
+
 
</syntaxhighlight>
 
</syntaxhighlight>
完成后会得到如下文件:
+
界面如下:<br />
{| class="wikitable"
+
[[File:Omv-firstaid.png|400px]]
|-
+
==切换国内软件源==
| kernel.img
+
| resource.img
+
| 驱动模块位于out-modules目录
+
|}
+
安装内核: <br>
+
请参考 [[#下载uboot与内核到目标板]]<br>
+
====编译u-boot v2017.09====
+
本节内容适用于如下OS:
+
{| class="wikitable"
+
|-
+
| debian-buster-desktop-arm64
+
| debian-bullseye-core-arm64
+
| debian-bullseye-desktop-arm64
+
| debian-bullseye-minimal-arm64
+
|-
+
| friendlycore-focal-arm64
+
| friendlycore-lite-focal-kernel4-arm64
+
| friendlywrt21-kernel4
+
| buildroot
+
|}
+
下载源代码并编译:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/rkbin --single-branch --depth 1 -b friendlyelec
+
sudo sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
git clone https://github.com/friendlyarm/uboot-rockchip --single-branch --depth 1 -b nanopi4-v2017.09 -j$(nproc)
+
sudo apt update
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
+
cd uboot-rockchip/
+
./make.sh nanopi4
+
 
</syntaxhighlight>
 
</syntaxhighlight>
编译完成后会生成如下文件:
+
==配置硬盘==
{| class="wikitable"
+
(注:如果硬盘之前已经初始化,无需重新擦除,RAID可以得到保留,直接挂载即可)<br />
|-
+
请参考 [[#系统重装后恢复硬盘数据]]
| uboot.img
+
===第一步:清除硬盘===
| trust.img
+
'''注意备份你的数据'''<br />
| rk3399_loader_v1.24.126.bin
+
进入 '''存储器 -> 磁盘''',选中你的存储器,点击'''“擦除"'''图标进行擦除,一般选'''“快速”'''即可。<br />
|}
+
如果硬盘无法擦除,你需要先移除此硬盘上的共享文件夹并取消挂载。
安装u-boot: <br />
+
===第二步:创建文件系统===
请参考 [[#下载uboot与内核到目标板]]<br>
+
本章节所介绍的两种Raid配置的区别:
 
+
* MD RAID:性能更好,因为它在并行写入和读取分块方面做得更好。
====下载uboot与内核到目标板====
+
* Btrfs RAID:数据安全性更好,因为校验和使其能够确定块的哪个副本出错,当只有一个副本出错时,并且它能够判断两个副本是否都有问题。
=====下载至已安装的系统=====
+
注:不支持为USB接口的硬盘创建RAID队列, 更详细内容请参考官方指南: [https://docs.openmediavault.org/en/latest/administration/storage/raid.html RAID]
======MBR分区======
+
====方案1: 配置MD RAID====
本节内容适用于如下OS:
+
* 进入 '''存储器 -> 多重装置''',点击'''“+”'''图标,在'''"级别"'''一栏选择RAID级别,在'''"设备"'''一栏钩选存储设备,保存后,状态如下所示:
{| class="wikitable"  
+
[[File:Omv-raid-resyncing.png|center|400px]]<br/>
|-
+
你需要等待状态从 resyncing 转为 clean,完成后如下图所示:<br />
| lubuntu
+
[[File:Omv-raid-clean.png|center|400px]]<br/>
| eflasher
+
* 进入 '''存储器 -> 文件系统''',点击'''“+”''',类型建议选择'''"BTRFS"''',选择'''"Single"'''并在"设备"栏中钩选你的存储设备,如果在上一步中创建了RAID,设备名是以"/dev/md"开头的,如果你的设备在'''"设备"'''栏中没法列出,可能是设备中已存在共享文件夹等数据,尝试点击 '''►''' 图标直接挂载,如果数据可以被丢弃,则可以考虑使用如下命令擦除硬盘数据:
| friendlydesktop-arm64
+
| friendlycore-arm64
+
|}
+
目前只有linux v4.4内核使用mbr分区,需要参考此链接的[https://github.com/friendlyarm/sd-fuse_rk3399/blob/kernel-4.19/prebuilt/parameter.template partmap文件],计算各分区的偏移地址,用dd命令进行写入,例如parameter.template文件内容中"0x00014000@0x00014000(kernel)"表示kernel.img的位置位于0x00014000,转换成10进制就是81920, 所以dd命令如下:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
dd if=kernel.img of=/dev/mmcblk0 seek=81920
+
# 注意:硬盘中的所有数据将会丢失
 +
sudo wipefs --all /dev/mdX
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
/dev/mdX需要换成真实的设备,通过"cat /proc/partitions"命令查看。
======GPT分区======
+
* 格式化完成后,OpenMediaVault 将提示您挂载该设备。
本节内容适用于如下OS:
+
====方案2: 配置Btrfs RAID====
{| class="wikitable"  
+
* 进入 '''存储 -> 文件系统''',点击 '''"+"''' 图标,选择 '''"BTRFS"''',选择 RAID 级别,选择您的硬盘,然后保存设置。<br />
|-
+
* 格式化完成后,OpenMediaVault 将让您选择要挂载的文件系统,它不会列出RAID阵列中的所有硬盘,选择位于阵列中的其中一个硬盘即可。
| debian-buster-desktop-arm64
+
====方案3: 不使用RAID阵列====
| debian-bullseye-core-arm64
+
* 进入 '''存储 -> 文件系统''',点击 '''"+"''' 图标,选择 '''"BTRFS"''',选择 Single 级别,选择您的硬盘,然后保存设置。<br />
| debian-bullseye-desktop-arm64
+
* 格式化完成后,OpenMediaVault 将提示您挂载该设备。
| debian-bullseye-minimal-arm64
+
==创建共享文件夹==
|-
+
进入'''存储器 -> 共享文件夹''',添加'''"+"'''图标创建2个文件夹,名称分别为'''nfs'''和'''samba''',我们接下来将用这些文件夹来测试nfs和samba共享。<br />
| friendlycore-focal-arm64
+
(注:如果硬盘中存在同名的共享文件夹,重新创建同名的文件夹,数据会得到保留)
| friendlycore-lite-focal-kernel4-arm64
+
==创建NAS用户==
| friendlywrt21-kernel4
+
Debian系统的用户或通过命令行创建的Linux会缺少诸如samba之类服务的访问权限,因此这里推荐使用OpenMediaVault界面创建一个用户用于访问samba和nfs共享,这里我会创建一个名为'''nasuser'''的用户和组:<br />
| buildroot
+
<br />
|-
+
* 点击'''用户 -> 用户组''',点击 '''"+"''' 图标创建一个名为 '''nasuser''' 的用户组。
| friendlywrt21
+
* 点击'''用户 -> 用户''',点击 '''"+"''' 图标后创建一个名为 '''nasuser''',Shell选择/usr/sbin/nologin, 用户组钩选'''nasuser'''和'''users'''的用户。
| friendlywrt21-docker
+
==创建Samba共享==
| friendlywrt22
+
* 点击'''服务 -> SMB/CIFS -> 设置''', 钩选最上面的 "已启动", 最低协议版本选择 '''"SMB1"''',然后点 "保存";
| friendlywrt22-docker
+
* 点击'''服务 -> SMB/CIFS -> 共享''', 点击 '''"+"''' ,在 '''"Shared folder"''' 处选择要共享的文件夹,这里我选择samba文件夹。
|}
+
测试访问: <br />
linux v4.19内核和linux v5.15内核的系统默认使用GPT分区, 更新GPT分区比较简单,直接dd image文件至相应的分区即可(注意image的大小不要越界),在操作时需要注意存储设备的节点:
+
在Mac系统下右击Finder,选择连接服务器后输入 smb://YourIPAddress(换成真实IP),会弹出验证对话框,输入用户名nasuser以及密码即可以访问。
* SD/TF Card设备节点为 /dev/mmcblk0 <br />
+
==创建NFS共享==
* eMMC设备节点为 /dev/mmcblk2 <br />
+
* 点击"服务" -> "NFS" -> "设置", 钩选最上面的 "已启动", 在"版本"一栏中,钩选所有版本包括'''“NFSv2”''',然后点 "保存"并应用设置;
下面将演示如何将内核更新到eMMC:<br />
+
* 点击"服务" -> "NFS" -> "共享", 点击 '''"+"''' ,在 '''"Shared folder"''' 处选择要共享的文件夹,这里我选择 nfs 文件夹。在客户端一栏中输入 192.168.1.0/24 (换成真实网段,或指定仅允许访问的IP),权限处选择 "读/写",在扩展选项中输入:  
使用parted命令查看分区布局:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
parted /dev/mmcblk2 print
+
rw,async,insecure,no_subtree_check,all_squash,anonuid=0,anongid=0
 
</syntaxhighlight>
 
</syntaxhighlight>
得到如下输出:
+
然后点 "保存"并应用设置;
 +
===Mac下测试挂载NFS===
 +
命令行查看OpenMediaVault的NFS共享信息
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Model: MMC A3A551 (sd/mmc)
+
# showmount -e YourIPAddress
Disk /dev/mmcblk2: 31.0GB
+
Exports list on YourIPAddress:
Sector size (logical/physical): 512B/512B
+
/export                             192.168.1.0/24
Partition Table: gpt
+
/export/nfs                         192.168.1.0/24
Disk Flags:
+
</syntaxhighlight>
 +
在Mac上右击Finder,选择连接服务器,在地址栏输入
 +
<syntaxhighlight lang="bash">
 +
nfs://YourIPAddress/export/nfs
 +
</syntaxhighlight>
 +
===Linux下测试挂载NFS===
 +
安装软件包
 +
<syntaxhighlight lang="bash">
 +
sudo apt install nfs-common
 +
</syntaxhighlight>
 +
挂载
 +
<syntaxhighlight lang="bash">
 +
sudo mount -t nfs YourIPAddress:/export/nfs /mnt/nfs
 +
</syntaxhighlight>
 +
查看状态
 +
<syntaxhighlight lang="bash">
 +
# df -h | grep nfs
 +
YourIPAddress:/export/nfs  7.3G  3.5M  6.8G    1% /mnt/nfs
 +
</syntaxhighlight>
 +
设置开机自动挂载,添加如下内容到 /etc/fstab
 +
<syntaxhighlight lang="bash">
 +
YourIPAddress:/export/nfs /mnt/nfs nfs defaults 0 0
 +
</syntaxhighlight>
 +
==Docker的使用==
 +
===将Docker数据移动至硬盘===
 +
先安装openmediavault-compose插件, 通过SSH登录然后执行如下命令:
 +
<syntaxhighlight lang="bash">
 +
sudo apt update
 +
sudo apt install -y openmediavault-compose
 +
</syntaxhighlight>
 +
刷新网页后,进入'''存储器 -> 共享文件夹''',添加 '''"+"''' 图标创建3个文件夹,分别为
 +
<syntaxhighlight lang="bash">
 +
docker            -> Docker数据目录,在/etc/docker/daemon.json中定义
 +
docker-compose    -> Location of compose files
 +
docker-data      -> Location of persistent container data
 +
docker-app        -> 自用,存放Dockerfile和数据
 +
</syntaxhighlight>
 +
进入'''服务 -> Compose''',进入设置界面,设置"Compose 文件"的Shared folder为docker-compose, 设置"Data“的Shared folder为docker-data,<br />
 +
<br />
 +
进入ssh终端,输入以下命令,将docker数据移动到共享文件夹, 其中,'''/srv/dev-disk-by-uuid-XXYYZZ/docker''' 是共享文件夹的绝对路径,可以在网页 '''存储器 -> 共享文件夹''' 列表中得到:
 +
<syntaxhighlight lang="bash">
 +
su root
 +
systemctl stop docker.socket docker.service
 +
mv /var/lib/docker/* /srv/dev-disk-by-uuid-XXYYZZ/docker/
 +
</syntaxhighlight>
 +
在页面上设置 '''Docker存储''' 为该docker共享文件夹的绝对路径,保存并应用后, 重启开发板。
 +
<br />GUI 上填写的最终数值:<br />
 +
<syntaxhighlight lang="text">
 +
Compose Files's Shared folder  -> on /dev/md0, docker-compose
 +
Data's Shared folder          -> on /dev/md0, docker-data
 +
Docker's Docker storage        -> on /srv/dev-disk-by-uuid-XXYYZZ/docker/
 +
</syntaxhighlight>
 +
===Docker安装nextcloud网盘===
 +
命令行界面输入以下命令即可:
 +
<syntaxhighlight lang="bash">
 +
su root
 +
cd $(readlink -f /srv/dev-disk-by-uuid-*/docker-app)
 +
mkdir nextcloud
 +
cd nextcloud
 +
mkdir data
  
Number Start  End     Size    File system  Name      Flags
+
docker run -d -p 8888:80 --name nextcloud \
  1      8389kB  12.6MB  4194kB              uboot
+
     -v $PWD/data:/var/www/html --restart=always \
2      12.6MB  16.8MB  4194kB              misc
+
    --privileged=true arm64v8/nextcloud
3      16.8MB  21.0MB  4194kB              dtbo
+
4      21.0MB  37.7MB  16.8MB              resource
+
5      37.7MB  79.7MB  41.9MB              kernel
+
6      79.7MB  113MB  33.6MB              boot
+
7      113MB  147MB  33.6MB              recovery
+
8      147MB  31.0GB  30.9GB  ext4        rootfs
+
 
</syntaxhighlight>
 
</syntaxhighlight>
可以看到resource分区位置为4, kernel分区位置为5,用dd命令分别写入resource.img与kernel.img到这两个分区即可, 命令如下:
+
完成后在网页浏览器访问http://YourIPAddress:8888/即可看到nextcloud网盘的页面,如果无法访问,建议重启一下设备。
 +
===Docker安装Filebrowser===
 +
命令行界面输入以下命令即可:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
dd if=resource.img of=/dev/mmcblk2p4 bs=1M
+
su root
dd if=kernel.img of=/dev/mmcblk2p5 bs=1M
+
cd $(readlink -f /srv/dev-disk-by-uuid-*/docker-app)
 +
mkdir filebrowser
 +
cd filebrowser
 +
 
 +
docker run -d -v $(readlink -f /srv/dev-disk-by-uuid-*):/srv \
 +
    -v $PWD/filebrowserconfig.json:/etc/config.json \
 +
    -v $PWD/database.db:/etc/database.db -p 8080:80 \
 +
    --restart=always --name filebrowser \
 +
    filebrowser/filebrowser
 
</syntaxhighlight>
 
</syntaxhighlight>
如果要更新uboot,则命令为:
+
完成后在网页浏览器访问http://YourIPAddress:8080/即可看到Filebrowser的页面,默认管理员的帐号与密码都是admin。
 +
===Docker安装Jellyfin影音服务器===
 +
进入 '''存储器 -> 共享文件夹''',添加 '''"+"''' 图标创建media文件夹用于存放影音资源,然后在命令行终端输入以下命令安装Jellyfin:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
dd if=boot.img of=/dev/mmcblk2p1 bs=1M
+
su root
 +
cd $(readlink -f /srv/dev-disk-by-uuid-*/docker-app)
 +
mkdir jellyfin
 +
cd jellyfin
 +
mkdir config cache
 +
 
 +
docker run -d --name jellyfin \
 +
-v $PWD/config:/config \
 +
-v $PWD/cache:/cache \
 +
-v $(readlink -f /srv/dev-disk-by-uuid-*/media):/media \
 +
-p 8096:8096 \
 +
--restart=always \
 +
jellyfin/jellyfin
 
</syntaxhighlight>
 
</syntaxhighlight>
如果要更新内核驱动模块,将新驱动模块目录上传并替换以下目录下的文件即可:/lib/modules。
+
完成后在网页浏览器访问http://YourIPAddress:8096/即可看到Jellyfin的页面。
 +
===安装Docker可视化容器管理工具Portainer===
 +
命令行界面输入以下命令即可:
 +
<syntaxhighlight lang="bash">
 +
su root
 +
cd $(readlink -f /srv/dev-disk-by-uuid-*/docker-app)
 +
mkdir portainer
 +
cd portainer
 +
mkdir data
  
=====打包新的SD卡启动固件或者SD-to-eMMC卡刷固件=====
+
docker run -d \
sd-fuse 提供一些工具和脚本, 用于制作SD卡固件, 具体用途如下:<br />
+
  --name portainer \
* 制作分区镜像文件, 例如将rootfs目录打包成rootfs.img<br />
+
  --restart=always \
* 将多个分区镜像文件打包成可直接写SD卡的单一镜像文件<br />
+
  -e TZ=Asia/Shanghai \
* 简化内核和uboot的编译, 一键编译内核、第三方驱动, 并更新rootfs.img中的内核模块<br />
+
  -p 8000:8000 \
请根据所用的内核版本点击对应的链接了解详细的使用方法:
+
  -p 9000:9000 \
{| class="wikitable"  
+
  -v /var/run/docker.sock:/var/run/docker.sock \
|-
+
  -v $PWD/data:/data \
! 内核版本
+
  portainer/portainer-ce:latest
! 构建工具集
+
</syntaxhighlight>
|-
+
完成后在网页浏览器访问http://YourIPAddress:9000/即可看到Portainer的页面,默认管理员的帐号与密码都是admin。
| linux v4.4.y
+
==系统的备还与还原==
| [https://github.com/friendlyarm/sd-fuse_rk3399/tree/master sd-fuse]
+
===备份eMMC中的系统===
|-
+
使用tar命令备份文件系统的内容:
| linux v4.19.y
+
<syntaxhighlight lang="bash">
| [https://github.com/friendlyarm/sd-fuse_rk3399/tree/kernel-4.19<br /> sd-fuse]
+
su root
|-
+
cd /
| linux v5.15.y
+
tar --warning=no-file-changed -cvpzf /rootfs.tar.gz \
| [https://github.com/friendlyarm/sd-fuse_rk3399/tree/kernel-5.15.y<br /> sd-fuse]
+
    --exclude=/rootfs.tar.gz --exclude=/var/lib/docker/runtimes \
|}
+
    --exclude=/etc/firstuser --exclude=/etc/friendlyelec-release \
=====线刷=====
+
    --exclude=/usr/local/first_boot_flag --one-file-system /
不擦除flash的情况下只刷入编译生成的文件即可,需要注意的是uboot编译生成的rk3399_loader需要改名为MiniLoaderAll.bin,如下命令演示刷入uboot与内核,需要先加载parameter.txt,再刷入其他文件:
+
</syntaxhighlight>
 +
===还原系统到eMMC===
 +
使用SD卡启动,启动Linux系统(例如Debian或Ubuntu均可),使用如下命令查询eMMC上的系统根分区:
 +
<syntaxhighlight lang="bash">
 +
root@CM3588:~# sudo parted -s /dev/mmcblk2 unit MiB print | grep rootfs
 +
8      140MiB  59000MiB  58860MiB  ext4        rootfs
 +
</syntaxhighlight>
 +
根据上面的序号8可以得知根分区的设备名为/dev/mmcblk2p8,下面对它重新格式化并挂载,然后解压rootfs.tar.gz到此处:
 +
<syntaxhighlight lang="bash">
 +
sudo mkfs.ext4 /dev/mmcblk2p8
 +
sudo mkdir /mnt/rootfs
 +
sudo mount /dev/mmcblk2p8 /mnt/rootfs
 +
sudo tar xvzfp /path/to/rootfs.tar.gz -C /mnt/rootfs --numeric-owner --same-owner
 +
sudo poweroff
 +
</syntaxhighlight>
 +
关机后,拨出SD卡,重新上电从eMMC启动系统。
 +
==系统重装后恢复硬盘数据==
 +
* 进入 '''存储器 -> 文件系统''', 点击 '''►''' 图标,在 '''文件系统''' 一栏选择你的设备,点保存。
 +
* 进入 '''存储器 -> 共享文件夹''', 创建同名共享文件名,例如本文示例中的nfs, samba, docker, docker-app, docker-compose和docker-data。
 +
==常见问题与解决办法==
 +
===问题: Raid阵列出现如下状态Clean, Resyncing (PENDING)===
 +
Execute following command to switch array to read-write state and begin resync process:
 +
<syntaxhighlight lang="bash">
 +
mdadm --readwrite /dev/md0
 +
</syntaxhighlight>
 +
More details → [https://sleeplessbeastie.eu/2015/03/23/how-to-clear-up-pending-resync-on-raid-array/ How to clear up pending resync on RAID array]
 +
===问题: 挂载文件系统时,未列出存储设备===
 +
先使用如下命令擦除硬盘数据:
 +
<syntaxhighlight lang="bash">
 +
# 注意:硬盘中的所有数据将会丢失
 +
sudo wipefs --all /dev/mdX
 +
</syntaxhighlight>
 +
==OpenMediaVault软件包一览==
 +
你可以使用apt命令安装OpenMediaVault的软件包,例如:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
sudo upgrade_tool ul MiniLoaderAll.bin
+
apt install openmediavault-diskstats
sudo upgrade_tool di -p parameter.txt
+
sudo upgrade_tool di uboot uboot.img
+
sudo upgrade_tool di trust trust.img
+
sudo upgrade_tool di resource resource.img
+
sudo upgrade_tool di kernel kernel.img
+
sudo upgrade_tool RD
+
 
</syntaxhighlight>
 
</syntaxhighlight>
注:upgrade_tool是Rockchip提供的Linux下的命令行工具(Linux_Upgrade_Tool)
+
这是每个软件包的功能列表:<br />
 +
openmediavault-diskclone: 用于克隆磁盘的工具。<br />
 +
openmediavault-diskstats: 显示磁盘使用统计信息的工具。<br />
 +
openmediavault-downloader: 下载管理器,用于管理下载任务。<br />
 +
openmediavault-fail2ban: 防火墙软件,用于防范暴力攻击。<br />
 +
openmediavault-filebrowser: 文件浏览器,用于浏览和管理文件。<br />
 +
openmediavault-flashmemory: 用于将系统日志和临时文件存储在内存中以减少对磁盘的写入。<br />
 +
openmediavault-forkeddaapd: 支持 iTunes 的 DAAP 服务器。<br />
 +
openmediavault-ftp: FTP 服务器,用于文件传输。<br />
 +
openmediavault-kernel: 内核更新工具。<br />
 +
openmediavault-kvm: 虚拟化解决方案,用于运行虚拟机。<br />
 +
openmediavault-locate: 文件搜索工具。<br />
 +
openmediavault-luksencryption: 提供磁盘加密功能。<br />
 +
openmediavault-lvm2: 逻辑卷管理器。<br />
 +
openmediavault-mergerfs: 提供 Union 文件系统功能,将多个文件系统合并成一个逻辑文件系统。<br />
 +
openmediavault-minidlna: DLNA 服务器,用于在网络上共享媒体文件。<br />
 +
openmediavault-nut: 用于监控 UPS(不间断电源系统)的网络通信软件。<br />
 +
openmediavault-omvextrasorg: 提供额外的插件和软件包。<br />
 +
openmediavault-onedrive: 用于与 OneDrive 云存储服务进行集成。<br />
 +
openmediavault-owntone: 用于配置 UPnP/DLNA 媒体服务器。<br />
 +
openmediavault-photoprism: 相片管理软件。<br />
 +
openmediavault-remotemount: 远程挂载管理器。<br />
 +
openmediavault-resetperms: 重置文件和文件夹权限的工具。<br />
 +
openmediavault-rsnapshot: 快照备份工具。<br />
 +
openmediavault-s3: S3 存储服务插件。<br />
 +
openmediavault-sftp: SFTP 服务器。<br />
 +
openmediavault-shairport: AirPlay 音频服务器。<br />
 +
openmediavault-sharerootfs: 允许共享根文件系统的工具。<br />
 +
openmediavault-snapraid: SnapRAID 数据保护工具。<br />
 +
openmediavault-snmp: SNMP(简单网络管理协议)插件。<br />
 +
openmediavault-symlinks: 符号链接管理工具。<br />
 +
openmediavault-tftp: TFTP(Trivial File Transfer Protocol)服务器。<br />
 +
openmediavault-tgt: iSCSI 目标服务器。<br />
 +
openmediavault-usbbackup: USB 备份插件。<br />
 +
openmediavault-wakealarm: 用于通过计划的时间唤醒系统的工具。<br />
 +
openmediavault-webdav: WebDAV 服务器。<br />
 +
openmediavault-wetty: Web 终端工具。<br />
 +
openmediavault-wireguard: WireGuard VPN 插件。<br />
 +
openmediavault-wol: Wake-on-LAN 工具。<br />
 +
openmediavault-anacron: 任务调度工具。<br />
 +
openmediavault-apttool: APT(Advanced Package Tool)管理工具。<br />
 +
openmediavault-autoshutdown: 自动关机工具。<br />
 +
openmediavault-backup: 备份工具。<br />
 +
openmediavault-borgbackup: BorgBackup 工具。<br />
 +
openmediavault-clamav: ClamAV 来检测恶意软件和病毒的防病毒软件。<br />
 +
openmediavault-compose: Docker Compose 工具。<br />
 +
openmediavault-cputemp: 用于监控 CPU 温度的工具。<br />
 +
openmediavault-zfs: ZFS 文件系统支持插件。<br />

Revision as of 05:37, 20 April 2024

English

1 OpenMediaVault版本信息

  • OS: Debian 12
  • OpenMediaVault: 7.0.5-1 (Sandworm)
  • Docker: 26.0.1
  • Others: 已安装OMV-Extras软件包

2 旧版本的OpenMediaVault文档

Link to → Getting Started with OpenMediaVault6

3 OpenMediaVault运行界面

Openmediavault7-zh.png

4 支持的平台

  • RK3328
  • RK3399
  • RK3568
  • RK3588

5 查看IP地址

由于主机名默认为开发板的型号, 所以可以使用ping命令来获得IP地址,例如CM3588,可以用命令:

ping CM3588

6 登录OpenMediaVault网页后台

在网页浏览器输入开发板的IP地址, 网页登录帐号默认为:

用户名: admin
密码: openmediavault

7 设置网页登录密码

网页上点击右上角的头像,选择 “更改密码”

8 默认的Linux帐号与密码

普通用户:
    用户名: pi
    密码: pi

Root用户:
    用户名: root
    密码: fa

9 设置网页超时时间

进入 系统 -> 工作台,设置"自动登出"时间。

10 通过ssh登录

ssh pi@YourIPAddress

pi用户的初始密码为 pi

11 更新用户密码

sudo passwd root
sudo passwd pi

12 配置网络与时区

用root用户登录ssh:

ssh root@IPAddress

执行如下命令:

omv-firstaid

界面如下:
Omv-firstaid.png

13 切换国内软件源

sudo sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update

14 配置硬盘

(注:如果硬盘之前已经初始化,无需重新擦除,RAID可以得到保留,直接挂载即可)
请参考 #系统重装后恢复硬盘数据

14.1 第一步:清除硬盘

注意备份你的数据
进入 存储器 -> 磁盘,选中你的存储器,点击“擦除"图标进行擦除,一般选“快速”即可。
如果硬盘无法擦除,你需要先移除此硬盘上的共享文件夹并取消挂载。

14.2 第二步:创建文件系统

本章节所介绍的两种Raid配置的区别:

  • MD RAID:性能更好,因为它在并行写入和读取分块方面做得更好。
  • Btrfs RAID:数据安全性更好,因为校验和使其能够确定块的哪个副本出错,当只有一个副本出错时,并且它能够判断两个副本是否都有问题。

注:不支持为USB接口的硬盘创建RAID队列, 更详细内容请参考官方指南: RAID

14.2.1 方案1: 配置MD RAID

  • 进入 存储器 -> 多重装置,点击“+”图标,在"级别"一栏选择RAID级别,在"设备"一栏钩选存储设备,保存后,状态如下所示:
Omv-raid-resyncing.png

你需要等待状态从 resyncing 转为 clean,完成后如下图所示:

Omv-raid-clean.png

  • 进入 存储器 -> 文件系统,点击“+”,类型建议选择"BTRFS",选择"Single"并在"设备"栏中钩选你的存储设备,如果在上一步中创建了RAID,设备名是以"/dev/md"开头的,如果你的设备在"设备"栏中没法列出,可能是设备中已存在共享文件夹等数据,尝试点击 图标直接挂载,如果数据可以被丢弃,则可以考虑使用如下命令擦除硬盘数据:
# 注意:硬盘中的所有数据将会丢失
sudo wipefs --all /dev/mdX

/dev/mdX需要换成真实的设备,通过"cat /proc/partitions"命令查看。

  • 格式化完成后,OpenMediaVault 将提示您挂载该设备。

14.2.2 方案2: 配置Btrfs RAID

  • 进入 存储 -> 文件系统,点击 "+" 图标,选择 "BTRFS",选择 RAID 级别,选择您的硬盘,然后保存设置。
  • 格式化完成后,OpenMediaVault 将让您选择要挂载的文件系统,它不会列出RAID阵列中的所有硬盘,选择位于阵列中的其中一个硬盘即可。

14.2.3 方案3: 不使用RAID阵列

  • 进入 存储 -> 文件系统,点击 "+" 图标,选择 "BTRFS",选择 Single 级别,选择您的硬盘,然后保存设置。
  • 格式化完成后,OpenMediaVault 将提示您挂载该设备。

15 创建共享文件夹

进入存储器 -> 共享文件夹,添加"+"图标创建2个文件夹,名称分别为nfssamba,我们接下来将用这些文件夹来测试nfs和samba共享。
(注:如果硬盘中存在同名的共享文件夹,重新创建同名的文件夹,数据会得到保留)

16 创建NAS用户

Debian系统的用户或通过命令行创建的Linux会缺少诸如samba之类服务的访问权限,因此这里推荐使用OpenMediaVault界面创建一个用户用于访问samba和nfs共享,这里我会创建一个名为nasuser的用户和组:

  • 点击用户 -> 用户组,点击 "+" 图标创建一个名为 nasuser 的用户组。
  • 点击用户 -> 用户,点击 "+" 图标后创建一个名为 nasuser,Shell选择/usr/sbin/nologin, 用户组钩选nasuserusers的用户。

17 创建Samba共享

  • 点击服务 -> SMB/CIFS -> 设置, 钩选最上面的 "已启动", 最低协议版本选择 "SMB1",然后点 "保存";
  • 点击服务 -> SMB/CIFS -> 共享, 点击 "+" ,在 "Shared folder" 处选择要共享的文件夹,这里我选择samba文件夹。

测试访问:
在Mac系统下右击Finder,选择连接服务器后输入 smb://YourIPAddress(换成真实IP),会弹出验证对话框,输入用户名nasuser以及密码即可以访问。

18 创建NFS共享

  • 点击"服务" -> "NFS" -> "设置", 钩选最上面的 "已启动", 在"版本"一栏中,钩选所有版本包括“NFSv2”,然后点 "保存"并应用设置;
  • 点击"服务" -> "NFS" -> "共享", 点击 "+" ,在 "Shared folder" 处选择要共享的文件夹,这里我选择 nfs 文件夹。在客户端一栏中输入 192.168.1.0/24 (换成真实网段,或指定仅允许访问的IP),权限处选择 "读/写",在扩展选项中输入:
rw,async,insecure,no_subtree_check,all_squash,anonuid=0,anongid=0

然后点 "保存"并应用设置;

18.1 Mac下测试挂载NFS

命令行查看OpenMediaVault的NFS共享信息

# showmount -e YourIPAddress
Exports list on YourIPAddress:
/export                             192.168.1.0/24
/export/nfs                         192.168.1.0/24

在Mac上右击Finder,选择连接服务器,在地址栏输入

nfs://YourIPAddress/export/nfs

18.2 Linux下测试挂载NFS

安装软件包

sudo apt install nfs-common

挂载

sudo mount -t nfs YourIPAddress:/export/nfs /mnt/nfs

查看状态

# df -h | grep nfs
YourIPAddress:/export/nfs  7.3G  3.5M  6.8G    1% /mnt/nfs

设置开机自动挂载,添加如下内容到 /etc/fstab

YourIPAddress:/export/nfs /mnt/nfs nfs defaults 0 0

19 Docker的使用

19.1 将Docker数据移动至硬盘

先安装openmediavault-compose插件, 通过SSH登录然后执行如下命令:

sudo apt update
sudo apt install -y openmediavault-compose

刷新网页后,进入存储器 -> 共享文件夹,添加 "+" 图标创建3个文件夹,分别为

docker            -> Docker数据目录,在/etc/docker/daemon.json中定义
docker-compose    -> Location of compose files
docker-data       -> Location of persistent container data
docker-app        -> 自用,存放Dockerfile和数据

进入服务 -> Compose,进入设置界面,设置"Compose 文件"的Shared folder为docker-compose, 设置"Data“的Shared folder为docker-data,

进入ssh终端,输入以下命令,将docker数据移动到共享文件夹, 其中,/srv/dev-disk-by-uuid-XXYYZZ/docker 是共享文件夹的绝对路径,可以在网页 存储器 -> 共享文件夹 列表中得到:

su root
systemctl stop docker.socket docker.service
mv /var/lib/docker/* /srv/dev-disk-by-uuid-XXYYZZ/docker/

在页面上设置 Docker存储 为该docker共享文件夹的绝对路径,保存并应用后, 重启开发板。
GUI 上填写的最终数值:

Compose Files's Shared folder  -> on /dev/md0, docker-compose
Data's Shared folder           -> on /dev/md0, docker-data
Docker's Docker storage        -> on /srv/dev-disk-by-uuid-XXYYZZ/docker/

19.2 Docker安装nextcloud网盘

命令行界面输入以下命令即可:

su root
cd $(readlink -f /srv/dev-disk-by-uuid-*/docker-app)
mkdir nextcloud
cd nextcloud
mkdir data
 
docker run -d -p 8888:80  --name nextcloud \
    -v $PWD/data:/var/www/html --restart=always \
    --privileged=true  arm64v8/nextcloud

完成后在网页浏览器访问http://YourIPAddress:8888/即可看到nextcloud网盘的页面,如果无法访问,建议重启一下设备。

19.3 Docker安装Filebrowser

命令行界面输入以下命令即可:

su root
cd $(readlink -f /srv/dev-disk-by-uuid-*/docker-app)
mkdir filebrowser
cd filebrowser
 
docker run -d -v $(readlink -f /srv/dev-disk-by-uuid-*):/srv \
    -v $PWD/filebrowserconfig.json:/etc/config.json \
    -v $PWD/database.db:/etc/database.db -p 8080:80 \
    --restart=always --name filebrowser \
    filebrowser/filebrowser

完成后在网页浏览器访问http://YourIPAddress:8080/即可看到Filebrowser的页面,默认管理员的帐号与密码都是admin。

19.4 Docker安装Jellyfin影音服务器

进入 存储器 -> 共享文件夹,添加 "+" 图标创建media文件夹用于存放影音资源,然后在命令行终端输入以下命令安装Jellyfin:

su root
cd $(readlink -f /srv/dev-disk-by-uuid-*/docker-app)
mkdir jellyfin
cd jellyfin
mkdir config cache
 
docker run -d --name jellyfin \
-v $PWD/config:/config \
-v $PWD/cache:/cache \
-v $(readlink -f /srv/dev-disk-by-uuid-*/media):/media \
-p 8096:8096 \
--restart=always \
jellyfin/jellyfin

完成后在网页浏览器访问http://YourIPAddress:8096/即可看到Jellyfin的页面。

19.5 安装Docker可视化容器管理工具Portainer

命令行界面输入以下命令即可:

su root
cd $(readlink -f /srv/dev-disk-by-uuid-*/docker-app)
mkdir portainer
cd portainer
mkdir data
 
docker run -d \
  --name portainer \
  --restart=always \
  -e TZ=Asia/Shanghai \
  -p 8000:8000 \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $PWD/data:/data \
  portainer/portainer-ce:latest

完成后在网页浏览器访问http://YourIPAddress:9000/即可看到Portainer的页面,默认管理员的帐号与密码都是admin。

20 系统的备还与还原

20.1 备份eMMC中的系统

使用tar命令备份文件系统的内容:

su root
cd /
tar --warning=no-file-changed -cvpzf /rootfs.tar.gz \
    --exclude=/rootfs.tar.gz --exclude=/var/lib/docker/runtimes \
    --exclude=/etc/firstuser --exclude=/etc/friendlyelec-release \
    --exclude=/usr/local/first_boot_flag --one-file-system /

20.2 还原系统到eMMC

使用SD卡启动,启动Linux系统(例如Debian或Ubuntu均可),使用如下命令查询eMMC上的系统根分区:

root@CM3588:~# sudo parted -s /dev/mmcblk2 unit MiB print | grep rootfs
 8      140MiB   59000MiB  58860MiB  ext4         rootfs

根据上面的序号8可以得知根分区的设备名为/dev/mmcblk2p8,下面对它重新格式化并挂载,然后解压rootfs.tar.gz到此处:

sudo mkfs.ext4 /dev/mmcblk2p8
sudo mkdir /mnt/rootfs
sudo mount /dev/mmcblk2p8 /mnt/rootfs
sudo tar xvzfp /path/to/rootfs.tar.gz -C /mnt/rootfs --numeric-owner --same-owner
sudo poweroff

关机后,拨出SD卡,重新上电从eMMC启动系统。

21 系统重装后恢复硬盘数据

  • 进入 存储器 -> 文件系统, 点击 图标,在 文件系统 一栏选择你的设备,点保存。
  • 进入 存储器 -> 共享文件夹, 创建同名共享文件名,例如本文示例中的nfs, samba, docker, docker-app, docker-compose和docker-data。

22 常见问题与解决办法

22.1 问题: Raid阵列出现如下状态Clean, Resyncing (PENDING)

Execute following command to switch array to read-write state and begin resync process:

mdadm --readwrite /dev/md0

More details → How to clear up pending resync on RAID array

22.2 问题: 挂载文件系统时,未列出存储设备

先使用如下命令擦除硬盘数据:

# 注意:硬盘中的所有数据将会丢失
sudo wipefs --all /dev/mdX

23 OpenMediaVault软件包一览

你可以使用apt命令安装OpenMediaVault的软件包,例如:

apt install openmediavault-diskstats

这是每个软件包的功能列表:
openmediavault-diskclone: 用于克隆磁盘的工具。
openmediavault-diskstats: 显示磁盘使用统计信息的工具。
openmediavault-downloader: 下载管理器,用于管理下载任务。
openmediavault-fail2ban: 防火墙软件,用于防范暴力攻击。
openmediavault-filebrowser: 文件浏览器,用于浏览和管理文件。
openmediavault-flashmemory: 用于将系统日志和临时文件存储在内存中以减少对磁盘的写入。
openmediavault-forkeddaapd: 支持 iTunes 的 DAAP 服务器。
openmediavault-ftp: FTP 服务器,用于文件传输。
openmediavault-kernel: 内核更新工具。
openmediavault-kvm: 虚拟化解决方案,用于运行虚拟机。
openmediavault-locate: 文件搜索工具。
openmediavault-luksencryption: 提供磁盘加密功能。
openmediavault-lvm2: 逻辑卷管理器。
openmediavault-mergerfs: 提供 Union 文件系统功能,将多个文件系统合并成一个逻辑文件系统。
openmediavault-minidlna: DLNA 服务器,用于在网络上共享媒体文件。
openmediavault-nut: 用于监控 UPS(不间断电源系统)的网络通信软件。
openmediavault-omvextrasorg: 提供额外的插件和软件包。
openmediavault-onedrive: 用于与 OneDrive 云存储服务进行集成。
openmediavault-owntone: 用于配置 UPnP/DLNA 媒体服务器。
openmediavault-photoprism: 相片管理软件。
openmediavault-remotemount: 远程挂载管理器。
openmediavault-resetperms: 重置文件和文件夹权限的工具。
openmediavault-rsnapshot: 快照备份工具。
openmediavault-s3: S3 存储服务插件。
openmediavault-sftp: SFTP 服务器。
openmediavault-shairport: AirPlay 音频服务器。
openmediavault-sharerootfs: 允许共享根文件系统的工具。
openmediavault-snapraid: SnapRAID 数据保护工具。
openmediavault-snmp: SNMP(简单网络管理协议)插件。
openmediavault-symlinks: 符号链接管理工具。
openmediavault-tftp: TFTP(Trivial File Transfer Protocol)服务器。
openmediavault-tgt: iSCSI 目标服务器。
openmediavault-usbbackup: USB 备份插件。
openmediavault-wakealarm: 用于通过计划的时间唤醒系统的工具。
openmediavault-webdav: WebDAV 服务器。
openmediavault-wetty: Web 终端工具。
openmediavault-wireguard: WireGuard VPN 插件。
openmediavault-wol: Wake-on-LAN 工具。
openmediavault-anacron: 任务调度工具。
openmediavault-apttool: APT(Advanced Package Tool)管理工具。
openmediavault-autoshutdown: 自动关机工具。
openmediavault-backup: 备份工具。
openmediavault-borgbackup: BorgBackup 工具。
openmediavault-clamav: ClamAV 来检测恶意软件和病毒的防病毒软件。
openmediavault-compose: Docker Compose 工具。
openmediavault-cputemp: 用于监控 CPU 温度的工具。
openmediavault-zfs: ZFS 文件系统支持插件。