Расширяем дисковую память Chaos Calmer 15.05.1 OpenWRT на USB флешку
- Подробности
- Категория: Внешние устройства
- Опубликовано: 23 декабря 2017
- Просмотров: 23704
После установки скомпилированной разработчиками 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 машины под рукой.
Комментарии
Все работает, не надо ляля
Т.е. было
Цитата: После редактирования
Цитата:
Тот кто тупо будет действовать "по инструкции" - накосячит себе...
Чем, кстати, черевата замена UUID? Просто загрузка произойдет по-старому, без участия флешки? Или совсем не загрузится?
Цитата: Ругается в ответ на
Цитата: Игнорить?
Респект за статью
на днях перестал видеться примонтированный диск. глянул, а там флешка расплавилась ((
на ней светодиод был, по виду, как раз напротив него и выгнулось
root@OpenWrt:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 4544 1136 3408 25% /
/dev/root 2304 2304 0 100% /rom
tmpfs 14540 68 14472 0% /tmp
/dev/mtdblock6 4544 1136 3408 25% /overlay
overlayfs:/overlay 4544 1136 3408 25% /
tmpfs 512 0 512 0% /dev
/dev/sda2 2650112 226212 2397276 9% /mnt/sda2
root@OpenWrt:~# root@OpenWrt:~# df