[Openwrt 项目开发笔记]:USB挂载& U盘启动(三)

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

 

正文:web

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

 

1、 添加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盘测试一下。spa

ls -l /dev |grep sda

  显示结果rest

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

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

 

2、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)显示分区后的结果

  

 

3、添加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 1        #是否须要启动   option enabled_fsck 0     #是否须要启动检查
  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/ 谢谢!