通过chroot将OpenWrt和OpenMediaVault合体

OpenWrt和OpenMediaVault,一个是路由器软件,另外一个是NAS系统。如何让路由器获得完整的NAS功能呢?

一、简介

(OpenMediaVault在文中有时被简称为OMV)

先不废话,上图,no图no bb
Openwrt里的进程列表,正在运行omv的组件

希望使用者有一定Linux基础

教程仅供参考,请实验安全后再向nas中添加数据,出现数据丢失,硬件损坏,出现经济损失等问题本人不负任何责任,教程仅供参考。请在使用前了解风险,数据珍贵,无法挽回。

首先本教程仅适用于OpenWrt X86版,并存在一些小问题,教程仅供参考需要一定Linux基础。
先上个图,no图no bb(图可能在最后了。。新人第一次发帖第一次写教程,多包涵。。)
再上教程(可能也在附件里了。。)
教程仅用作抛砖引玉作用,不希望作为商业用途,欢迎大家跟帖讨论解决问题

OpenWrt和OpenMediaVault合体是路由和NAS的合体,可以提供强大的功能,OpenMediaVault上门有丰富的插件,具体请搜索一下。
OpenWrt上也有需要的功能,比如多拨和负载均衡什么的,当然大神们可以在debian上直接实现,让大神们见笑了。

必要原料

1、运行OpenWrt X86的机器一台(可以组装嘛)

PS:根据 http://www.right.com.cn/forum/thread-152879-1-1.html
的帖子里linfang26大神的经验,建议把OpenWrt的inode改到60000,以免出现问题!!(这个要在编译OpenWrt时候改的)
2.png
同时还要感谢lean大神!!

2、做好OpenMediaVault系统的系统盘

二、步骤

1、首先将OpenWrt的管理端口(默认是80,因为openmediavault会抢占这个端口)改为别的,比如我把它改为800,ssh端口(默认是22)改为其他的,如23

2、挂载OpenMediaVault的硬盘。我将OpenMediaVault装在一块32g的ssd里,并将它挂载到/mnt/disk,如图

3、将切换和运行OpenMediaVault的脚本传到OpenWrt上

我将切换脚本命名为chroot,放在/root下,其内容如下:

1
2
3
4
5
6
7
8
echo "proc /mnt/disk/proc proc defaults 0 0" >> /etc/fstab
mount proc /mnt/disk/proc -t proc
echo "sysfs /mnt/disk/sys sysfs defaults 0 0" >> /etc/fstab
mount sysfs /mnt/disk/sys -t sysfs
mount -o bind /dev /mnt/disk/dev
cp /etc/hosts /mnt/disk/etc/hosts
cp /proc/mounts /mnt/disk/etc/mtab
chroot /mnt/disk /bin/bash

意思是挂载一些系统需要的文件夹,并切换到OpenMediaVault的bash

启动脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mount /dev/sdb1 /media/     //这两步为挂载你的硬盘到挂载点
mount /dev/sda1 /media/ //openmediavault里默认是/media/xxxxx
omv-engined //启动omv主引擎。。。。(这翻译的。。)
hdparm -S 60 /dev/sda //设置硬盘休眠时间
hdparm -S 60 /dev/sdb
sh /usr/share/openmediavault/initsystem/10readline //启动openmediavault的过程
sh /usr/share/openmediavault/initsystem/20hostname
sh /usr/share/openmediavault/initsystem/40interfaces
sh /usr/share/openmediavault/initsystem/50timezone
sh /usr/share/openmediavault/initsystem/65mdadm
sh /usr/share/openmediavault/initsystem/70tmpfs
sh /usr/share/openmediavault/initsystem/80resolvconf
sh /usr/share/openmediavault/initsystem/90acpid
sh /usr/share/openmediavault/initsystem/90sysctl
sh /usr/share/openmediavault/initsystem/99rrd
mount -t devpts devpts /dev/pts //挂载重要的挂载点,要不ssh到omv时会出错
/etc/init.d/php5-fpm start //启动php的什么东西
/etc/init.d/ssh start //启动ssh
nginx //启动nginx
smbd //启动samba

我将这个文件命名为open,并将此文件上传到OpenMediaVault磁盘的根目录下

4、通过putty这个软件ssh到OpenWrt,cd到root文件夹(如果以root登陆默认就是)并输入指令sh
chroot,随后命令行里的root@OpenWrt:~#会变成root@OpenWrt:/#,说明切换成功,随后输入命令sh
open

5、随后输入你路由器的ip地址就能看到OMV的节目啦,当然默认账户admin,密码openmediavault,这个随后一定要修改哦

三、后续工作

随后就跟配置OMV一样啦,安装omvextras什么的,另外你安装了什么服务一定要在open文件里添加哦,比如安装了mysql就要添加一行mysqld

一些想说的话

被迫使用这种方法也是无奈,直接使用omv-initsystem会报错,我能力不够怎么也发现不了问题在哪,所以只好一步步启动OMV的相关组件

这种方法还有很多问题,比如:

每次开机都要执行sh chroot和sh open这两个步骤
直接将nas开放到公网有风险,会被黑,拿来ddos挖矿什么的,你的隐私文件也肯被发现

剩下想说的是不希望被用作商业用途

版权所有,违反必究