文档章节

LinksysWrt1900acs刷官方镜像并开启FTP

a_xianyu
 a_xianyu
发布于 2017/06/03 15:41
字数 1270
阅读 37
收藏 0

系统:https://downloads.openwrt.org/chaos_calmer/15.05.1/mvebu/generic/openwrt-15.05.1-mvebu-armada-385-linksys-shelby-squashfs-factory.img

需要的工具:WinSCP, putty(或其它ssh工具)

安装完系统后
1. ssh连接路由器后直接输入命令

最开始刷系统后会登陆192.168.1.1时会出现一个root用户名和其对应的密码,
就是用于ssh连接时的用户名和密码。如果更改过密码,则使用更改过的。
    opkg update
    opkg install kmod-usb-core
    opkg install kmod-usb2                #安装usb2.0 
    opkg install kmod-usb3                #安装usb3.0 
    opkg install kmod-usb-ohci            #安装usb ohci控制器驱动
    opkg install kmod-usb-storage         #安装usb存储设备驱动
    opkg install kmod-fs-vfat             #挂载FAT
    opkg install ntfs-3g                  #挂载NTFS
    opkg install mount-utils              #挂载卸载工具
    opkg install block-mount

    再更新驱动

opkg update
opkg install git-http
cd /tmp
git clone --depth 1 https://github.com/NemoAlex/mwlwifi-bin.git
cd mwlwifi-bin/15.05.1
opkg install kmod-mwlwifi_3.18.23\+10.3.0.17-20160531-1_mvebu.ipk
reboot

2. 用WinSCP连接路由器(还是上面的路由器和密码),文件协议选择SCP,
打开/etc/hotplug.d/block/10-mount文件(如果不存在请新建)
修改为如下内容

#!/bin/sh
 
# Copyright (C) 2009 OpenWrt.org  (C) 2010 OpenWrt.org.cn
 
blkdev=`dirname $DEVPATH`
if [ `basename $blkdev` != "block" ]; then
 
    device=`basename $DEVPATH`
    case "$ACTION" in
        add)
                mkdir -p /mnt/$device
                # vfat & ntfs-3g check
                if  [ `which fdisk` ]; then
                        isntfs=`fdisk -l | grep $device | grep NTFS`
                        isvfat=`fdisk -l | grep $device | grep FAT`
                        isfuse=`lsmod | grep fuse`
                        isntfs3g=`which ntfs-3g`
                else
                        isntfs=""
                        isvfat=""
                fi 
 
                # mount with ntfs-3g if possible, else with default mount
                if [ "$isntfs" -a "$isfuse" -a "$isntfs3g" ]; then
                        ntfs-3g -o nls=utf8 /dev/$device /mnt/$device
                elif [ "$isvfat" ]; then
                        mount -t vfat -o iocharset=utf8,rw,sync,umask=0000,dmask=0000,fmask=0000 /dev/$device /mnt/$device
                else
                        mount /dev/$device /mnt/$device
                fi
  if [ -f /dev/${device}/swapfile ]; then
   mkswap /dev/${device}/swapfile
   swapon /dev/${device}/swapfile
  fi
                ;;
        remove)
  if [ -f /dev/${device}/swapfile ]; then
   swapoff /dev/${device}/swapfile
  fi
                umount /dev/$device
                ;;
    esac
 
fi

保存后,重启路由器。(直接在System下选择Reboot, 或者再ssh连接下输入reboot都可以)

    稍加修改,就可以实现自动挂载。下面这段代码就可以自动挂载ntfs类型的u盘,挂载后的地址为/mnt/sda4.

#!/bin/sh
 
# Copyright (C) 2009 OpenWrt.org  (C) 2010 OpenWrt.org.cn
 
blkdev=`dirname $DEVPATH`
if [ `basename $blkdev` != "block" ]; then
 
    device=`basename $DEVPATH`
    case "$ACTION" in
        add)
                mkdir -p /mnt/sda4
                # vfat & ntfs-3g check
                if  [ `which fdisk` ]; then
                        isntfs=`fdisk -l | grep $device | grep NTFS`
                        isvfat=`fdisk -l | grep $device | grep FAT`
                        isfuse=`lsmod | grep fuse`
                        isntfs3g=`which ntfs-3g`
                else
                        isntfs=""
                        isvfat=""
                fi 
 
                # mount with ntfs-3g if possible, else with default mount
                if [ "$isntfs" -a "$isfuse" -a "$isntfs3g" ]; then
                        ntfs-3g -o nls=utf8 /dev/$device /mnt/sda4
                elif [ "$isvfat" ]; then
                        mount -t vfat -o iocharset=utf8,rw,sync,umask=0000,dmask=0000,fmask=0000 /dev/$device /mnt/sda4
                else
                        mount /dev/$device /mnt/sda4
                fi
  if [ -f /dev/${device}/swapfile ]; then
   mkswap /dev/${device}/swapfile
   swapon /dev/${device}/swapfile
  fi
                ;;
        remove)
  if [ -f /dev/${device}/swapfile ]; then
   swapoff /dev/${device}/swapfile
  fi
                umount /dev/$device
                ;;
    esac
 
fi

3. 重启后,再次登陆后点击Mount Points
    此时,应该出现一个网页,类似下图

              

