一、概述

众所周知在办公的时候两台电脑之间经常倒数据资料非常麻烦,而NAS可以很好的解决这个问题。树莓派搭建NAS方法有很多,我们之前也拍过直接用Samba、FTP这些来实现NAS功能,但是这些需要你会在命令行进行配置,而且对于新手用起来并不直观方便对于一个NAS系统来说功能也不全,故我们这次用开源的OMV来搭建NAS系统!

目前网上普遍的OMV搭建NAS的教程都比较老了,照着做会出现各种问题,而我们本期教程是在最新树莓派官方系统上做的,大家照着做完全不会有问题,本期的精简视频教程在B站-杨坤树莓派爱好者基地中可以看到,VLOG全程记录视频可以在B站-玩派VLOG看到,欢迎大家三连~

视频教程地址:
哔哩哔哩bilibili:树莓派爱好者基地视频VLOG记录:
哔哩哔哩bilibili:玩派VLOG

二、教程内容

1、树莓派安装系统

这里我们用到的是最新的树莓派官方精简版系统(不能使用带桌面的版本!)

记得点这个设置,在里面需要开启SSH、设置pi账户的密码、配置WIFI的账号和密码


2、固定静态IP

打开路由器后台查看树莓派IP地址

在ssh软件中输入下面命令,配置DHCP文件

sudo nano /etc/dhcpcd.conf

文件中这个位置按照你自己的情况进行修改

然后重启树莓派

 sudo reboot

3、换源

 sudo nano /etc/apt/sources.list

把原来的注视掉,把下面的复制进去

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi


继续

sudo nano /etc/apt/sources.list.d/raspi.list

把原来的注视掉,把下面的复制进去

deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main ui


然后记得更新一下

sudo apt-get updatesudo apt-get upgrade

4、安装OMV

wget  https://cdn.jsdelivr.net/gh/OpenMediaVault-Plugin-Developers/installScript@master/installchmod +x installsudo ./install -n

5、配置OMV

浏览器输入树莓派IP地址就可以进入NAS系统了。

用户名默认为admin,密码为openmediavault

首先在系统设置-工作台里面设置一下登出时间,之前的太短了

把硬盘插在树莓派上,然后快速擦除磁盘

创建文件系统

挂载


创建共享文件夹


配置SMB服务



配置一下一般登陆的用户pi

6、开始使用

WINDOWS上直接添加一个映射

然后就能用了

MAC上打开点前往,然后连接服务器就好了


7、给NAS安个小显示屏

启动树莓派的I2C功能

sudo apt-get install -y python3-smbus
sudo apt-get install -y i2c-tools
sudo raspi-config

按照下面的步骤设置开启i2c功能

重启树莓派

sudo reboot

安装Adafruit-SSD1306库
Adafruit-SSD1306库是基于Python的OLED库,可以用于128*64,128*32像素SSD1306芯片控制的屏幕

sudo apt-get remove  python3-pip
sudo apt-get install  python3-pip
sudo python3 -m pip install --upgrade pip setuptools wheel

安装PIL库,有一些图片处理的程序会用到这个。

sudo apt-get install python3-pil

使用pip安装Adafruit-SSD1306库

sudo pip install Adafruit-SSD1306

再下载一份包含代码示例的库后面用

cd  ~
sudo apt install git
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd ~/Adafruit_Python_SSD1306/examples/

对于屏幕的接线,一定不要接错,树莓派引脚(所有树莓派40针引脚都是这样排列,不需要因为不同版本而改动)如下图所示:

根据屏幕 PCB 上引脚的功能标注接到树莓派上对应的 GPIO 上即可。

屏幕 GND 接树莓派 GND
屏幕 VCC 接树莓派 3V3
屏幕 SDA 接树莓派 SDA
屏幕 SCL 接树莓派 SCL

注意一定不要接反 VCC 和 GND,否则会烧坏屏幕!!!
接上之后通过命令检测是否识别到i2c设备

sudo i2cdetect -y 1

修改一下程序

cd ~
sudo cp ~/Adafruit_Python_SSD1306/examples/stats.py ~/
sudo nano stats.py

把文件里面的内容全替换成下面的内容

