OpenWRT.su

Open.Wireless.Super and LEDE

Расширяем дисковую память Chaos Calmer 15.05.1 OpenWRT на USB флешку

После установки скомпилированной разработчиками OpenWRT прошивки Chaos Calmer 15.05.1 на ваш роутер с 4мб дисковой памяти вы обнаружите, что у вас осталось всего навсего 300кб для прочих нужд. Для решения одной задачи этого может и хватит, как например, для организации принт-сервера посредством OpenWRT, но никак не более. Поэтому логично первым делом заняться увеличением дискового пространства для маневров. И все это без компиляции собственной прошивки и прочих танцев с бубном. Когда нужно решать задачу быстро из того что имеем.

Имея доступ в интернет с нашего роутера, авторизуемся на нем через SHH соединение при помощи программы PuTTY и последовательно начнем:

Сначала обновляем список пакетов

opkg update

Далее устанавливаем поддержку USB устройств на нашем роутере

opkg install kmod-usb-storage

Далее нам нужна флешка, где вы заранее cоздали бы хотя бы 2 раздела, основной (пока не важно какой файловой системы) и так называемый раздел подкачки (стандартный linux swap). На моей 16Gb флешке я создал 3 раздела: первый на 1gb без файловой системы для расширения встроенной памяти устройства - собственно под overlay, второй самый большой раздел на 13gb тоже пока без файловой системы буду монтировать как отдельный том, и третий раздел на сотню с лишним мегабайт как файл подкачки linux. Разбить флешку на разделы через fdisk роутера не получится - не хватит памяти для установки нужных пакетов пока, поэтому сделать это придется на другой Linux машине или из под Windows, например, при помощи программы Minitool Partition Wizard

После чего готовую к форматированию вставляем в usb разъем и вводим команду:

dmesg | grep sd

[ 2598.210000] usb 1-1.4: new high-speed USB device number 4 using ehci-platform
[ 2598.330000] usb-storage 1-1.4:1.0: USB Mass Storage device detected
[ 2598.340000] scsi host1: usb-storage 1-1.4:1.0
[ 2599.340000] scsi 1:0:0:0: Direct-Access SanDisk Ultra Fit 1.00 PQ: 0 ANSI: 6
[ 2599.350000] sd 1:0:0:0: [sda] 30031250 512-byte logical blocks: (15.3 GB/14.3 GiB)
[ 2599.350000] sd 1:0:0:0: [sda] Write Protect is off
[ 2599.360000] sd 1:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 2599.360000] sd 1:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 2599.380000] sda: sda1 sda2 sda3
[ 2599.390000] sd 1:0:0:0: [sda] Attached SCSI removable disk

Флешка у меня определилась как sda1, sda2 и sda3. Все верно, 3 раздела. 

Ну есть одно НО, которое я еще решил стандартными средствами OpenWRT. Мы не можем создать разделы и отформатировать флешку в файловой системе f2fs при помощи утилит f2fs-tool –  mkfs.f2fs потому , что в прошивке не рабочая версия 1.4.0 данной программы. Некий бонус от сборщика прошивки так сказать. Поэтому создать разделы, отформатировать ее придется на другой Linux машине или приложении Windows.  

Далее устанавливаем собранный мной пакет f2fs-tools версии 1.4.1 для ветки 15.05.1, который поможет нам отформатировать флешку прямо с нашего роутера, вдруг даже виртуальной Linux машины нет под рукой. Cначала ставим утилиту форматирования в файловой системе F2FS:

opkg install http://openwrt.su/download/chaos_calmer/15.05.1/ar71xx/generic/packages/packages/f2fs-tools_1.4.1-1_ar71xx.ipk

Затем обновленную библиотеку поддержки файловой системы F2FS. 

opkg install http://openwrt.su/download/chaos_calmer/15.05.1/ar71xx/generic/packages/packages/libf2fs_1.4.1-1_ar71xx.ipk

Далее форматируем первый раздел нашей флешки в F2FS. 

mkfs.f2fs -l overlay /dev/sda1 

F2FS-tools: mkfs.f2fs Ver: 1.4.1 (2015-03-04)
Info: Label = overlay
Info: sector size = 512
Info: total sectors = 2045952 (in 512 bytes)
Info: zone aligned segment0 blkaddr: 256
Info: format version with
"Linux version 3.18.23 (buildbot@builder1) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r47269) ) #1 Sun Jan 31 18:39:35 CET 2016"
Info: Discarding device
Info: This device doesn't support TRIM
Info: format successful

