树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

这是第二个章节, 本章节主要讲述树莓派或者个人电脑实现基础的家庭存储服务器功能, 本文会先讲述针对树莓派基础系统的安装, 之后会去讲述在系统上做家庭存储服务器的搭建工作, 可以把这个文章当做恰饭读物, 也可以当做一个教程, 本章节不 docker, 也不依赖太多第三方, 意旨通过最传统的 linux 功能包来实现家庭存储服务器这个功能, 连技术的同时, 让家里吃灰的设备发挥预热; 如果没有看过上一篇, 请点击下面链接查看上一篇文章: 树莓派、个人电脑与一台家庭存储服务器的搭建 (起源)

# 准备工作 #

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

此处代表硬件的前期准备工作, 目前我手里的是 rpi 4b, 所以我以他作为主讲述下面的所有操作, 准备使用台式机的用户, 请先忽略这个段落.

再说一遍: 没有这个设备的只需要看看这段就可以了, 不要购买, 买完为了搭建这个 NAS 不值得.
来自作者婆婆妈妈的嘱咐

树莓派 4b x 1 (内存越大越好) - 16GB tf 存储卡和读卡器 x 1 (读写速度越快越好, 存储卡别有有用的文件, 一会儿得清空) - usb-c 5v 3A 充电器 x 1 (质量越好越好, 因为未来这个小盒子要常年开机不断电) - USB 的鼠标, 键盘 x 1 (2.5g 无线的更好) - HDMI 线与显示器或者电视 - 一台好用, 能上网, 能下载东西, 能插读卡器的电脑 x 1(windows,mac,linux) 都可以

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现) - 第3张图片

下来, 我们以 windows 举例, 我们需要在电脑上安装镜像烧录工具: raspberry pi imager .此步骤电脑用户和树莓派用户都需要做.
官网下载页面: Raspberry Pi OS – Raspberry Pi
进入官网页面, 点击"[ Download For Windows ]"开始下载, 其他两个系统点击对应的下载链接, 下载完成后, 执行安装
如果电脑是 Fedora 等非 Ubuntu,Debian Linux, 忽略此步骤, 或者 Linux 就可以直接忽略下载这个步骤, 因为在 Linux 中, 有更简单的命令可以实现镜像烧录的动作.
写给使用 Linux 作为电脑操作系统的用户

至此, 前期的所有硬件准备工作已经完成, 确保准备烧录的 tf 卡内没有任何重要数据之后, 我们开始下载镜像.

# 下载镜像 #

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现) - 第4张图片 虽然树莓官方目前并没有将 fedora 加入到官方下载的镜像列表中, 但是本着对 fedora 熟悉的原则, 这次依旧选择 fedora 作为我们文件服务器的基础操作系统, 以本人对 fedora 的理解, 目前版本的 fedora 在 x86,x86_64 和 arm 平台都有了特别大的改善.

fedora 官网: Fedora Workstation | The Fedora Project

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

如上图所示, 上图为 fedora 默认桌面环境的官方下载页面, 其中包含两种内容: Fedora Media Writer系统 ISO. Fedora Media Writer: 镜像烧录工具, 并非真正系统, 和 Raspberry Pi Image 差不多, 是用来把 Fedora 操作系统的 ISO 镜像写入 U 盘的工具. 系统 ISO: 真正的操作系统镜像, 作为树莓派用户, 需要选择右侧第二行的"适用于 ARM aarch 64 系统"; 而需要将存储服务器搭建在普通电脑上的用户可以选择第一行"适用于 Intel 和 AMD x86_64 系统"; 然后点击下载小图标开始下载.

关于桌面环境, 是 Linux 的一大特点之一, 区别于 windows, Linux 可以选择不同的桌面环境以便用户能够在图形化下更方便的操作 Linux 操作系统, 我曾经在公众号另一篇文章有说过, 而对于 fedora 来说, 你可以在下载 Fedora 的时候就选择不同的桌面环境. 官方桌面环境列表: https://fedoraproject.org/zh-Hans/spins/

Fedora 的桌面环境

