[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html

正文:

在上一篇中,我结合Netgear Wndr3700讲解了如何对Openwrt进行必要的配置。接下来,我们就想要在Openwrt上安装必要的软件了。可是这时候新的问题又来了:当安装一些软件之后,存储空间不足了。这时候该怎么办呢?以4M的Flash为例,当大家讲Openwrt固件刷到自己的路由器后,大家会发现剩余的空间往往只剩下不到2M。当我们需要安装许多Openwrt本身不带的软件时,就会发现如此小的空间实在是太寒酸了。那么,该如何解决这样的问题呢?

一、 添加USB扩展(注:本文默认大家的路由器是自带USB接口的,如果主板上本身不带USB接口的,可以考虑对硬件进行改动。由于我对于硬件不太懂,此处就不扩展讲解了,大家可以在网上寻求方法)

1. 更新路由器软件源(注:路由器需要联网)

opkg update

2. 添加USB支持

opkg install kmod-usb-core  #可选
opkg install kmod-usb-uhci
opkg install kmod-usb-storage
opkg install kmod-usb2
opkg install kmod-usb-ohci

3. 添加usb挂载,热插拔,以及boot支持

opkg install block-mount          #挂载
opkg install block-hotplug #热插拔
opkg install block-extroot #boot支持

  此时,可以插上U盘测试一下。

ls -l /dev |grep sda

  显示结果

root@Openwrt:/#ls -l /dev |grep sda
brw-r--r-- root root , Jan sda

  观察里面是否出现sda sda1 sda2 sda3等字样,sda说明是名为sda的设备,而sda1是它的第一个分区,后面依次类推。

二、U盘分区

  为何要对U盘进行分区呢?

  第一,方便管理文件。我们希望从U盘启动openwrt,因此将系统镜像运行在U盘上,从而获得更多的空间用于存放各种文件。为了加强管理,必要的分区是有用的。

  第二,创建Swap交换分区。我们需要在U盘上开辟部分空间用于Swap交换。通过Swap提升RAM的吞吐率,从而防止,部分软件需要大量调用RAM时,系统挂掉(例如,Transmission脱机下载服务)。

  那么,如何进行U盘分区呢?我们需要进行如下操作:

1. 准备工作,添加必要软件

opkg install kmod-fs-ext3        #添加ext3文件系统支持
opkg install fdisk #添加分区工具
opkg install e2fsprogs #添加格式化和检测工具

2. 对U盘进行分区

(1)使用下面操作,查看U盘情况。

fdisk -l    #以列表的形式,列出当前挂载盘的情况

  显示结果

  

  说明:由于我的U盘已经进行了分区,所以有上面的结果。(注:其中sda1为系统盘,相当于Windows系统的C盘;sda2为交换分区,用于内存交换;sda3为存储区,主要放置较大文件,FTP,Transmission服务器,以及物联网web服务器Log文件均存放在改分区下)

(2)分区操作

fdisk /dev/sda

  

  此处选择“n”,然后依次添加各个分区,分完区之后记得选择“w”,进行保存退出。创建分区之后,是没有格式化的,因此接下来需要进行格式化操作。

(3) 格式化各分区

mkfs.ext3 /dev/sda1   #将第一个分区格式化为ext3格式
mkswap /dev/sda2   #将第二个分区格式化为swap交换分区
mkfs.ext3 /dev/sda3   #将第三个分区格式化为ext3格式

(4)显示分区后的结果

  

三、添加U盘启动

1. 将系统镜像移动到U盘第一个分区下:

mkdir /tmp/root               #在/tmp目录下创建一个临时目录,用于放置系统镜像
mount /dev/sda1 /mnt        #将/dev/sda1 挂载到/mnt目录下
mount -o bind / /tmp/root     #将根目录"/"制作镜像,并将其挂载到“/tmp/root”下
cp /tmp/root/* /mnt -a       #将/tmp/root/ 目录下的所有内容复制到/mnt下,相当于将/mnt/root下的所有内容复制到/dev/sda1下
umount /tmp/root         #解除挂载 /tmp/root

2. 修改分区表

  进入/etc/config/目录下,修改fstab文件

config global automount
  option from_fstab 1
  option anon_mount 1 config global autoswap
  option from_fstab 1
  option anon_swap 0 config mount             #把sda1分区挂载为系统
#  option target /mnt     #选择将sda1分区挂载到当前系统的哪一个文件目录下,此处可以选择默认
  option device /dev/sda1    #需要挂载的设备,/dev/sda1
  option fstype ext3       #文件系统格式ext3
  option options rw,sync    #读写,以及同步权限
  option enabled         #是否需要启动
  option enabled_fsck      #是否需要启动检查
  option is_rootfs 1      #是否作为根文件系统 config swap #把sda2分区挂载为交换分区
option device /dev/sda2
option enabled 1 config mount
  option target /mnt   #把sda3分区挂载在mnt文件夹上,作为存储网站和文件的地方
  option device /dev/sda3   #需要挂载的设备,/dev/sda3
  option fstype ext3      #文件系统格式ext3
  option options rw,sync    #读写、同步权限
  option enabled 1       #启动该设备

  保存上述修改,执行如下命令使其生效

/etc/init.d/fstab enable
/etc/init.d/fstab restart

  重启设备,等待设备重启之后,进入shell,查看是否分区成功

df -h    #查看系统挂载情况,检查文件系统的磁盘空间占用情况。
free      #查看内存使用情况,可以用于查看swap是否正常启动

  正常分区,并以U盘启动的情况

ok,到此为止,我们成功解决了存储的问题。那么,下面我们再安装其他软件的时候,对于存储条件,可以不用像之前苛求到kb了。

---------------------------------------------------------------------------------------------------------

预告,下一篇文章,我将介绍如何安装vsFTP以及Samba局域网文件共享。

转载请注明出处: http://www.cnblogs.com/ 谢谢!

[Openwrt 项目开发笔记]:USB挂载& U盘启动(三)的更多相关文章

  1. [openwrt 项目开发笔记]: 传送门

    “Openwrt 项目开发笔记”系列传送门: [Openwrt 项目开发笔记]:Openwrt平台搭建(一) (2014-07-11 00:11) [Openwrt 项目开发笔记]:Openwrt平台 ...

  2. [Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们讲述了如何在路由器上挂载U盘,以 ...

  3. [Openwrt 项目开发笔记]:Openwrt必要设置(二)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 前面的两篇blog中,我将如何搭建Openwrt ...

  4. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...

  5. [Openwrt 项目开发笔记]:MySQL配置(六)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在本人的项目中,运行在路由器上的服务器采用Ngi ...

  6. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)补遗

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 昨晚上熬夜写了[Openwrt项目开发笔记]:O ...

  7. [Openwrt 项目开发笔记]:PHP+Nginx安装(七)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们已经搭建了MySQL数据库了,因 ...

  8. [Openwrt 项目开发笔记]:DDNS设置(五)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我主要讲述了如何在Openwrt上安 ...

  9. [Openwrt 扩展上篇]USB挂载&U盘启动&Samba共享

    最近偷懒,没学习,反想起自己的路由刷了Openwrt,正好闲置了一个硬盘想拿来做个网络硬盘,于是开始了折腾....这里将不谈论如何刷Openwrt,如何ssh,如何添加PPOE,如何添加相对应服务的包 ...

随机推荐

  1. Loadrunner进行参数化

    Loadrunner进行参数化 Loadrunner中进行参数化,这里有三种方法. 对需要多次使用的变量进行参数化,比如登录信息的用户名和密码,首先需要选中需要参数化的值,然后右键选择Replace ...

  2. PIE结对编程

    学习进度条 点滴成就 学习时间 新编写代码行数 博客量 学到知识点 第一周 8 0 0 了解软件工程 第二周 7 0 1 了解软件工程 第三周 11 0 1 用例图 第四周 6 25 0 结对编程 第 ...

  3. 自对齐(self-aligned)

    C语言是自对齐的,32位以4字节对齐,64位以8字节对齐(1字节=8 bits) 自对齐的好处:在一条指令内完成数据的取或者存的操作,使得内存访问更快:否则,如果一个变量跨机器字存储,那么要做两次或更 ...

  4. 88. Merge Sorted Array 后插

    合并两个排序的整数数组A和B变成一个新的数组.给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B ...

  5. The server is busy, please refresh

  6. 用户体验要好,App动画得这么做

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具.   在用户体验设计方面,App动画的设计和添加,带给设计师无限的创造空间的同时,也成为设计师群体最具 ...

  7. 用Notepad++在文本文件里快速在每行头尾都加上指定的内容(转载)

  8. Java中的内存划分

    Java程序在运行时,需要在内存中分配空间.为了提高运行效率,就对数据进行了不同的空间划分.因为每一片区域都有特定的数据处理方式和内存管理方式. 具体分为5种内存空间: 程序计数器:保证线程切换后能恢 ...

  9. 替换SQL执行计划

    Switching two different SQL Plan with SQL Profile in Oracle... 当SQL是业务系统动态生成的,或者是第三方系统产生的,在数据库层面分析发现 ...

  10. 乞丐版servlet容器第2篇

    2. 监听端口接收请求 上一步中我们已经定义好了Server接口,并进行了多次重构,但是实际上那个Server是没啥毛用的东西. 现在要为其添加真正有用的功能. 大师说了,饭要一口一口吃,衣服要一件一 ...