Содержание

Домашний Wi-Fi маршрутизатор

Пришла пора сменить домашний сервер на домашний маршрутизатор! =)

Заодно перевести домашнюю сеть на скоростной Wi-Fi стандарта 802.11n. Теоретически скорость передачи файлов с файлового сервера через маршрутизатор к беспроводным клиентам будет упираться в 100 Mb/s lan-интерфейса, т.е. останется такой же как и прежде. А практически - станет известно только после установки, настройки и тестирования.

Итак, поехали…

Маршрутизатор построен на базе платформы Alix2d13 с напаянным процессором AMD Geode 500 MHz и памятью объёмом 256 MB на борту. Беспроводную сеть обеспечивает miniPCI адаптер Compex WLM200N5 с двумя антеннами. В качестве носителя для операционной системы использована Compact Flash карта на 4 GB. Всё это упаковано в замечательный алюминиевый корпус красного цвета.

Сервер сетевой загрузки

Так как карт-ридера для Compact Flash у меня нет, а плата Alix умеет грузиться по сети, то было решено устанавливать Debian с помощью PXE-загрузки. Для этого понадобилось создать сервер сетевой загрузки. Я использовал уже имеющийся у меня на домашнем сервере DHCP-демон dnsmasq, который также умеет работать в режиме PXE и TFTP-сервера. Так как DHCP уже настроен, то оставалось сделать:

Подключение и загрузка Alix

Тут всё просто:

Установка ОС

После загрузки платы по сети началась стандартная установка операционной системы Debian Linux. Карта памяти определилась как диск /dev/sda. Процесс установки прошёл как обычно, за исключением настройки файловой системы для работы на CF-карте (см. следующие разделы):

Настройка ОС

В процессе установки инсталлятор определил, что используется последовательный терминал и автоматически добавил необходимые параметры. Проверяем и доделываем мелочи:

Оптимизация ОС

Так как вместо жётского диска используется Compact Flash карта с ограниченным ресурсом циклов записи в ячейки памяти, то пришлось настроить операционную систему для уменьшения операций записи:

Перемещение части ФС в память

Следующим шагом, сильно сокращающим количество циклов записи, стало перемещение часто изменяющихся разделов ФС в память:

Синхронизация памяти с диском

Для надёжности можно периодически сбрасывать содержимое tmpfs разделов на CF-карту:

Оптимизация параметров ядра

Так как система работает без раздела подкачки, то необходимо указать ядру ряд параметров для более стабильной работы: 3)

/etc/sysctl.d/cf.conf
# specific tuning for flash drive
vm.swappiness = 0
vm.laptop_mode = 0
vm.dirty_writeback_centisecs = 12000
vm.dirty_expire_centisecs = 12000
vm.dirty_ratio = 10
vm.dirty_background_ratio = 1

Пояснения к параметрам:

How many seconds after a read should a writeout of changed files start (this is based on the assumption that a read will cause an otherwise spun down disk to spin up again). If you don’t need to write dirty data after every read, you sould disable it by setting it to 0.

How often the kernel should check if there is «dirty» (changed) data to write out to disk (in centiseconds).

How old «dirty» data should be before the kernel considers it old enough to be written to disk. It is in general a good idea to set this to the same value as dirty_writeback_centisecs above.

The maximum amount of memory (in percent) to be used to store dirty data before the process that generates the data will be forced to write it out. Setting this to a high value should not be a problem as writeouts will also occur if the system is low on memory.

The lower amount of memory (in percent) where a writeout of dirty data to disk is allowed to stop. This should be quite a bit lower than the above dirty_ratio to allow the kernel to write out chunks of dirty data in one go.

Заключение

Следующие этапы работы: настройка служб Wi-Fi, настройка брандмауэра и NAT, тестирование скорости, обеспечение бесперебойного питания.