关于 Fedora 图形化的问题, 原本我在实现这个需求的时候, 并没有报太大希望能指望在 rpi 4b 上跑服务的同时再跑一个图形化的界面, 但是后来进行默认安装 (也就是带图形化) 后, 发现内存使用量仅有 2G 不到 (我的是 rpi 4b 8GB 版本), 所以倘若你的 rpi 内存大于等于 4GB 的话, 完全不用去管图形化的资源占用, 毕竟有了图形化之后, 一些基操相对于命令行操作来说会简单一些, 当然低内存版本也可以下载, 一会儿可以把图形化调没了.

你们知道 windows 也有 arm 版本的么? 度娘搜一下如何在 raspberry PI 上安装 windows, 然后连上移动硬盘, 连上网线, 右键选择共享, 就完成了这篇文章的所有需求啦. 不过就失去了折腾的意义了.
对于弱者的忠告
# 系统烧录 #

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

下载完成后, 你会得到一个"Fedora-XXX-40-1.14.aarch64.raw.xz"这样以"raw.xz"结尾的文件, 这个就是系统的镜像啦, 接下来打开 raspberry pi imager, 在界面中间点击"[ 选择操作系统 ]"按钮, 下拉到最底下选择"Use Custom", 然后找到你刚才下载的那个文件并且确认选择, 如上图所示. 然后, 将你的 tf 卡插入读卡器或卡套, 插入到电脑内, 点击 [ NEXT ] 按钮, 跳过配置对话框后, 便开始了漫长的烧录过程, 这个漫长取决于你 tf 卡的读写速度, 你 USB 接口的速度. 下面这段是写给 Fedora 用户和其他 Linux 发行版用户关于如何搞这个镜像的:
# fedora 用户# 看我过之前文章的老铁应该知道这就是安装一个软件dnf install -y arm-image-installer# 然后使用 arm-image-installer 这个程序把镜像搞到你的 tf 卡里面# 简单解释一下: # --image 就是你刚才下载那个 raw.xz 镜像文件放的位置# --target 就是你目标的树莓派平台版本 这里用的 4b 那么就是 rpi4# --media 就是你刚才查到你电脑上那个插了 tf 卡的读卡器, 通过 fdisk -l 看看是哪个磁盘设备# 然后填到这里, 不知道怎么看的公众号回复或者看我之前发的文章有很详细的讲# --resizefs 烧录成功后, 将末端剩余空间分配给系统用.arm-image-installer --image=</path/to/fedora_image> --target=rpi4 --media=/dev/__<sd_card_device> --resizefs
# 非 fedora 的其他 Linux 发行版用户# 先 xzcat 临时解压, 然后通过 dd 块操作写入到你的 tf 卡里面# 大体操作就好比你下个 rar 压缩包, 然后你先得解压出来, 再把解压的东西放到 tf 卡# 但下面这个和手动不一样, 所以按照下面敲# </path/to/fedora_image> 这个位置就是你下载那个 raw.xz 的镜像文件放的位置# of=/dev/XXX 就是你磁盘的设备路径, 通过 fdisk -l 去看xzcat </path/to/fedora_image> | dd status=progress bs=4M of=/dev/XXX# 使用此种方式, 需要在写入完成后调整分区的大小, 否则, 纵使你有 128 个 G# 系统里面显示你也可能只有 10 个 G 左右, 懂我意思吧?# 当然你可以在安装好系统后, 在安装好的系统内执行.
因为制作镜像的时候, 系统以一个最小的标准大小压缩了一个镜像 (raw), 同时被压缩为一个系统镜像的压缩包 (xz). 这样做不但提高了镜像文件在网络上传输的效率, 同时也保证了这个镜像可以在绝大多数的硬件环境上得到释放, 烧录程序操作块将数据从磁盘首部的指定区域将镜像写入磁盘 (tf 卡), 当写入到镜像文件末端后, 如果磁盘仍有空闲区域, --resizefs 将会自动将空闲区域变为系统可用区域, 以保证当前磁盘的最大可用性.
关于--resizefs

# 系统基础配置 # 树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现) - 第7张图片

到此, 系统应该也就进到了你的 tf 卡里面, 可以找个秤称一下, tf 卡是不是重了一些?树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现) 然后... 将 tf 卡插入 rpi 4b 各种线安排上 插电! 开机! 树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现) - 第9张图片

