Подключение USB flash к роутеру, перенос корня на flash
Подготовить USB flash можно на компьютере с linux или на самом роутере. Если работы будут проводится на роутере, то сначала необходимо установить пакет fdisk:
opkg update opkg install fdisk
Приступим. Создаем на flash два раздела: первый раздел для overlay-я корня, второй для swap.
Запускаем fdisk и начинаем работать с нашей flash (не перепутайте с другими дисками!)
# fdisk /dev/sdb
Удаляем существующие разделы (в моем примере их было два):
Команда (m для справки): d Номер раздела (1-4): 1 Команда (m для справки): d Выбранный раздел 2
Создаем раздел данных размером 200 мегабайт (вы можете выделить все свободное пространство минус 50 мегабайт под swap):
Команда (m для справки): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e расширенный
Select (default p):
Using default response p
Номер раздела (1-4, по умолчанию 1):
Используется значение по умолчанию 1
Первый сектор (2048-15435775, по умолчанию 2048):
Используется значение по умолчанию 2048
Last сектор, +секторы or +size{K,M,G} (2048-15435775, по умолчанию 15435775): +200M
Создаем раздел swap размером 50 мегабайт (больше выделять смысла большого нет):
Команда (m для справки): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e расширенный
Select (default p):
Using default response p
Номер раздела (1-4, по умолчанию 2):
Используется значение по умолчанию 2
Первый сектор (411648-15435775, по умолчанию 411648):
Используется значение по умолчанию 411648
Last сектор, +секторы or +size{K,M,G} (411648-15435775, по умолчанию 15435775): +50M
Сохраняем изменения:
Команда (m для справки): w Таблица разделов была изменена! Вызывается ioctl() для перечитывания таблицы разделов. Синхронизируются диски.
Форматируем первый раздел:
# mkfs.ext4 /dev/sdb
sdb sdb1 sdb2
root@leon-netbook:~/Загрузки# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inod'ов в группе
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Сохранение таблицы inod'ов: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
Теперь flash диск можно подключить к роутеру начать настраивать роутер.
Устанавливаем необходимые пакеты:
# opkg update # opkg install block-mount kmod-fs-ext4 kmod-usb-core kmod-usb-storage
Перезагружаем роутер:
reboot
Определяем разделы /etc/config/fstab:
# block detect > /etc/config/fstab
Настраиваем монтирование корневого раздела и проверку файловой системы при запуске. ```/etc/config/fstab``` должен иметь такой вид:
config 'global'
option anon_swap '0'
option anon_mount '0'
option auto_swap '1'
option auto_mount '1'
option delay_root '10'
option check_fs '1'
config 'mount'
option target '/overlay'
option uuid '8f59bbe1-80e7-478c-bb0f-453e6c405975'
option enabled '1
config swap
option enabled '1'
option device '/dev/sda2'
Монтируем раздел на flash и копируем overlay на раздел внешнего носителя:
mkdir /mnt/sda1 mount /dev/sda1 /mnt/sda1 tar -C /overlay -cvf - . | tar -C /mnt/sda1 -xf - umount /mnt/sda1/
Перезагружаемся и проверяем размер свободного пространства в корне:
# df -h Filesystem Size Used Available Use% Mounted on rootfs 189.7M 2.9M 172.8M 2% / /dev/root 2.0M 2.0M 0 100% /rom tmpfs 14.1M 68.0K 14.0M 0% /tmp /dev/sda1 189.7M 2.9M 172.8M 2% /overlay overlayfs:/overlay 189.7M 2.9M 172.8M 2% / tmpfs 512.0K 0 512.0K 0% /dev
Видим, что /dev/sda1 смонтирован в overlay, и свободного места в корне стало значительно больше.
Теперь перенесем /var в постоянное хранилище. По умолчанию каталог /var не сохраняется при перезагрузке. Мы эти данные будем сохранять:
mv /var /var-old mkdir /var cp -r /var-old/* /var rm /var-old
Создаем swap:
opkg install swap-utils mkswap /dev/sda2
Для вступления в силу изменений, следует еще раз перезагрузить роутер.