4. 查看设备地址。

    插上U盘之后,此时U盘并不能挂载,如果挂载U盘,需要先找到设备地址,就是使用blkid命令。(如果中间显示某个包无法找到,可以使用opkg update, 之后再次尝试)

        opkg install fdisk

        opkg install e2fsprogs

        opkg install blkid

    之后直接输入blkid,就可以看到设备地址,如下图红框中的/dev/sda4,就是目前插入的U盘的设备地址。

              

5. 挂载U盘。

    如果插入的U盘的文件系统类型为ntfs, 则在ssh连接下使用

        ntfs-3g /dev/sda4 /mnt/sda4

进行挂载

    如果是fat32, 则在ssh连接下使用如下命令安装软件

opkg update
opkg install kmod-nls-base
opkg install kmod-nls-cp437
opkg install kmod-nls-iso8859-1

,再使用blkid查看设备地址,使用 

mount -t vfat /dev/sda4 /mnt/sda4

进行挂载。其它类型的文件系统,请自行查找挂载命令。

    此时刷新System->Mount Points页面,会发现下面多了一行,

              

则说明U盘挂载成功。可以使用WinSCP连接进入/mnt/sda4/目录查看U盘中的相关内容, 如下所示,图中中文文件名出现了乱码,并没有想到什么办法解决,求大神赐教。

            

目前只能实现U盘的手动挂载,网上的方法之前也试过,基本没有效果。如果有谁知道怎么自动挂载,求告知。

6. 安装ftp

    推荐使用vsftpd

    opkg update

    opkg install vsftpd

    修改/etc/vsftpd.conf为如下(推荐使用匿名用户),其中anon_root和local_root为设备的挂载地址。并且不能有空格,务必仔细检查。注意:下面的配置允许登陆的用户上传,下载和删除文件,如果有特定需要,请自行修改

chown_uploads=YES
chown_username=root
ftp_username=nobody
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_root=/mnt/sda4
anon_max_rate=512000
local_enable=YES
write_enable=YES
local_umask=022
check_shell=NO
local_root=/mnt/sda4

    再就是启动ftp了,

    /etc/init.d/vsftpd restart

    之后就可以使用ftp客户端或其它方式进行访问了,用户名和密码还是路由器的用户名和密码,这时u盘中的中文文件名可以正常显示。

ps: 如果只是需在局域网中分享文件,推荐使用samba, 设置更为简单。

参考的文章:

1. http://jingyan.baidu.com/article/5225f26b6b273fe6fa090829.html

2. http://www.wifidog.pro/2015/08/13/openwrt-ftp.html

3. http://www.cnblogs.com/double-win/p/3848797.html

4. http://www.tuicool.com/articles/zeqiqev

如果需要允许特定的用户使用ftp: http://blog.csdn.net/luotong86/article/details/53039617

© 著作权归作者所有

共有 人打赏支持
a_xianyu
粉丝 0
博文 36
码字总数 18533
作品 0
哈尔滨
程序员
从Oracle Public Yum为Oracle Linux建立本地的Yum源

你可以在这里找到本文的原文。 本文是在Oracle Linux 6.5下,通过复制Oracle Public Yum源的方式建立一个完整的本地Yum源。由于只是出于测试和快速上手的目的,只进行了一次同步复制。在同步...

K-X
2015/10/21
45
0
TL-WR703Nv1.7刷写openwrt固件

TP-LINK TL-WR703N是一个小型的路由器,可以有线转WiFi,3G转WiFi,很多人拿它刷openwrt系统,然后可以在上面各种搞事。 V1.7以前 通常刷openwrt的做法是, 下载一个openwrt factory固件 打开...

梦里茶
2017/12/12
0
0
Linux Deepin 镜像服务已覆盖德国

德国埃尔兰根-纽伦堡大学,Tuxinator及GWDG为Linux Deepin提供了在德国的镜像服务。以下为各镜像的详情: 埃尔兰根-纽伦堡大学 软件包及各版本的安装镜像可从以下不同协议的链接获取: http...

cxbii
2014/03/12
398
4
Linux Deepin 今日新增四处镜像

今日,Linux Deepin今日新增四处镜像!分别为日本、瑞典和美国! Tsukuba WIDE Public Mirror service(日本) 目前该镜像站目前只支持Http和Rsync协议,其地址如下: http://ftp.tsukuba.w...

cxbii
2014/04/02
599
0
Linux Deepin 今日新增三处镜像

今日,Linux Deepin今日新增三处镜像!分别为美国、菲律宾和荷兰! Georgia Tech. Software Library(美国) 目前该镜像站目前支持Http和Ftp协议,其地址如下: http://www.gtlib.gatech.ed...

cxbii
2014/03/19
321
0

没有更多内容

加载失败,请刷新页面

加载更多

day92-20180918-英语流利阅读-待学习

健身最大的敌人不是懒惰,而是逞强 Daniel 2018-09-19 1.今日导读 还记得 2008 年北京奥运会运动员刘翔的退赛风波吗?那天几乎所有中国人都将视线聚焦在了鸟巢体育馆 110 米栏的项目上,迫不...

飞鱼说编程
8分钟前
1
0
70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
3
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
6
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
53
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部