等到系统启动后, 系统会展示安装后的配置向导, 他会让你在这里设置一个新的用户, 设置一下 root 的密码以及其他的一些内容, 设置好之后你便可以进入到系统的桌面. 需要注意的是: 1. 安装后配置第一屏有时候屏幕显示不正常, 但是明显能感觉到鼠标是有反应的, 这种情况是因为驱动不兼容的情况, 这种情况下, 需要在启动菜单那里框点 c, 这样就能进入到启动菜单的内核启动参数那里, 只需要在 vmlinuz 那一行 quiet 后面加一个: xdriver=vesa, 记得 quiet 和 xdriver 中间有空格, 然后使用 F10 执行就可以正常显示了. 2. 后面我们会用到这里创建的新用户.

我安装的 kde 桌面, 可以看到系统已经启动成功了
# 小插曲: VLC 花屏 # 既然进了桌面, 想着要不直接安装一个 vlc 尝试一下直接播放电影的效果, 结果花屏树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

当然这作为一台存储服务器来说, 图形化界面并不是很重要, 所以先忽略这个问题, 有时间再搞这个树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现).

# 基础系统配置 #

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)上图是我已经安装了相关各种功能服务的内存使用情况, 大体来说用了 2 个 G, 还剩下 5.7 个 G 左右, 还好还好树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

 - 开启 ssh 远程服务以及 root 用户 ssh 远程登录 (注释内容)

# 让 ssh 自动启动systemctl enable sshd# 启动 ssh 服务端systemctl start sshd# 防火墙配置firewall-cmd --permanent --add-port=22/tcpfirewall-cmd --reload# 这样如果使用 root 登录, 即便是输入了正确的密码都没法登录, 需要修改# /etc/ssh/sshd_config 中的 PermitRootLogin 为 Yes 才可以# 然后记得保存重启服务器

 - 修改主机名

vi /etc/hostnameHome-NAS# 在第一行输入主机名就成了# 重启生效, 或者通过 hostname -f /etc/hostname 立即生效.

 - 修改网卡 IP

# 这里有三种方法# 1. 使用 nmcli connection 进行修改 nmcli connection modify XXXX ipv4.addresses xxx.xxx.xxx.xxx ...# 2. 使用图形化直接编辑 简单粗暴# 3. 使用 ifconfig XXX 找到指定网卡的 ether MAC 地址, 到路由器给它一个固定的 IP 地址.

 - 一切就绪, 来做系统安装后的第一次更新

dnf update

 - 确认磁盘与空间 毕竟要搞一个磁盘共享的服务器, 所以确保你应该有足够的空间能够让你通过共享的方式把你需要存储的文件放到你足够的空间的分区下.

# 使用你的 root 账户查看你当前的所有磁盘和分区fdisk -lDisk /dev/mmcblk1: 29.72 GiB, 31914983424 bytes, 62333952 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: dosDisk identifier: 0x282f94a7
Device         Boot   Start      End  Sectors  Size Id Type/dev/mmcblk1p1 *       2048  1230847  1228800  600M  6 FAT16/dev/mmcblk1p2      1230848  3327999  2097152    1G 83 Linux/dev/mmcblk1p3      3328000 62333951 59005952 28.1G 83 Linux

Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectorsDisk model: GenericUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: dosDisk identifier: 0xd46f93d4
Device     Boot Start        End    Sectors   Size Id Type/dev/sda1          63 1953525167 1953525105 931.5G 83 Linux

上面这段, 我们看到除了 mmcblk1 这个磁盘是我们安装系统的磁盘之外, 我有一个外接的硬盘 sda, 大小 900 多个 G, 这个就是未来我可以共享存储小片儿之类的磁盘, 我们需要把这个磁盘挂载到先前创建的那个用户的家目录下, 如果我们创建的用户名为 nasuser, 我们使用下面的命令:

# 首先使用 switchuser(su) 命令切换至 nasuser 这个用户下su - nasuser# su 后面跟-和用户名就是切换到这个用户, 如果 su 和用户名中间有-, 就代表加载用户环境变量# 如果 su 后面没有用户名参数, 就是切换到 root 用户# 然后使用 make directory(mkdir) 命令在家目录下创建一个叫做 share 的目录mkdir ~/share# 随后切换到 rootsu -# 将 sda1 分区挂载到刚才创建的 share 上mount /dev/sda1 /home/nasuser/share# 此时默认挂载的 share 下的所有文件 nasuser 可能没法写入, 这时候需要创建 nasuser 能够读写的目录, 或者通过 chmod 进行权限更改.此命令略

