Using username "root". root@192.168.1.7's password: BusyBox v1.19.4 (2013-03-14 11:28:31 UTC) built-in shell (ash) Enter 'help' for a list of built-in commands. _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- ATTITUDE ADJUSTMENT (12.09, r36088) ----------------------------------------------------- * 1/4 oz Vodka Pour all ingredients into mixing * 1/4 oz Gin tin with ice, strain into glass. * 1/4 oz Amaretto * 1/4 oz Triple sec * 1/4 oz Peach schnapps * 1/4 oz Sour mix * 1 splash Cranberry juice ----------------------------------------------------- root@OpenWrt:~#
Это означает, что для создания правильной флешки нужен компьютер с практически любой современной Unix системой, умеющей работать с USB носителями. Также хватит любого установочного диска, с которого можео загрузиться в rescue mode и войти в шелл.
Вставив свежекупленную флешку в такой компьютер, следует убедиться в том, что до вставления устройства /dev/sdb не было, а после вставления - /dev/sdb появилось. В зависимости от числа жёстких дисков и вставленных устройств последняя буква меняется (/dev/sda /dev/sdc). Далее я поразумеваю, что флешка подключилась как /dev/sdb.
Сначала стираем единственную (как правило, флешка отформатирована "как супердискета", если смотреть интеллектуальной программой типа Acronis Disk Director)
Опыт показывает, что для получения нужного нам результата правильнее начать с создания чистой partition table, но в случае стандартной форматированной "как супердискета" флешки достаточно сделать так:
root@LinuxWs:~# ls /dev/sdb* /dev/sdb /dev/sdb1 root@LinuxWs:~# fdisk /dev/sdb fdisk> d ... Command (m for help): w ... root@LinuxWs:~#
root@LinuxWs:~# ls /dev/sdb* /dev/sdb root@LinuxWs:~#
Чтобы застраховать эту флешку от такой неприятности (мало ли, вытащите сами случайно и вставите), я лично делаю разбивку флешки, в которй первой партицией идёт FAT32 партиция "для Windows", своп второй партицией, будущий рут роутера - третьей партицией.
Так же я лично проверил. Что если "партицию для Windows" сделать НЕ ПЕРВОЙ, то Windows 8 и 10 при её монтировании ошибается в её размере, и показывает размер первой, линуксовой партиции. Поэтому делать "партицию для Windows" первой - в конечном итоге более безопасный вариант, нежели все прочие.
В большинстве аналогичных руководств такой страховки не предусмотрено.
root@LinuxWs:~# ls /dev/sdb* /dev/sdb /dev/sdb1 root@LinuxWs:~# fdisk /dev/sdb Command (m for help): n Command (m for help): p First (...): Last sector (...): +8G Command (m for help): t ... Hex (l for available codes): b Command (m for help): n Command (m for help): p First (...): Last sector (...): +512M Command (m for help): t ... Hex (l for available codes): 82 Command (m for help): n Command (m for help): p First (...): Last sector (...): ... Command (m for help): w ... root@LinuxWs:~#В этом месте так же должно быть замечание 1.
mkfs.fat /dev/sdb1 mkfs.ext4 /dev/sdb3Любое сообщение об ошибке на этом этапе, даже если это warning - не следует игнорировать! Если warning на этапе создания журнала - вместо mkfs.ext4 можно использовать mkfs.ext2 - для нашей задачи нет никакой разницы.
root@LinuxWs:~# mkdir /mnt root@LinuxWs:~# mount /dev/sdb1 /mnt root@LinuxWs:~# touch /mnt/Test root@LinuxWs:~# ls /mnt/ Test lost+found root@LinuxWs:~# umount /mnt root@LinuxWs:~# mount /dev/sdb3 /mnt root@LinuxWs:~# touch /mnt/Test root@LinuxWs:~# ls /mnt/ Test lost+found root@LinuxWs:~# umount /mnt
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 1.1M 212.0K 876.0K 19% /
/dev/root 2.0M 2.0M 0 100% /rom
tmpfs 14.3M 436.0K 13.8M 3% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
/dev/mtdblock3 1.1M 212.0K 876.0K 19% /overlay
overlayfs:/overlay 1.1M 212.0K 876.0K 19% /
root@OpenWrt:~#
Как хорошо видно, тут на overlay 876 килобайт свободного места. В версии
12.0.9 эта партиция хотя бы 1 мегабайт размером.
А вот в 14 и 15 версиях - 512K. Именно поэтому мной выбрана 12.0.9,
хотя народ в сети рекомендует ставить более поздние.
opkg update opkg install block-mount kmod-usb-ohci kmod-usb-storage kmod-fs-ext4 opkg install kmod-usb-uhci insmod uhci insmod usb-ohciПодводный камень. При установке этого набора пакетов в более поздние версии OpenWRT может просто не хватить места.
root@OpenWrt:~# ls /dev | grep sda sda sda1 sda2 sda3 root@OpenWrt:~# mkdir /mnt/sda3 root@OpenWrt:~# mount /dev/sda3 /mnt/sda3Важное замечание - в OpenWRT скорее всего сработает автомонтирование, и если флешка и файловые системы на ней полностью исправны, mkdir и-или mount покажут, что уже всё есть.
Если же смонтировать диск не получилось и "руками" - вероятнее всего, что файловая система повреждена.
root@OpenWrt:~# tar -C /overlay -cvf - . | tar -C /mnt/sda3 -xf -
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 /overlay option device /dev/sda3 option fstype ext4 option options rw,sync option enabled 1 option enabled_fsck 0 config swap option device /dev/sda2 option enabled 0Перезагрузите роутер
root@OpenWrt:~# rebootЕсли вы не можете зайти через ssh, значит копирование файлов прошло неправильно. Выньте флэшку, перезагрузите его через питание. Когда он запустится, вы сможете зайти туда через ssh. Затем снова вставьте флэшку и повторите предыдущие шаги, внимательно исследуя, где ошиблись.
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 6.3G 5.2M 6.0G 0% /
/dev/root 2.0M 2.0M 0 100% /rom
tmpfs 14.3M 356.0K 13.9M 2% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda3 6.3G 5.2M 6.0G 0% /overlay
overlayfs:/overlay 6.3G 5.2M 6.0G 0% /
root@OpenWrt:~#
Вот теперь у нас 6 гигабайт свободного места!
root@OpenWrt:~# free
total used free shared buffers
Mem: 29212 18816 10396 0 2444
-/+ buffers: 16372 12840
Swap: 0 0 0
root@OpenWrt:~#
Для решения проблем с памятью можно использовать партицию swap,
под которую мы отвели на флешке 512M.
root@OpenWrt:~# mkswap /dev/sda2
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=29de33e2-ffb7-4f3e-866b-8c80adca50ac
root@OpenWrt:~# swapon /dev/sda2
root@OpenWrt:~# free
total used free shared buffers
Mem: 29212 19196 10016 0 2456
-/+ buffers: 16740 12472
Swap: 524284 0 524284
root@OpenWrt:~#
root@OpenWrt:~# vi /etc/init.d/swaponСодержимое скрипта:
#!/bin/ash /etc/rc.common START=109 STOP=151 start() { echo "start swap" swapon /dev/sda2 } stop(){ echo "stop" }Сделайте его исполняемым:
root@OpenWrt:~# chmod +x /etc/init.d/swaponТеперь нужно сделать symlink с /etc/rc.d на него:
root@OpenWrt:~# ln -s /etc/init.d/swapon /etc/rc.d/S109swaponS109 сообщает системе приоритет скрипта. Все файлы в /etc/rc.d начинаются с S##. S109 должен разместить его в самом конце, после того, как запустятся все остальные.
root@OpenWrt:~# free
total used free shared buffers
Mem: 29212 19196 10016 0 2456
-/+ buffers: 16740 12472
Swap: 524284 0 524284
root@OpenWrt:~#