import timeimport Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306from PIL import Image
from PIL import ImageDraw
from PIL import ImageFontimport subprocess# Raspberry Pi pin configuration:
RST = None     # on the PiOLED this pin isnt used
# Note the following are only used with SPI:
DC = 23
SPI_PORT = 0
SPI_DEVICE = 0# Beaglebone Black pin configuration:
# RST = 'P9_12'
# Note the following are only used with SPI:
# DC = 'P9_15'
# SPI_PORT = 1
# SPI_DEVICE = 0# 128x32 display with hardware I2C:
#disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)# 128x64 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)# Note you can change the I2C address by passing an i2c_address parameter like:
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, i2c_address=0x3C)# Alternatively you can specify an explicit I2C bus number, for example
# with the 128x32 display you would use:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, i2c_bus=2)# 128x32 display with hardware SPI:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))
# 128x64 display with hardware SPI:
# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))# Alternatively you can specify a software SPI implementation by providing
# digital GPIO pin numbers for all the required display pins.  For example
# on a Raspberry Pi with the 128x32 display you might use:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, sclk=18, din=25, cs=22)# Initialize library.
disp.begin()# Clear display.
disp.clear()
disp.display()# Create blank image for drawing.
# Make sure to create image with mode '1' for 1-bit color.
width = disp.width
height = disp.height
image = Image.new('1', (width, height))# Get drawing object to draw on image.
draw = ImageDraw.Draw(image)# Draw a black filled box to clear the image.
draw.rectangle((0,0,width,height), outline=0, fill=0)
# Draw some shapes.
# First define some constants to allow easy resizing of shapes.
padding = -2
top = padding
bottom = height-padding
# Move left to right keeping track of the current x position for drawing shapes.
x = 0# Load default font.
font = ImageFont.load_default()# Alternatively load a TTF font.  Make sure the .ttf font file is in the same directory as the python script!
# Some other nice fonts to try: http://www.dafont.com/bitmap.php
# font = ImageFont.truetype('Minecraftia.ttf', 8)
def get_cpu_temp():tempfile=open("/sys/class/thermal/thermal_zone0/temp")cpu_temp=tempfile.read()tempfile.close()return float(cpu_temp)/1000
while True:# Draw a black filled box to clear the image.draw.rectangle((0,0,width,height), outline=0, fill=0)# Shell scripts for system monitoring from here : https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-loadcmd = "hostname -I | cut -d' ' -f1"IP = subprocess.check_output(cmd, shell = True ).decode("utf-8")cmd = "top -bn1 | grep load | awk '{printf \"CPU Load: %.2f\", $(NF-2)}'"CPU = subprocess.check_output(cmd, shell = True ).decode("utf-8")cmd = "free -m | awk 'NR==2{printf \"Mem: %s/%sMB %.2f%% \", $3,$2,$3*100/$2 }'"MemUsage = subprocess.check_output(cmd, shell = True ).decode("utf-8")cmd = "df -h | awk '$NF==\"/\"{printf \"Disk: %d/%dGB %s\", $3,$2,$5}'"Disk = subprocess.check_output(cmd, shell = True ).decode("utf-8")# Write two lines of text.draw.text((x, top),       "IP: " + str(IP),  font=font, fill=255)draw.text((x, top+8),     str(CPU), font=font, fill=255)draw.text((x, top+16),    str(MemUsage),  font=font, fill=255)draw.text((x, top+25),    str(Disk),  font=font, fill=255)draw.text((x, top+35),    "Temp: "+str(get_cpu_temp()), font=font, fill=255)# Display image.disp.image(image)disp.display()time.sleep(.1)

为了让stats.py能够开机自动运行,我们可以做下面的配置,这样我们就可以不用通过工具或路由器去查找树莓派的IP地址等信息!!!
修改/etc/rc.local文件

sudo nano /etc/rc.local

在exit 0前面增加一行:

sudo python /home/pi/stats.py &

三、看看效果

sudo python stats.py