以上知识点, 请阅读下面也就是之前发布的文章: Linux 中常见的目录和作用

 - 安装 sama 服务器 核心操作, 这个最关键, 和 windows 共享一样, 这个 samba 的服务端就是实现文件共享的程序, 首先我们需要安装它, 在 fedora 里面, 使用 yum 或者 dnf 来进行安装:

# 下面-y 表示不用交互, 找到直接进行下载安装的意思dnf install samba -y

这个过程会很快, 这个软件大小 3MB 左右, 所以并没有像 windows 一样的下一步下一步下一步完成那种.

 - 配置 SELINUX 想要 samba 这个软件能正常提供服务器, 需要配置 samba 的 SELINUX 配置, 常规来说应该允许 samba 访问家目录和一些常规的目录以及操作, 所以需要下面的操作

setsebool -P samba_enable_home_dirs onsetsebool -P use_samba_home_dirs on

以上两个步骤会允许 samba 使用家目录, 因为我们的目标是创建一个带有基本身份认证功能的文件共享服务器, 而基本的身份认证来自于 fedora 的基本用户认证系统, 我们借助常规 fedora 系统创建的用户来远程访问到该用户的家目录, 所以我们需要配置上述的 SELINUX 配置.

对于其他目录在 SELINUX 模式下的访问, 我们需要给该目录增加 samba_share_t 的上下文, 才能保证目录可以通过 samba 正常访问到, 否则就会出现禁止访问的问题.
经验之谈

 

 - 配置 SAMBA 1 通常情况下, samba 的配置文件在/etc/samba/smb.conf, 对于我们现如今的需求, 我们只需要打开此文件, 确认该文件的 [homes] 标签下和我的一样即可

[homes]        comment = Home Directories        valid users = %S, %D%w%S        browseable = No        read only = No        inherit acls = Yes

 

 - 配置防火墙 fedora 中使用 firewalld 作为基础防火墙, 使用 firewall-cmd 操作防火墙, firewall-cmd 有对 samba 的定式标签, 所以默认情况下, 我们只需要增加对 samba 的放行, 无需知道 samba 用了那个端口

firewall-cmd --permanent --add-service=samba# 我简单解释一下, --permanent 表示永久生效, 不加这个你执行完他就生效了, # 但是重启就没了, 但是你如果加了, 执行完这条命令他不会生效, 你需要执行下面这个命令:firewall-cmd --reload# 执行完上面这个 samba 就被防火墙放行了, 别人就可以访问到了# 同时, 通过--list-services 可看到现在放行的服务, 其他那些命令通过--help 去看firewall-cmd --list-servicesdhcpv6-client ftp mdns samba samba-client ssh# 上面是我的里面开的

 

 - 配置 samba 用户 虽然, 我们是使用 fedora 中的基础用户来做 samba 的用户认证, 但事实上, 默认情况下 samba 会有一套自己的用户验证数据体系, 它并不会直接读取我们的系统用户数据信息, 所以如果我们需要使用我们 fedora 的用户, 还需要做一步所谓的"映射". 操作如下:

smbpasswd -a nasuser# 使用 smbpasswd 命令对 samba 服务做基础用户管理操作.# -a 代表向现有 samba 的验证体系里面添加一个新的用户, 后面的 nasuser 是用户名, 也是 fedora 我们创建的用户New SMB password:Retype new SMB password:# 随后便是让你输入一个通过共享访问的密码, 这里的密码可以与系统用户不一样.

 

 - 终极大招! 启动服务! 如今一切都搞定了! 下面就是见证奇迹的时刻了, 其实也没啥奇迹不奇迹的, 就是个文件共享的功能而已~~

systemctl start smb# systemctl 是系统基操, 用来操作一些系统服务之类的命令# 通过 systemctl start 后面跟一个服务可以启动一个服务, samba 的服务名称叫做 smb# 当然也有 stop 停止,restart 重启之类的, 还可以用 status 检查服务有没有启动.

 

 - 验证环节 在你的另外一台能和这台共享服务器能联通的电脑上, 我们来验证我们刚才搭建的服务是否已经成功了.

