大概是2014年的时候,出于好奇,买了一个树莓派的二代产品。期间,曾经将它改造成为过影音播放器(类似于电视盒子)、游戏机等等,但都没什么大的作用,后来就一直放在角落处吃灰。
这段时间以来,家里的电子产品越来越多,对于共用存储的要求也越来越大,于是就想着要建一个NAS。看到过网上介绍的用树莓派实现的案例很多,也就决定将吃灰的树莓派找出来,改造一个。
树莓派一只,网线一根(3代以前的没有板载的WIFI),移动硬盘一只。
由于改造的目标只是一个用于后台服务的NAS,不需要图形界面,且板子年代久远,如果安装官方提供的系统的话,会比较的耗资源。因此决定安装Archlinux。其安装过程也比官方系统简单,具体如下:
1.SD卡分区
Linux下可使用cfdisk /dev/sdX,将SD卡分成两个分区,一个是大约100M左右,另一个就是SD卡剩下的所有空间。
2.格式化分区
根据系统需要,将SD卡上的第一个分区(100M)格式化为FAT格式,Linux下可使用mkfs.vfat /dev/sdX1;将第二个分区格式化为ext4格式,Linux下可使用mkfs.ext4 /dev/sdX2。
3.挂载分区
建立一个临时目录,并在其中建立两个文件夹,分别命名为boot和root。
Linux下可使用mount /dev/sdX1 boot 以及mount /dev/sdX2 root两条命令,将两个分区分别挂载到boot和root下。
4.安装系统
安装系统的过程非常简单,执行以下命令即可。
1 | # wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gz |
至此,系统制作完毕,只需要将SD卡插入树莓派通电即可运行。需要注意的是,此时,只能以用户名alarm(密码同)来登录系统,如果需要使用root账户,可在alarm登录后,使用su(密码为root)进入root账户,编辑/etc/ssh/sshd_config文件,在最后添加PermitRootLogin yes,重启系统或ssh服务即可。
移动硬盘的挂载比较简单,主要通过以下两步:
1.安装ntfs-3g
因为此时的archlinux还是一个非常精简的系统,如果移动硬盘是NTFS格式,还不能辨识挂载,因此需要安装ntfs-3g
2.开机挂载
在/mnt下建立一个文件夹,例如usb作为移动硬盘的挂载点,然后编辑/etc/fstab,在最后加入以下代码:
1 | /dev/sda1 /mnt/usb ntfs-3g user,rw,umask=000 0 0 |
重启系统,此时移动硬盘就挂载到/mnt/usb文件夹下了。
既然是NAS,就肯定要提供共享功能。这一部分,可以参考archlinux Wiki上的指导完成。
1.安装SAMBA
1 | sudo pacman -S samba |
2.获取SAMBA默认配置
1 | wget "https://git.samba.org/samba.git/?p=samba.git;a=blob_plain;f=examples/smb.conf.default;hb=HEAD" -O /etc/samba/smb.conf |
3.建立共享
编辑/etc/samba/smb.conf文件,添加以下内容:
1 | [share] |
4.建立sambashare用户组并配置权限
1 | groupadd sambashare |
5.添加用户到群组中
1 | usermod -a -G sambashare your_username |
6.添加用户并设置密码
1 | smbpasswd -a samba_user |
重启系统后,samba共享就建立好了。手机、智能电视都可以安装ES文件浏览器来访问共享了。
1.aria2的安装
这里的下载服务主要是通过aria2来完成的。因此,首先要安装aria2,可通过sudo pacman -S aria2来安装。
2.aria2的配置
在用户目录下创建一个名为.aria2的文件夹,并在文件夹内建立aria2.conf和aria2.session。
编辑aria2.conf,以其中输入以下内容:
1 | #rpc-user=user |
3.aria2开机自启
将aria2作为系统服务,使其开机自启。在/etc/systemd/system下建立一个名为aria2.service的文件,在其中输入以下内容并保存。
1 | [Unit] |
此时,只需要sudo systemctl enabel aria2.service,就可以将aria2可以作为一个系统服务运行了。
4.WebUI的建立
(1)安装nginx服务器
(2)配置nginx服务器
修改/etc/nginx/nginx.conf中的location部分为以下内容:
1 | location / { |
(3)建立/var/www/html目录
(4)安装WebUI内容
1 | sudo git clone https://github.com/ziahamza/webui-aria2.git /var/www/html/ |
此时,重启nginx服务,就可以通过http://localhost 来浏览WebUI页面了。
由于树莓派运行在家庭网络中,没有公网IP,那如何在外网对其进行管理呢?以下内容需要用户自备一个拥有公网IP的VPS或者服务器。
该部分主要使用的是ssh的反向代理功能,其工作原理通过阅读ssh的参数说明即可了解。
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口
因此,主要使用的是SSH -R的功能,将树莓派的本地端口转发到VPS的远程端口上,再通过VPS的端口进行访问。以下为主要步骤。
1.建立免口令登录
通过以下命令,生成一个ssh的密钥,并传送到VPS上,实现ssh免密码登录
1 | ssh-keygen -t rsa |
2.建立自动登录的服务
在/etc/systemd/system下建立一个名为myssh.service的文件,并在其中输入以下内容。
1 | [Unit] |
启动这个服务。此时,就将本地的22端口映射到了VPS的2222上,将80端口映射到了8081上,将6800端口映射到了6900上。在外网也就可以来管理树莓派了。
由于树莓派处于不间断的工作状态,如果不对移动硬盘的配置进行优化,那么势必会导致移动硬盘也一直处于运行状态,长此以往,会大大降低移动硬盘的寿命。因此,在打造完成NAS基本功能之后,再来对移动硬盘进行一些配置。
1.安装hdparm
2.hdparm的配置
一是加载一条hdparm运行的规则,具体如以下步骤。编辑/etc/udev/rules.d/50-hdparm.rules,并在其中输入:
1 | ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 -S 12 /dev/%k" |
其中:参数B表示设置高级电源管理功能,其值应在1-255之间,值越小意味着越积极的电源管理,越大意味着更好的性能。从1-127表示允许减速,从128-254则表示不会减速,255表示禁用该功能。参数S表示设置驱动器的待机超时,表示在一定时间后就关闭电机,值为0的时候表示禁用,值从1-240之间,是指该值乘以5秒以后的时间,如12表示60秒,从241到251之间,则表示该值乘以30分钟后的时间。
二是可以创建一个服务,让树莓派开机时就运行节能功能。具体可参考以下代码。
1 | [Unit] |
如此,一个可以服务家庭基本应用的NAS就搭建完毕了。