Flash-диск в OpenWrt

После того, как подключили usb-хаб, можно использовать его возможности. Подключим Flash-диск в OpenWrt и перенесем на него файловую систему, чтобы быть независимым от размера Flash-памяти, которая стоит в роутере.

На этапе конфигурации OpenWrt нужно установить следующие модули:
Kernel modules:
USB Support:
<*> kmod-usb-storage (Flash-диск в OpenWrt)
Filesystems:
<*> kmod-fs-ext3
Base system:
<*> block-extroot
Utilities:
Filesystem:
<*> e2fsprogs
disc:
<*> fdisk

Подготовим Flash-диск:

Подключаем Flash-диск к роутеру. Заходим через телнет на роутер:

$ telnet 192.168.1.1

Ищем, как Flash-диск определся в системе:

# fdisk -l (у меня Flash-диск определился как /dev/sda)

Форматируем Flash-диск:

# fdisk /dev/sda
Command (m for help): d
Partition number (1-4): 1

Command (m for help): d
Partition number (1-4): 2

Command (m for help): d
Partition number (1-4): 3

Command (m for help): d
No partition is defined yet!

Разбиваем Flash-диск на следующие части — Swap (64Мбт), Root File System (128Мбт), Home (оставшееся место на флэш-диске):

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p

Partition number (1-4): 1
First cylinder (1-122, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-122, default 122): +64M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p

Partition number (1-4): 2
First cylinder (10-122, default 10):
Using default value 10
Last cylinder or +size or +sizeM or +sizeK (10-122, default 122): +128M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p

Partition number (1-4): 3
First cylinder (27-122, default 27):
Using default value 27
Last cylinder or +size or +sizeM or +sizeK (27-122, default 122):
Using default value 122

Смотрим, что получилось:

Command (m for help): p
Disk /dev/sda: 1010 MB, 1010826752 bytes
255 heads, 63 sectors/track, 122 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x91f72d24
Device Boot Start End Blocks Id System
/dev/sda1 1 9 72261 83 Linux
/dev/sda2 10 26 136552+ 83 Linux
/dev/sda3 27 122 771120 83 Linux

Первый раздел у нас должен иметь тип Swap, меняем тип для него:

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)
Command (m for help): p
Disk /dev/sda: 1010 MB, 1010826752 bytes
255 heads, 63 sectors/track, 122 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x91f72d24
Device Boot Start End Blocks Id System
/dev/sda1 1 9 72261 82 Linux swap / Solaris
/dev/sda2 10 26 136552+ 83 Linux
/dev/sda3 27 122 771120 83 Linux

Применяем и выходим:

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Отформатируем разделы:

# mkswap /dev/sda1
# mkfs.ext3 -L RootFS /dev/sda2
# mkfs.ext3 -L MyData /dev/sda3

Flash-диск готов. Перенесем на него корневую файловую систему:
Для этого подключим его к компьютеру и скопируем содержимое
openwrt/build_dir/target-mipsel_uClibc-0.9.31/root-brcm47xx/ на второй раздел( RootFS) Flash-диск.

Для загрузки с Flash-диск в OpenWrt необходимо изменить файл /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
option target /
option device /dev/sda2
option fstype ext3
option options rw,sync
option enabled 1
option is_rootfs 1
config mount
option target /home
option device /dev/sda3
option fstype ext3
option options rw,sync
option enabled 1
config swap
option device /dev/sda1
option enabled 1

Перезагружаемся с подключенным Flash-диском и проверяем результат:

root@OpenWrt:/# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 1.9M 1.9M 0 100% /rom
tmpfs 14.5M 40.0K 14.5M 0% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda2 129.1M 11.8M 110.7M 10% /overlay
mini_fo:/overlay 1.9M 1.9M 0 100% /
/dev/sda3 741.2M 16.8M 686.8M 2% /home
root@OpenWrt:/# free
total used free shared buffers
Mem: 29732 15476 14256 0 1540
Swap: 72256 0 72256
Total: 101988 15476 86512

Теперь мы не ограничены размером внутренней Flash на роутере и можем ставить на его любые приложения.

Настроим возможность установки модулей из локального репозитария OpenWrt. Для этого используются команды:

$ opkg update — обновить список доступных пакетов
$ opkg install — устновить пакеты

Как это сделать:
1) Необходимо открыть доступ по ftp к директории — bin/brcm47xx/packages. Сделать это можно с помощью любого ftp-сервера (для примера — gadmin-proftpd).
2) В файле /etc/opkg.conf нужно закомментировать основной репозитарий и прописать свой:

src/gz localpackages ftp://(адрес сервера)

3) Обновить список доступых пакетов:

root@OpenWrt:/# opkg update
Downloading ftp://ftp:ftp@192.168.1.9/Packages.gz.
Inflating ftp://ftp:ftp@192.168.1.9/Packages.gz.
Updated list of available packages in /var/opkg-lists/localpackages

4) Теперь можно устанавливать доступные пакеты по команде:

root@OpenWrt:/# opkg install имя пакета

5) Также можно удалять:

root@OpenWrt:/#opkg remove --force-removal-of-dependent-packages имя пакета