Windows 的电脑: 打开文件浏览器, 在地址栏输入: ipnasuser 这里的 ip 地址是你的 nas 的 ip 地址, 后面就是你刚才创建的那个用户名, 如果没有意外, windows 会让你输入验证的用户名和密码, 输入你刚才创建的用户名和密码, 如下图所示:

我的 ip 地址是 192.168.31.224, 用户名是 sensirx, 所以我在地址栏输入了 192.168.31.224sensirx, 便弹出了这个对话框, 这里需要注意的是斜杠方向不能弄反.

输入 smbpasswd 那时候的用户名和密码, 你便看到了你共享的目录, 至此, 我们的验证便成功了

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

上图便是你用户家目录里面的东西, 所创建的 share 里面便是你那块硬盘的分区! 当然为了稳妥起见, 我们需要每次服务器关机重启后, samba 服务都能自动运行, 同时我们的分区都能正常挂载到指定的那个 share 目录中, 我们只需要如下操作

# 让 samba 服务每次开机自动启动systemctl enable smb# 所以停用就是 disable, 以此类推# 然后就是让刚才那个 sda1 分区能正常挂载到/home/nasuser/share 上, 我这里是/home/sensirx/sharevi /etc/fstab/dev/sda1   /home/nasuser/share    ext4   default 0,0# 上面这个就是分区   挂载点      磁盘类型   0,0# 具体可以去看我之前写的文章

关于分区的文章参考: Linux 系统中的硬盘和分区

- iPhone 或者 iPad 假如你的手机或者 ipad 在同一个局域网, 对于苹果的系统来说, 你可以使用自带的"文件"应用远程连接到你的共享服务器上进行文件操作, 如下图所示:

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

操作步骤

1. 打开"文件"应用2. 点击左边栏上面的"..."小圆球3. 点击连接服务器4. 在里面输入 smb://你的 ip 地址5. 然后下一个界面选择注册用户, 同时输入用户名和密码, 点击下一步6. 随后便看到了你的家目录, 点进去就是我上图的样子, 就可以各种操作了.

MacOSX 用户其实同理, 不明白的可以留言.

- 安卓用户 而对于安卓用户, 因为安卓已经将共享功能 (cifs) 从传统的发行版本内核中剔除, 所以绝大多数安卓手机无法通过自身系统进行共享的访问和挂载, 但是大多数诸如"ES 文件浏览器"等文件操作管理软件都含有内置的共享文件访问功能, 我们可以借助这些软件进行共享文件的浏览和操作, 如下图所示:

树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)

至此, 我们完完全全完成了个文件共享服务的搭建, 这个树莓派也变成了一个微型的 NAS 服务器, 我们终于可以把学习资料放到我们的这台 mini-NAS 服务器上, 同时可以躺在床上使用手机查看 NAS 上面所有的资料了呢, 这样我们是不是可以把手机内存的预算放到这台 mini 服务器上呢?树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现) 我曾经思考过这个问题, 我买一块 256G 的硬盘可能需要 300 块, 我买一个 500G 的硬盘可能 400 块, 我买一台 256G 的手机可能 3000 块, 但是我买一台 512G 的手机要 4500 块... 懂我意思吧?

# 后记 # 事实上看过学习过此文章的同学仍旧觉得作者其实就是个坑, 原因在于这台共享服务器虽然能用, 但是进进局限于在这个局域网内是可以用, 并不能实现人在天涯海角都可以远程访问这台文件服务器. 其实确实是这样, 相对于一台 NAS 或者如今市场上的消费型 NAS 来说, 我们的这台文件服务器差得功能还很多, 所以...

我会在接下来的文章中, 陆续实现外网访问等功能.

公众号: CookieX 如果您喜欢此文章, 欢迎点赞并分享给您的朋友. 文章中相关配图仅做学习交流使用, 无意侵犯任何人的权利, 如若冒犯到, 请私信告知, 我会删除相关内容! 也希望您能够关注此公众号.

 

《树莓派、个人电脑与一台家庭存储服务器的搭建(功能实现)》留言数:0

发表留言