家用微主机折腾记

2019/03/20科普#计算机技术#计算机软件#操作系统

很早之前就想在家里弄一个云存储,当时对群晖NAS觊觎已久,但因为贵,迟迟不敢入手。后来受网友启发,翻出闲置十多年的笔记本折腾了一番,此货竟然宝刀未老,最新版的CentOS、Debian、FreeNAS、Webmin等各种系统一装就灵,只可惜毕竟年迈,运行起来有些吃力,功耗也比较高,尤其还不支持千兆局域网,只好作罢。

不久又看到网友们在玩ITX主板,然后像中了毒似的掉进了坑,经多方面权衡,在闲鱼购入一块梅捷Thin Mini N3160主板,为了省钱,将闲置笔记本大卸八块,取出内存和硬盘,开始了坎坷的折腾之路。

旧笔记本的内存条实在太古老,插不上,又把正在用的笔记本内存条拆了,插是插上了,尝试安装Win7、Win10、CentOS、Debian等系统,各种报错,没一个装得上,估计还是内存不兼容,又到网上买了条新的,这回总算点亮,看到了久违的login as。

Debian系统占用资源确实少,开机后内存仅占50M,可问题是,一旦挂上第二块硬盘就启动不了,说找不到sda2,经排查发现是第二块硬盘插上后自动将盘符分配为sda,系统盘由sda变成了sdb。网上的方案大多是通过指定硬盘uuid挂载来解决,但我的系统默认就使用uuid,总之尝试各种挂载方式无一有效,不得已,又改装CentOS,虽然内存消耗多点,开机100M左右,但好在挂载多块硬盘后可以正常启动。硬件折腾完毕,软件折腾刚刚开始,现将过程记录如下,以备不时之需。

一. 安装CentOS系统

CentOS官网 下载镜像文件,通过 Win32DiskImager 工具写入U盘制成启动盘,然后将U盘插入主板,BIOS设置U盘启动,一步步跟随提示安装即可。此过程有图形界面,最好先进行磁盘分区、网络设置和帐户设置,否则对于新手来说后续比较麻烦。安装完成后使用ip addr命令查看本机局域网IP。

二. 开启SSH服务

打开 SSH 配置文件:

vi /etc/ssh/sshd_config

找到文件内容中的Port 22去掉#号注释,找到PermitRootLogin yes去掉#号注释,保存退出,开启服务并设置开机启动:

systemctl start sshdsystemctl enable sshd

三. 设置时区

# 查看系统时间状态timedatectl status# 设置系统时区为上海timedatectl set-timezone Asia/Shanghai

四. 电源管理

如果系统安装在笔记本,默认情况下,合上屏幕盖子后系统会进入休眠状态,SSH就无法登录,所以要对其进行电源管理,裸主板可以忽略。打开配置文件:

vi /etc/systemd/logind.conf

找到HandleLidSwitch=suspend去掉#号注释并改为HandleLidSwitch=ignore,重启logind服务使之生效:

systemctl restart systemd-logind

该配置文件的其他选项说明如下:

  • HandlePowerKey(按下电源键后的行为)
  • HandleSleepKey(按下挂起键后的行为)
  • HandleHibernateKey(按下休眠键后的行为)
  • HandleLidSwitch(合上笔记本盖后的行为)

选项对应的行为说明如下:

  • ignore(什么都不做)
  • poweroff(关机)
  • reboot(重启)
  • halt(挂起,进程关闭)
  • suspend(待机,进程暂停)
  • hibernate(休眠)
  • hybrid-sleep(混合睡眠,为台式机设计)
  • lock(锁屏)

五. 安装网络工具包

最小安装不带ifconfig、netstat等基本的网络命令,为便于维护,先安装网络工具包:

yum -y install net-tools

六. 挂载新硬盘

插上新硬盘后,通过fdisk -l查看分区情况,对未分区的新硬盘假设为sdc进行分区:

fdisk /dev/sdc

按照该命令的提示谨慎操作,然后进行格式化,以ext4为例:

mkfs.ext4 /dev/sdc

最后创建挂载目录进行挂载:

mkdir /mnt/usbmount /dev/sdc /mnt/usb

通过df -Th命令可查看挂载情况。为方便起见,最好设置开机自动挂载,blkid命令可查看硬盘的UUID,显示结果如下:

/dev/sda: UUID="34137ad5-edf6-45db-8242-55a25a1f2c3f" TYPE="ext4"/dev/sdc: UUID="7355193d-6918-4f83-bc6c-94a161771393" TYPE="ext4"

修改配置文件:

vi /etc/fstab

添加以下内容:

UUID=34137ad5-edf6-45db-8242-55a25a1f2c3f /mnt/nas  ext4  defaults  0 0UUID=7355193d-6918-4f83-bc6c-94a161771393 /mnt/usb  ext4  defaults  0 0

七. 设置静态IP

使用ifconfig命令查看网卡名称(例如enp2s0),打开网卡配置文件:

vi /etc/sysconfig/network-scripts/ifcfg-enp2s0

将其中BOOTPROTO="dhcp"改为BOOTPROTO="static",并根据实际情况添加以下内容:

IPADDR=10.0.0.2GATEWAY=10.0.0.1NETMASK=255.255.255.0

保存退出后重启网络:

systemctl restart network

八. Wake On Lan

  1. 进入BIOS,找到相关设置,有的主板叫Wake On Lan,有的叫Wake On PME,设为enabled

  2. ifconfig查看网卡名称,ethtool enp2s0查看wol状态,如果wold则改为g,命令如下:

ethtool -s enp2s0 wol g

但此法重启后失效,打开网络配置脚本:

vi /etc/sysconfig/network-scripts/ifcfg-enp2s0

添加如下内容可确保系统重启依然有效:

ETHTOOL_OPTS="wol g"
  1. 下载WOL远程唤醒工具:地址1 地址2,这两个均为命令行工具,唤醒方式为:
wol [网卡MAC地址]

九. 定时服务

参见 https://docs.zerg.cc/centos/cron-and-backup-in-centos

十. Samba服务

参见 https://docs.zerg.cc/centos/get-started-of-samba

十一. Syncthing服务

参见 https://docs.zerg.cc/centos/get-started-of-syncthing

十二. Web服务

参见 https://docs.zerg.cc/centos/get-started-of-web-services

十三. Transmission服务

参见 https://docs.zerg.cc/centos/get-started-of-transmission

十四. 内网穿透

参见 https://docs.zerg.cc/centos/did-your-intranet-penetrate

十五. MPD服务

我的需求其实很简单:主板接音箱,让手机、电脑、电视上的音频都能从音箱输出,这需要一个支持DLNA渲染的客户端软件(DMR),无奈网上要么在讲 MiniDLNA 服务端(DMS),要么在讲OpenWrt、树莓派、Debian安装 gmediarender,没一个适合CentOS的,费劲巴拉通过各种编译装上了,播放声音有跳跃,便卸了。

后来找到 MPD,Music Player Daemon ,一款服务器端播放软件,虽然不支持UPnP,但好歹满足大部分需求。在服务器安装 MPD(服务端),手机和电脑安装 MPC(客户端)控制其播放。据说该软件内置UPnP Render函数,也有相关的软件支持,如 upmpdcliEasyMPD,但编译安装实在太费劲。

1. 安装ALSA声卡驱动

yum -y install alsa-utils

2. 安装MPD

rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpmyum -y install mpd

3. 修改配置

vi /etc/mpd.conf

修改其中music_directory为音乐文件的路径,指定audio_output为alsa声卡,如下,更多设置参考这里

music_directory "/mnt/nas/MEDIA/Music"audio_output {        type            "alsa"        name            "Protoss ALSA Device"##      device          "hw:0,0"        # optional##      mixer_type      "hardware"      # optional##      mixer_device    "default"       # optional##      mixer_control   "PCM"           # optional##      mixer_index     "0"             # optional}

4. 开放防火墙端口

firewall-cmd --zone=public --remove-port=6600/tcp --permanentfirewall-cmd --reload

十六. 命令别名

# vi ~/.bashrcalias la='ls -a'alias ws='cd /mnt/usb/STATION'# source ~/.bashrc

十七. 系统监控

一开始使用 Netdata,功能确实很强大,界面确实很漂亮,但个人觉得展示的内容有点繁杂,更主要的是无法自定义我想要特别关注的服务、端口等是否正常,于是找到了 Glances,这家伙貌似比较原始,其实五脏俱在,不仅可以定制服务、端口,还可以监控硬盘温度。

安装方式有很多,yum方式无法获取最新版本,pip方式在我的环境下报错,最后改用如下方式:

curl -L https://bit.ly/glances | /bin/bash

安装时间比较长,完成后直接输入glances即可显示监控界面,glances -w可启动Web服务。如需个性化配置,可在~/.config/glances下新建glances.conf文件(该文件默认不存在),内容例如:

# 单独监控memcached进程[amp_memcached]enable=trueregex=.*memcached.*refresh=5countmin=1countmax=2# 单独监控memcached端口[ports]port_1_host=127.0.0.1port_1_port=11211port_1_description=Memcached:11211port_1_timeout=1

如需监控硬盘温度,先安装hddtemp工具yum -y install hddtemp,执行hddtemp -d启动其守护进程(Glances会自动连接该进程端口7634)。设置Web服务开机启动需手动建立脚本:

vi /etc/systemd/system/glancesweb.service

内容如下:

[Unit]Description = Glances in Web Server ModeAfter = network.target[Service]ExecStart = /usr/bin/glances -w -t 5[Install]WantedBy = multi-user.target

保存退出后,执行:

systemctl enable glanceswebsystemctl start glancesweb

至此,漫漫折腾之路算是告一段路。经测试,内网大文件传输速率可稳定在80~100MB/s之间,大量小文件传输速率2~30MB/s不等,Windows可以通过IP或映射网络驱动器访问,电视可以直接扫描到Samba服务,手机可以安装小巧而强大的 Mixplorer 访问,也完全再不想什么FreeNAS、NextCloud了,都太臃肿,太耗资源。