从头开始用树莓派做一个NAS【最新超详细教程】相关推荐

  1. 用树莓派PICO做一个桌面时钟超详细教程!

    用树莓派PICO做一个可显示时间和温湿度的桌面时钟 一.概述 二.材料准备 1.树莓派PICO 2.DHT11温湿度传感器 3.DS1302时钟模块(选用) 4.SSD1306屏幕 5.其他材料 三. ...

  2. Docker最新超详细教程——基本操作

    Docker最新超详细教程--基本操作 一.镜像操作 镜像名称 镜像命令 案例一:拉取.查看镜像 案例二:保存.导入镜像 二.容器操作 容器相关命令 容器三个状态 暂停与停止有什么差别? 案例一:创建 ...

  3. Docker最新超详细教程——安装与部署

    Docker最新超详细教程--安装与部署 安装Docker CentOS安装Docker 1. 卸载(可选) 2. 安装yum工具 3. 更新本地镜像源 4. 安装docker 5. 注意事项 关闭防 ...

  4. eclipse+jsp+servlet+sqlserver+tomcat实现增删改查的一个小项目(超详细教程)

    哈喽,大家好,我是冷风,,拖延了一天,实在是太抱歉(虽然也没多少人看我的博客,哈哈) 这个小项目我一共花了五天的时间才把它的功能给完成,因为个人原因,学过的知识已经丢了两年,不过我会在最短的时间学习到 ...

  5. Windows7下JavaEE(jsp开发环境)快速搭建+第一个jsp程序 超详细教程

    下学期就要学JavaEE了,主要的内容是jsp(Java Server Page)的开发.趁着暑假,就想先练练手.第一步要做的就是开发环境的搭建,看上去很麻烦,其实非常简单~ Step1:先从网上下载 ...

  6. 从0到1搭建一个个人网站超详细教程

    前言 如何从0到1搭建一个可以外网访问的项目? 我就用自己的服务器给大家举例,怎么从0到1搭建一个学生和新手可以用来面试的项目,老手也可以回忆一下自己逝去的青春. 服务器在激活的时候会让你选系统,这个 ...

  7. 推特、微博对手Threads软件的下载、注册、使用最新超详细教程

    经过马斯克不断折腾,推特面临用户大量流失的风险,尤其近期限制推文阅读量,更是导致大量用户出走. 于是乎,Meta公司7月6日正式发布对标推特的新社交平台 Threads,当前Threads只能在 iO ...

  8. 用树莓派做一个alibaba-guest

    听说你去过阿里巴巴,那你一定连过Alibaba-guest. 想不想把Alibaba-guest带回家?给家里来做客的客人也用一用,顺带炫一下技术实力?(zhuangbility) now,教你用树莓 ...

  9. 树莓派做一个dns缓存

    树莓派做一个dns缓存 还是转载的别人的, 搭建树莓派上的dns缓存服务首先安装dnsmasq, sudo apt install dnsmasq 之后修改配置文件 vim /etc/dnsmasq. ...

最新文章

  1. 网页解析:如何获得网页源码中嵌套的标签。
  2. 为什么 CPU 访问硬盘很慢?
  3. bash:快速建立python脚本
  4. 网络推广平台详细的介绍为什么要重视内容优化?
  5. ipmitool 中文 帮助 文档
  6. python之抽象一
  7. 二分类吸引子和鞍点的准确率的表达式ca
  8. Html5table控件,Table Web 控件、TableRow Web 控件及TableCell Web 控件
  9. LeetCode_97.交错字符串_没懂
  10. ArrayBlockingQueue, LinkedBlockingQueue, ConcurrentLinkedQueue, RingBuffer
  11. which 命令
  12. 知识图谱最新权威综述论文解读:关系抽取
  13. python数据结构剑指offer-从尾到头打印链表
  14. 第八章 JQuery操作DOM
  15. windows 内核进程的优先级_华为鸿蒙 OS 轻量内核设计理念与关键特性
  16. 电力监控系统的研究与应用
  17. 蜗牛星际安装U-NAS
  18. 装系统:主分区、扩展分区、逻辑分区,引导(启动)分区、系统分区、活动分区
  19. AURIX TC397 Multicore 多核
  20. java多个文件下载之压缩包下载

热门文章

  1. AS中类微信界面设计
  2. 形态学中的开运算和闭运算
  3. supercharge快充_手機快充技術一次看懂: QC、USB PD、 SuperCharge 、SuperVOOC 等4大主流技術解析...
  4. 密码输入框小眼睛的实现
  5. 机器学习实战-决策树(二)Python实现
  6. Barsetto百胜图自助售卖咖啡机——这台咖啡机有点酷
  7. Word 2016 通过尾注插入参考文献和修改尾注编码方式:
  8. EAS 分录设置默认值(删除分录监听也能用 把新增分录,插入分录监听去掉。 如果想再用新增分录监听 就再注册一个方法再onload再用)
  9. 知识图谱有哪些应用领域?
  10. UML测试题(用例规约)