refer to: https://www.freehao123.com/raspberry-pi-nas/
手里有一个树莓派Raspberry Pi 2,正好还有一个空闲的移动硬盘,寻思着把这树莓派Raspberry Pi 和移动硬盘给利用起来,搭建一个低成本的NAS。正好前段时间折腾着Nextcloud离线下载搭建方法,Aria2安装在树莓派Raspberry Pi 也是一个很简单的事情。
然后,在树莓派Raspberry Pi 挂载移动硬盘,利用Aria2离线挂机下载资源到硬盘中,再利用Kodi播放器可以读取SFTP、FTP或Http服务器里的文件的特点,直接播放树莓派Raspberry Pi 硬盘中的视频。这样一个简单的家庭影视共享NAS存储就这样完成了。
实际使用的过程中还是插不错的,没钱购买专业的NAS存储设备,综合利用一下正在“吃灰”的树莓派、移动硬盘、网线等还是挺不错的。树莓派Raspberry Pi 安装过程还是挺简单的,这篇主要是整理一下自己在操作过程中遇到一些问题,例如移动硬盘挂载、USB无线网卡、读取权限等。
更多的有关于搭建网络存储和云盘的文章,有兴趣的朋友还可以看看:
Nextcloud离线下载搭建方法-整合Aria2和AriaNg、Aria2 WebUI实现离线下载
Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步
Linux VPS挂载Google Drive和Dropbox-实现VPS主机数据同步备份
一、树莓派软件安装卸载命令
树莓派官方系统Raspbain Jessie With PIXEL ,就是基于Debain 8深度定制的,所以直接使用我们在Linux VPS上用的命令即可,例如LNMP环境搭建都没有问题。这里整理出一些常用的命令:
常用apt命令列表
apt-cache search # ------(package 搜索包)
apt-cache show #------(package 获取包的相关信息,如说明、大小、版本等)
sudo apt-get install # ------(package 安装包)
sudo apt-get install # -----(package - - reinstall 重新安装包)
sudo apt-get -f install # -----(强制安装?#"-f = --fix-missing"当是修复安装吧...)
sudo apt-get remove #-----(package 删除包)
sudo apt-get remove -purge # ------(package 删除包,包括删除配置文件等)
sudo apt-get autoremove --purge # ----(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
sudo apt-get update #------更新源
sudo apt-get upgrade #------更新已安装的包
sudo apt-get dist-upgrade # ---------升级系统
sudo apt-get dselect-upgrade #------使用 dselect 升级
apt-cache depends #-------(package 了解使用依赖)
apt-cache rdepends # ------(package 了解某个具体的依赖?#当是查看该包被哪些包依赖吧...)
sudo apt-get build-dep # ------(package 安装相关的编译环境)
apt-get source #------(package 下载该包的源代码)
sudo apt-get clean && sudo apt-get autoclean # --------清理下载文件的存档 && 只清理过时的包
sudo apt-get check #-------检查是否有损坏的依赖
如果使用 apt-get 遇到速度慢或者源不存在等错误,可能需要更换源,请参考(wzfou.com)本文的第二部分。
aptitude 命令
aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。以下是笔者总结的一些常用 aptitude 命令,仅供参考。
aptitude update 更新可用的包列表
aptitude upgrade 升级可用的包
aptitude dist-upgrade 将系统升级到新的发行版
aptitude install pkgname 安装包
aptitude remove pkgname 删除包
aptitude purge pkgname 删除包及其配置文件
aptitude search string 搜索包
aptitude show pkgname 显示包的详细信息
aptitude clean 删除下载的包文件
aptitude autoclean 仅删除过期的包文件
当然,你也可以在文本界面模式中使用 aptitude。
deb软件包
dpkg -i xxx.deb #安装deb软件包
dpkg -r xxx.deb #删除软件包
dpkg -r –purge xxx.deb # 连同配置文件一起删除
== dpkg -P xxx.deb # 彻底的卸载,包括软件的配置文件
dpkg -info xxx.deb # 查看软件包信息
dpkg -L xxx.deb # 查看软件安装到什么地方
dpkg -l # 查看系统中已安装软件包信息
dpkg -s package # 查看软件包的详细情况,包括版本,依赖之类的
dpkg -S keyword #搜索所属的包内容
dpkg -c package.deb #列出 deb 包的内容
dpkg -C #查找只有部分安装的软件包信息
dpkg -p package-name #显示包的具体信息
dpkg –unpack package.deb #解开 deb 包的内容
dpkg –configure package #配置包
dpkg-reconfigure xxx # 重新配置软件包
# 清除所有已删除包的残馀配置文件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
# 如果报如下错误,证明你的系统中没有残留配置文件了,无须担心。
dpkg: –purge needs at least one package name argument
dpkg –clear-avail #删除软件包的Avaliable信息
dpkg –help #显示帮助信息
dpkg –compare-versions ver1 op ver2 #比较同一个包的不同版本之间的差别
dpkg –licence (or) dpkg –license #显示dpkg的Licence
dpkg –version #显示dpkg的版本号
dpkg -b direc×y [filename] #建立一个deb文件
dpkg安裝的可以用apt卸载,反之亦可。
二、树莓派更换更新源方法
树莓派 Raspberry Pi自带的更新源在国内打不开,我们可以更换为国内的镜像。首先编辑 /etc/apt/sources.list 文件,这里推荐就用系统自带的 nano 命令编辑,命令如下:
sudo nano /etc/apt/sources.list
进入编辑界面,删除原有的内容,粘贴如下内容:
deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib rpi
更新软件索引清单
sudo apt-get update
比较索引清单更新依赖关系
sudo apt-get upgrade -y
补充:完成上述操作后你还需要把sources.list.d文件夹内raspi.list的源注释掉。更多的镜像源可以在这里找到:http://www.raspbian.org/RaspbianMirrors
三、树莓派启用root登陆账户
树莓派更换更新源可以解决软件依赖问题,但是有时我们需要用到Root权限才可以安装某些软件。当需要root权限时,由默认账户经由sudo执行,Raspberry pi 系统中的Raspbian。默认主机名是 raspberrypi 默认用户是 pi 密码为 raspberry
为了方便折腾,建议第一时间启用 ROOT 账号,只需要执行一下两句命令即可:
// 重新开启root账号,可由pi用户登录后,执行此命令后系统会提示输入两遍的root密码,输入你想设的密码即可。
pi@raspberrypi:~$ sudo passwd root
Enter new UNIX password: #输入第一遍密码
Retype new UNIX password: #输入第二遍密码
// 启用 root 账号登录
pi@raspberrypi:~$ sudo passwd --unlock root
passwd: password expiry information changed.
输入上面第一行代码 第二行是提示错误的代码。原因是 新版本s-s-h默认关闭root登陆 你可以修改一下s-s-h的配置文件。
pi@raspberrypi:~$ sudo nano /etc/ssh/sshd_config
Ctrl + W 快捷键 搜索 PermitRootLogin without-password,修改 PermitRootLogin without-password 为 PermitRootLogin yes,Ctrl + O 快捷键 保存,Ctrl + O 快捷键 退出 Nano 编辑器。 执行完之后,用 reboot 命令重启,这样就可以解锁root账户。
四、树莓派手动挂载移动硬盘或U盘
Raspberry Pi 官网提供的操作系统目前已经可以自动挂载移动硬盘或者U盘了,如果你使用的是其它的操作系统无法自动识别并挂载硬盘或U盘,你可以采用手动挂载的方式。通常我们在 /mnt 或 /media 目录下新建一个目录作为挂载点。比如:
sudo mkdir /mnt/1GB_USB_flash
sudo mount -o uid=pi,gid=pi /dev/sda1 /mnt/1GB_USB_flash // 用完之后卸载
sudo umount /mnt/1GB_USB_flash
sda1 是取决于你的实际情况,a表示第一个硬盘,1表示第一个分区。
挂载exFAT格式的硬盘
FAT 格式U盘 mount 本身就能支持,但如果你的U盘或移动硬盘使用的是 exFAT 格式,mount 会说不支持。没关系,安装 exfat-fuse 软件之后 mount 就支持了。
sudo apt-get install exfat-fuse
如果想开机自动挂载,而不是每次手工执行,可以编辑 /etc/fstab 文件。比如在末尾添加一行:
/dev/sda1 /mnt/usbdisk vfat rw,defaults 0 0
挂载NTFS格式的硬盘(读写方式挂载)
默认挂载NTFS格式的硬盘只有只读权限,需要借助其它工具实现。
#安装所需软件包
sudo apt-get install fuse-utils ntfs-3g
#加载内核模块
modprobe fuse
#编辑fstab让移动硬盘开机自动挂载
sudo nano /etc/fstab
#在最后一行添加如下内容
/dev/sda1 /mnt/myusbdrive ntfs-3g defaults,noexec,umask=0000 0 0
#保存重启,即可生效
挂载FAT32格式的硬盘
#创建挂载点
sudo mkdir /mnt/myusbdrive
#编辑fstab让移动硬盘开机自动挂载
sudo nano /etc/fstab
#在最后一行添加如下内容
/dev/sda1 /mnt/myusbdrive auto defaults,noexec,umask=0000 0 0
#保存重启,即可生效
说明:
sda1是取决于你的实际情况,a表示第一个硬盘,1表示第一个分区。
umask=0000 0 0
前面四个0就是对所有人,可读可写可执行,
后面两个0,第一个代表dump,0是不备份
第二个代表fsck检查的顺序,0表示不检查
卸载:sudo umount /mnt/myusbdrive
查看挂载情况可使用以下命令。 cd /mnt/myusbdrive ,然后:ls
五、树莓派移动硬盘供电不足
我在使用树莓派2接移动硬盘时出现了供电不足的问题,主要表现就是挂载不稳定,移动硬盘出现“咔咔”的吃亏。目前的解决办法有:
硬件法:
买一个USB-HUB,相当于给移动硬盘提供一个电流源。
软件法1:
更改树莓派配置,路径是:boot/config.txt,这里面包含了一些树莓派的初始配置。只要在最后面加上max_usb_current=1就行了。打开终端,进入到boot文件夹下,执行如下:sudo nano config.txt
然后添加max_usb_current=1,ctrl+x保存。 输入reboot重启,插上移动硬盘,如果没识别出来,就多插几次。
软件法2:
在软件法1中的文件末尾添加 safe_mode_gpio=4。
软件法3:
把你的移动硬盘格式化成ext格式的,ext3或4都可以。这样插上树莓派就可以被识别。
格式化方法如下:
首先,如果移动硬盘已经挂载,先取消挂载:sudo umount /xxxmnt/xxxusb_flash。接着执行sudo fdisk -l查看你的u盘的序号,通常是/dev/sdb之类的,U盘分区通常是/dev/sdb1。
最后,执行格式化操作:
sudo mkfs.ext4 /dev/sda1 # 格式化为ext4分区
sudo mkfs.ext3 /dev/sda1 # 格式化为ext3分区
sudo mkfs.ext2 /dev/sda1 #格式化为ext2分区
特别注意:格式化后你的移动硬盘时面的东西就都清除了,在格式化以前最好做好备份。
六、树莓派整合Aria2和AriaNg离线下载
Raspberry Pi 整合Aria2和AriaNg、Aria2 WebUI实现离线下载方法很简单,参考:在VPS上安装Aria2。
七、树莓派搭建FTP服务器(vsftpd)
如果使用Kodi这样的播放器是可以直接使用SFTP登录并浏览文件的,但是我们也可以使用FTP登录的方式来读取文件。首先在树莓派安装vsftpd服务器 (约400KB)
sudo apt-get install vsftpd
启动ftp服务
sudo service vsftpd start
编辑vsftdp的配置文件
sudo nano /etc/vsftpd.conf
找到以下行,定义一下
anonymous_enable=NO
表示:不允许匿名访问
local_enable=YES
设定本地用户可以访问
write_enable=YES
设定可以进行写操作
local_umask=022
设定上传后文件的权限掩码
chroot_local_user=YES
修改访问目录,新增一行
local_root=/var/www/
# anon_root=/var/www/tmp
# local_root 针对系统用户;anon_root 针对匿名用户
注:FTP用户根目录权限是555(dr-xr-xr-x),权限设置成777登陆不了
重启vsftpd服务
sudo service vsftpd restart
测试一下, OK。通过ftp连接树莓派系统,用户名:pi,密码是raspberry
八、树莓派搭建NAS服务器(Samba)
安装 samba 和 samba-common-bin
sudo apt-get install samba samba-common-bin
sudo apt-get install netatalk (可选,用于支持AFP)
sudo apt-get install avahi-daemon(可选,用于支持网内的计算机自动发现)
配置/etc/samba/smb.conf文件
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
sudo vi /etc/samba/smb.conf
[share]
#共享文件的名称,将在网络上以此名称显示
path = /samba #共享文件的路径
valid users = root pi #允许访问的用户,比如我的raspi有
#root 和 pi 两个用户
browseable = yes #允许浏览
public = yes #共享开放
writable = yes #可写
启动 重启
sudo smbd
sudo smbd restart
九、树莓派启用USB无线网卡
Raspberry Pi 2使用Raspbain Jessie With PIXEL 树莓派官方系统,基于Debain 8,带PIXEL图形界面,下载最新版:https://downloads.raspberrypi.org/raspbian_latest。
经过我的测试,最新版的Raspbain Jessie 操作系统支持360 / 小米 / 百度 随身wifi,如果你正好有一个的话插上去就可以使用 USB无线网卡了。
十、总结
我在树莓派Raspberry Pi 打造低成本NAS存储操作过程中,首先遇到的问题移动硬盘挂载的问题,默认的NFT格式虽然可以挂载到Raspberry Pi 上,但是由于是Windows硬盘格式,无法在Linux中修改权限,最终导致Aria2离线下载无法往硬盘中写数据。
绕好大一个圈,终于决定将移动硬盘格式为Ext4,这样Raspberry Pi 就可以直接识别并挂载了。Windows上读取Ext4格式的移动硬盘可以使用Ext2 Volume Manager,Ext2Fsd等软件,支持在Windowsext2/ext3文件系统的读写。