OpenWrt使用外置存储启动

一般来说 路由器的闪存比较小 不足以安装大量扩展 所以需要用 U盘或者SD卡 启动

安装相关包

  • 执行 opkg install block-mount kmod-usb2 kmod-sdhci kmod-usb-storage fdisk e2fsprogs

    • block-mount 用于挂载
    • kmod-usb-storage 用于识别移动设备
    • kmod-sdhci 可选 用于识别SD卡
    • fdisk 分区管理工具
    • e2fsprogs 用于格式化分区
  • 执行 opkg install kmod-fs-ext4 kmod-fs-vfat kmod-fs-nfs kmod-fs-cifs kmod-fs-autofs4

    默认情况下 只需要安装 kmod-fs-ext4 就够了

    • kmod-fs-ext4 EXT4分区格式扩展
    • kmod-fs-vfat FAT32分区格式扩展
    • kmod-fs-nfs NFS挂载扩展
      • 需要安装 nfs-utils 才能挂载
      • 例: mount -t nfs -o nolock 192.168.0.3:/home/app/nfs /mnt/nfs/
    • kmod-fs-cifs Samba挂载扩展
      • 需要安装 cifsmount 才能挂载
      • 例: mount -t cifs //192.168.0.3/share /mnt/pi/
    • kmod-fs-autofs4 分区自动挂载

U盘分区

  • 装完上述包之后插入U盘 这里用的是某迪的16G迷你U盘
  • 如果是U盘 执行 ls /dev | grep sd

    1
    2
    3
    root@LEDE:~# ls /dev | grep sd
    sda
    sda1
  • 一般来说是这样的 sda 代表U盘 sda1 代表第一个分区 格式应该是FAT32

  • 执行 fdisk /dev/sda

    • 输入 p 查看分区

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      Command (m for help): p
      Disk /dev/sda: 14.9 GiB, 16005464064 bytes, 31260672 sectors
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disklabel type: dos
      Disk identifier: 0x00000000

      Device Boot Start End Sectors Size Id Type
      /dev/sda1 2048 29685760 31260672 14.9G c FAT32
    • 输入 d 删除分区

      • 会直接删除第一个分区 (如果过有数据 记得备份)
    • 新建第一个分区 用于装载系统 按照顺序按下
      • n 新建分区
      • 提示 选择分区号 直接回车 默认1
      • 提示 选择起始点 直接回车 默认2048
      • 提示 配置分区大小 输入 +256M 回车
      • t 选择分区类型
      • 输入 83 代表 Linux 类型的分区
    • 新建第一个分区 用于Swap交换 按照顺序按下
      • n 新建分区
      • 提示 选择分区号 直接回车 默认2
      • 提示 选择起始点 直接回车 默认526336
      • 提示 配置分区大小 输入 +512M 回车
      • t 选择分区类型
      • 输入 82 代表 Linux swap 类型的分区
    • 新建第三个分区 用于存储内容 按照顺序按下
      • n 新建分区
      • 提示 选择分区号 直接回车 默认3
      • 提示 选择起始点 直接回车 默认1574912
      • 提示 选择结束点 直接回车 默认29685760
      • t 选择分区类型
      • 输入 83 代表 Linux 类型的分区
    • 输入 p 查看分区 此时的分区应该是这样的

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      Command (m for help): p
      Disk /dev/sda: 14.9 GiB, 16005464064 bytes, 31260672 sectors
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disklabel type: dos
      Disk identifier: 0x00000000

      Device Boot Start End Sectors Size Id Type
      /dev/sda1 2048 526335 524288 256M 83 Linux
      /dev/sda2 526336 1574911 1048576 512M 82 Linux swap / Solaris
      /dev/sda3 1574912 31260671 29685760 14.2G 83 Linux
    • 输入 w 写入分区表

格式化分区

  • 格式化系统分区 mkfs.ext4 /dev/sda1
  • 格式化交换分区 mkswap /dev/sda2
  • 格式化存储分区 mkfs.ext4 /dev/sda3

挂载分区

  • 挂载系统分区
    • mkdir -p /mnt/sda1
    • mount -t ext4 /dev/sda1 /mnt/sda1
  • 挂载交换分区
    • swapon /dev/sda2
  • 挂载存储分区
    • mkdir -p /mnt/sda3
    • mount -t ext4 /dev/sda3 /mnt/sda3

