LoginSignup
6
11

More than 5 years have passed since last update.

OpenWrtのrootfsをUSBメモリで拡張する方法

Last updated at Posted at 2019-01-28

はじめに

Wi-FiルータにOpenWrtをインストールしても、ROM領域が少ないのでいろいろパッケージをインストールできません。そこでUSBメモリを使いrootfsを拡張してみました。
今回はUSBメモリ全体をrootfsにしています。

参考:
- OpwnWrt - Extroot configuration
- Zopfcode - 【前編】ルーターのrootfsを拡張してPythonをビルドする

必要なパッケージをインストールします

root@GL-AR150:~# cat /etc/openwrt_release
DISTRIB_ID='LEDE'
DISTRIB_RELEASE='17.01.4'
DISTRIB_REVISION='r3560-79f57e422d'
DISTRIB_CODENAME='reboot'
DISTRIB_TARGET='ar71xx/generic'
DISTRIB_ARCH='mips_24kc'
DISTRIB_DESCRIPTION='LEDE Reboot 17.01.4 r3560-79f57e422d'
DISTRIB_TAINTS='busybox override'

root@GL-AR150:~# opkg update
root@GL-AR150:~# opkg install kmod-usb-storage
root@GL-AR150:~# opkg install usbutils
root@GL-AR150:~# opkg install gdisk
root@GL-AR150:~# opkg install block-mount
root@GL-AR150:~# opkg install e2fsprogs
root@GL-AR150:~# opkg install kmod-fs-ext4
root@GL-AR150:~# reboot

USBメモリ(/dev/sda)をフォーマットし、システム起動時に自動マウント(/mnt/sda1)されるようにします

root@GL-AR150:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                 8192      8192         0 100% /rom
tmpfs                    30088       260     29828   1% tmp
/dev/mtdblock5            6400      5312      1088  83% /overlay
overlayfs:/overlay        6400      5312      1088  83% /
tmpfs                      512         0       512   0% /dev
root@GL-AR150:~# lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
root@GL-AR150:~# ls -l /dev/sd*
brw-------    1 root     root        8,   0 Jan  1  1970 /dev/sda
brw-------    1 root     root        8,   1 Jan  1  1970 /dev/sda1

root@GL-AR150:~# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/sda: 15633408 sectors, 7.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6478B437-EECD-AA48-A2EC-56C50B396DFD
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 15633374
Partitions will be aligned on 2048-sector boundaries
Total free space is 15633341 sectors (7.5 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-15633374, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-15633374, default = 15633374) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): p
Disk /dev/sda: 15633408 sectors, 7.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6478B437-EECD-AA48-A2EC-56C50B396DFD
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 15633374
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        15633374   7.5 GiB     8300  Linux filesystem

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.

root@GL-AR150:~# mkfs.ext4 /dev/sda1

root@GL-AR150:~# block info | grep "/dev/sd"
/dev/sda1: UUID="ad3607ef-35a3-43dd-b014-8deca070c780" VERSION="1.0" TYPE="ext4"

root@GL-AR150:~# block detect > /etc/config/fstab
root@GL-AR150:~# uci set fstab.@mount[0].enabled='1'
root@GL-AR150:~# uci commit
root@GL-AR150:~# reboot
root@GL-AR150:~# uci show fstab
fstab.@global[0]=global
fstab.@global[0].anon_swap='0'
fstab.@global[0].anon_mount='0'
fstab.@global[0].auto_swap='1'
fstab.@global[0].auto_mount='1'
fstab.@global[0].delay_root='5'
fstab.@global[0].check_fs='0'
fstab.@mount[0]=mount
fstab.@mount[0].target='/mnt/sda1'
fstab.@mount[0].uuid='ad3607ef-35a3-43dd-b014-8deca070c780'
fstab.@mount[0].enabled='1'
root@GL-AR150:~# block info
/dev/mtdblock4: UUID="93bc83d3-4b85b167-6f217cd4-25ceb869" VERSION="4.0" MOUNT="/rom" TYPE="squashfs"
/dev/mtdblock5: MOUNT="/overlay" TYPE="jffs2"
/dev/sda1: UUID="ad3607ef-35a3-43dd-b014-8deca070c780" VERSION="1.0" MOUNT="/mnt/sda1" TYPE="ext4"
root@GL-AR150:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                 8192      8192         0 100% /rom
tmpfs                    30088       260     29828   1% /tmp
/dev/mtdblock5            6400      5312      1088  83% /overlay
overlayfs:/overlay        6400      5312      1088  83% /
tmpfs                      512         0       512   0% /dev
/dev/sda1              7627412     34368   7185880   0% /mnt/sda1

現在のrootfs(/overlay)をUSBメモリ(/mnt/sda1)にコピーし、USBメモリをrootfsに切り替えます

root@GL-AR150:~# tar -C /overlay -cvf - . | tar -C /mnt/sda1 -xf -
root@GL-AR150:~# block detect > /etc/config/fstab
root@GL-AR150:~# sed -i s/option$'\t'enabled$'\t'\'0\'/option$'\t'enabled$'\t'\'1\'/ /etc/config/fstab
root@GL-AR150:~# sed -i s#/mnt/sda1#/overlay# /etc/config/fstab
root@GL-AR150:~# cat /etc/config/fstab
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  '/overlay'
    option  uuid    'ad3607ef-35a3-43dd-b014-8deca070c780'
    option  enabled '1'
root@GL-AR150:~# reboot

できました

root@GL-AR150:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                 8192      8192         0 100% /rom
tmpfs                    30088       252     29836   1% /tmp
/dev/sda1              7627412     47652   7172596   1% /overlay
overlayfs:/overlay     7627412     47652   7172596   1% /
tmpfs                      512         0       512   0% /dev
6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11