И в моем случае еще и второй раздел

mkfs.f2fs -l data /dev/sda2

F2FS-tools: mkfs.f2fs Ver: 1.4.1 (2015-03-04)
Info: Label = data
Info: sector size = 512
Info: total sectors = 27645952 (in 512 bytes)
Info: zone aligned segment0 blkaddr: 256
Info: format version with
"Linux version 3.18.23 (buildbot@builder1) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r47269) ) #1 Sun Jan 31 18:39:35 CET 2016"
Info: Discarding device
Info: This device doesn't support TRIM
Info: format successful

Далее удаляем не нужные нам теперь libf2fs f2fs-tools

opkg remove f2fs-tools libf2fs

Устанавливаем поддержку файловой системы F2FS ядра. Не то, чтобы я ее ярый фанат, но она единственная - установочный модуль которой весит всего ничего и не тянет за собой кучу зависимостей. И разработана была специально для флеш носителей информации. 

opkg install kmod-fs-f2fs

Уже можем проверить как она монтируемся

mount /dev/sda1 /mnt

df

Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 512 408 104 80% /
/dev/root 2304 2304 0 100% /rom
tmpfs 14288 640 13648 4% /tmp
/dev/mtdblock3 512 408 104 80% /overlay
overlayfs:/overlay 512 408 104 80% /
tmpfs 512 0 512 0% /dev
/dev/sda1 1021952 143368 860152 14% /mnt

После того, как флешка смонтировалась, копируем на нее исходные данные для его последующего монтирования как доп память:

tar -C /overlay -cvf - . | tar -C /mnt -xf -

дабы не записалось ничего лишнего отмонтируемся

umount /mnt

Далее нам нужно установить пакет block-mount, который занимается монтированием дисков туда, куда ему укажут на этапе загрузки устройства. Но и тут подкралась вторая засада – пакет block-mount который предлагает репозитарий OpenWrt для ветки Chaos Calmer 15.05.1 – не поддерживает указание дисков в файловой системе f2fs как overlay устройств. Просто забыли прописать в данном пакете ее поддержку. Поэтому придется поставить усовершенствованную версию пакета block-mount, предоставленную мной, которая кстати сгодится для всех у кого ветка Chaos Calmer 15.05.1 и устройство на архитектуре ar71xx.

opkg install http://openwrt.su/download/chaos_calmer/15.05.1/ar71xx/generic/packages/base/block-mount_2016-01-10_ar71xx.ipk --force-checksum

block detect > /etc/config/fstab

У меня после команды block detect файл 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 '/mnt/sda1'
option uuid '4b41630a-8eb9-4380-84a9-fcc2e4295865'
option enabled '0
config 'mount'
option target '/mnt/sda2'
option uuid 'ade80f58-3666-4968-99bf-af1c02602771'
option enabled '0'
config 'swap'
option device '/dev/sda3'
option enabled '0

Открываем файл fstab в текстовом редакторе vi

vi /etc/config/fstab

Жмем букву i переходим в режим редактирования и приводим его к виду

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 '4b41630a-8eb9-4380-84a9-fcc2e4295865'
option enabled '1'
config 'mount'
option target '/mnt/sda2'
option uuid 'ade80f58-3666-4968-99bf-af1c02602771'
option enabled '1'
config 'swap'
option device '/dev/sda3'
option enabled '1'

То есть мы включили монтирование разделов на этапе загрузки системы, а также подмену внутренней памяти ( /overlay) на 1 раздел на флеш накопителе по его уникальному uuid номеру. Дальше жмем ESC, вводим символы

:wq

Что в Vi означают выйти записав изменения и жмем enter. Файл fstab перезаписался. Перезагружаем конфиги fstab: 

/etc/init.d/fstab reload

/etc/init.d/fstab enable

Наконец-то перегружаем наш роутер

reboot

После перезагрузки смотрим команду

df

и если все прошло как надо вы увидите что-то наподобие

Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 1021952 144408 859112 14% /
/dev/root 2304 2304 0 100% /rom
tmpfs 14288 76 14212 1% /tmp
/dev/sda1 1021952 144408 859112 14% /overlay
overlayfs:/overlay 1021952 144408 859112 14% /
tmpfs 512 0 512 0% /dev

Где вы видим, что раздел /dev/sda1 теперь и есть наша дисковая память. То же самое можно проверить зайдя в Luci на вкладку Software и увидеть, что для дальнейших извращений мы теперь готовы:

Таким образом мы расширили дисковую память нашего 4 мб OpenWRT роутера без каких-либо компиляций собственной прошивки и без внешней Linux машины под рукой. 

Комментарии  

Антоха
+4 # Антоха 01.01.2018 21:11
Отдельное спасибо за пропатченный block mount под f2fs :-) собрать сам не мог, и нигде найти тоже. Проверил на моем TP-LINK 3040 с простой стоковой 15.05 отлично монтирует диски в этой фс
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 13.01.2018 00:19
незачто, сам парился :-)
Ответить | Ответить с цитатой | Цитировать
Linux_Addict
-5 # Linux_Addict 07.01.2018 22:50
Поправьте линки на скачку, на [цензура] не работают ато
Ответить | Ответить с цитатой | Цитировать
ITshnik
+1 # ITshnik 08.01.2018 19:13
ОООООО богиииии, все заработало!!!! Спаси бо :P
Ответить | Ответить с цитатой | Цитировать
Wrtman
+1 # Wrtman 13.01.2018 00:18
Цитирую Linux_Addict:
Поправьте линки на скачку, на [цензура] не работают ато

Все работает, не надо ляля
Ответить | Ответить с цитатой | Цитировать
Юрий Подхолзин
+1 # Юрий Подхолзин 12.01.2018 23:57
С ext4 проканает? кто проверял
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 13.01.2018 00:20
Нет, если попробовать подключить поддержку kmod-fs-ext4 то попросту не хватит места даже поддержку usb установить отдельным пакетом
Ответить | Ответить с цитатой | Цитировать
Linux_Addict
0 # Linux_Addict 19.01.2018 22:47
Да ну, проще прошивку свою собрать и не парится херня
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 21.01.2018 17:19
Ну написано же, что это способ для тех, у кого нет возможности и желания собирать свою прошивку
Ответить | Ответить с цитатой | Цитировать
Гаян
0 # Гаян 25.01.2018 16:30
Спасибо за наводку по F2fs, действительно маленький модуль для ядра и независимый
Ответить | Ответить с цитатой | Цитировать
igrblkv
0 # igrblkv 07.06.2018 12:42
Цитата:
Жмем букву i переходим в режим редактирования и приводим его к виду
UUID'ы надо менять?
Т.е. было
Цитата:
config 'mount'
option target '/mnt/sda1'
option uuid '4b41630a-8eb9-4380-84a9-fcc2e4295865'
option enabled '0'
После редактирования
Цитата:
config 'mount'
option target '/overlay'
option uuid '6b76986b-0ad4-4c7e-9769-1529ef7d9eaa'
option enabled '1'
Ответить | Ответить с цитатой | Цитировать
Wrtman
+2 # Wrtman 07.06.2018 12:57
Нет, они генерируются автоматом. Оставляйте свои иисходные
Ответить | Ответить с цитатой | Цитировать
igrblkv
-1 # igrblkv 07.06.2018 13:10
Из примера в статье это, мягко говоря, неочевидно...
Тот кто тупо будет действовать "по инструкции" - накосячит себе...
Чем, кстати, черевата замена UUID? Просто загрузка произойдет по-старому, без участия флешки? Или совсем не загрузится?
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 07.06.2018 13:26
Uuid для каждой воткнутой флешки генерируется свой автоматически. Если флешку не найдет по uuid тто загрузка пойдет по обычному сценарию из памяти устройства
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 07.06.2018 13:30
Цитирую igrblkv:
Из примера в статье это, мягко говоря, неочевидно...
исправлю :-)
Ответить | Ответить с цитатой | Цитировать
igrblkv
+1 # igrblkv 07.06.2018 13:12
И ещё вопрос вдогонку:
Цитата:
/etc/init.d/fstab reload
this file has been obsoleted. please call "/sbin/block mount" directly
Ругается в ответ на
Цитата:
/etc/init.d/fstab reload
Игнорить?
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 07.06.2018 13:28
Это нормально для данной команды в последней версии chaos calmer. Не парься
Ответить | Ответить с цитатой | Цитировать
Александр
+1 # Александр 30.10.2018 21:51
Спасибо большое! Работает!
Ответить | Ответить с цитатой | Цитировать
Wrtman
0 # Wrtman 31.10.2018 00:25
Ну если статья Вам помогла - то это только радует 8) труд не прошел почем зря )
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий

Если вы хотите получать сообщения c ответами на ваши комментарии - то укажите свой настоящий e-mail. Если же вы тут проездом, чтобы оставить комментарий укажите в поле email no@openwrt.su