• USB挂载&U盘启动


    USB挂载&U盘启动

    来源 https://www.cnblogs.com/double-win/p/3841801.html

    [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--    1    root    root    8,    0    Jan    1    1970    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 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了。

    ================= End

  • 相关阅读:
    Java的一天学习
    IIS7配置PHP图解
    主流HTML5游戏框架的分析和对比
    HTTP请求
    hibernate -- 数据库连接池的失效检查设置
    mysql备份
    深入探索SOAP1.1--使用SAAJ1.2.1
    JDBC连接执行MySQL存储过程报权限错误
    mysql(connector/ODBC)
    mysql查询优化(三)
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/13752290.html
Copyright © 2020-2023  润新知