查看系统分区

  • 执行 df -h
    1
    2
    3
    4
    5
    6
    7
    8
    9
    root@LEDE:~# df -h
    Filesystem Size Used Available Use% Mounted on
    /dev/root 2.0M 2.0M 0 100% /rom
    tmpfs 61.4M 1.0M 60.3M 2% /tmp
    /dev/mtdblock6 12.3M 8.1M 4.2M 66% /overlay
    overlayfs:/overlay 12.3M 8.1M 4.2M 66% /
    tmpfs 512.0K 0 512.0K 0% /dev
    /dev/sda1 239.9M 21.2M 201.9M 9% /mnt/sda1
    /dev/sda3 6.8G 2.7G 3.8G 42% /mnt/sda3

迁移系统分区

  • 执行
    1
    2
    3
    4
    5
    6
    7
    8
    mkfs.ext4 /dev/sda1
    mkdir /mnt/sda1
    mount /dev/sda1 /mnt/sda1
    mkdir /tmp/cproot
    mount --bind / /tmp/cproot
    tar -C /tmp/cproot -cvf - . | tar -C /mnt/sda1 -xvf -
    sync
    umount /tmp/cproot

配置挂载文件

  • 执行 block detect
  • 写入挂在状态 block detect > /etc/config/fstab

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    config 'global'
    option anon_swap '0'
    option anon_mount '0'
    option auto_swap '1'
    option auto_mount '1'
    option delay_root '5'
    option check_fs '0'

    config 'mount'
    option target '/mnt/sda1'
    option uuid 'a70415a3-ff97-40d6-b8c0-2895b7549c86'
    option enabled '0'

    config 'swap'
    option uuid '6f193748-17d2-4c68-9a18-0354b1de6aa0'
    option enabled '0'

    config 'mount'
    option target '/mnt/sda3'
    option uuid '81a9f4f1-ed24-4e79-a713-499757c6233a'
    option enabled '0'
  • 修改挂载路径 把 option target '/mnt/sda1' 改为 option target '/'

  • 修改为启用状态 把所有的 option enabled '0' 改成 option enabled '1'
  • 注意: 只修改上述两处 别的都别动
  • 这是修改后的文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    config 'global'
    option anon_swap '0'
    option anon_mount '0'
    option auto_swap '1'
    option auto_mount '1'
    option delay_root '5'
    option check_fs '0'

    config 'mount'
    option target '/'
    option uuid 'a70415a3-ff97-40d6-b8c0-2895b7549c86'
    option enabled '1'

    config 'swap'
    option uuid '6f193748-17d2-4c68-9a18-0354b1de6aa0'
    option enabled '1'

    config 'mount'
    option target '/mnt/sda3'
    option uuid '81a9f4f1-ed24-4e79-a713-499757c6233a'
    option enabled '1'

修改 Banner 以便于区分是否从U盘启动

  • 执行 vi /etc/banner
    • 改成你喜欢的文本就行
    • 比如下面的样子

重启 查看结果

  • 重启后进入系统 查看分区大小

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    BusyBox v1.26.2 () built-in shell (ash)
    _________
    / /\ _ ___ ___ ___
    / LE / \ | | | __| \| __|
    / DE / \ | |__| _|| |) | _|
    /________/ LE \ |____|___|___/|___| lede-project.org
    \ \ DE /
    \ LE \ / -----------------------------------------------------------
    \ DE \ / Boot From USB Storage (SNAPSHOT, r4101-54ea0f4)
    \________\/ -----------------------------------------------------------

    root@LEDE:~# df -h
    Filesystem Size Used Available Use% Mounted on
    /dev/root 2.0M 2.0M 0 100% /rom
    tmpfs 61.4M 88.0K 61.3M 0% /tmp
    /dev/sda1 239.9M 21.2M 202.0M 9% /
    tmpfs 512.0K 0 512.0K 0% /dev
    /dev/sda3 13.9G 40.0M 13.1G 0% /mnt/sda3
  • 可以看到 分区已经变大了 可以随意安装软件了