Подключение USB flash к роутеру, перенос корня на flash

Материал из First-Leon
Перейти к навигации Перейти к поиску

Подготовить 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

Для вступления в силу изменений, следует еще раз перезагрузить роутер.

Ссылки