Вот наконец и я стал обладателем wl500gp, бо назрела необходимость и появилась возможность. Прошил последнюю прошивку местного рОзлива и начал дорабатывать напильником под свои потребности В связи с этим возникли вот такие вопросы:
* При загрузке роутера запускается /linuxrc, затем /sbin/rc, что происходит дальше? Вопрос: Кто запускает thttpd, telnet и все остальные демоны? Кто вытаскивает данные из nvram (насколько я понял, это просто раздел на флэше) и на их основе формирует всё начальное содержимое tmpfs?
* У меня на интерфейсе WAN (то бишь VLAN1) имеются две сети: 85.249.169.* и 192.168.56.*. Мой роутер имеет статический адрес в сегменте 85.249.169.*. При этом, чтобы связь с компьютерами из сегмента 192.168.56.* была быстрее, лучше всего добавлять роут на эту сеть прямо на интерфейс VLAN1, примерно так:
Code:
ip r add 192.168.56.0/21 dev vlan1
К сожалению, это приходится делать из post-boot, ибо веб-интерфейс на странице роутинга требует обязательно указывать шлюз (которого в данном случае просто нет). Вопрос: Насколько сложно модифицировать веб-морду, чтобы шлюз стал необязательным, и стартовые скрипты, чтобы в случае отсутсвия шлюза генерировался маршрут примерно такого вида, как нарисовано выше?
* dnsmasq. С этой программой я работаю давно и с удовольствием, поэтому решил тут задействовать его на всю катушку. Но, к сожалению, приходится целиком замещать dnsmasq.conf причём довольно жёстко: в post-boot я прописал так:
Code:
cp /usr/local/etc/dnsmasq.conf /etc/dnsmasq.conf
killall dnsmasq
dnsmasq
(по какой-то причине dnsmasq не реагирует на kill -HUP). Есть ли более изящный способ добавить несколько опций к существующему конфигу dnsmasq? Например, в dnsmasq.conf есть возможность указать каталог, из которого он прочтёт все файлы и проинтерпретирует как дополнительные конфиги:
Code:
conf-dir=/usr/local/etc/dnsmasq.d
а дальше в /usr/local/etc/dnsmasq.d я создам свой собственный конфиг и задам/переопределю все опции, которые захочу.
Вопрос: насколько сложно сделать так, чтобы штатный /etc/dnsmasq.conf всегда содержал в конце эту строчку?
* Ещё одна фигня случилась, когда я решил задать на адрес 192.168.1.1 личное имя, не удосужившись посмотреть на веб-морду в которой такая опция есть. Поэтому я просто создал свой собственный файл /usr/local/etc/hosts, добавил в /usr/local/.files строчку "/etc/hosts" и вписал туда:
Code:
127.0.0.1 localhost.localdomain localhost
192.168.1.1 gate.home.lan gate my.router my.WL500gp
Но после перезагрузки я сделал cat /etc/hosts, и обнаружил что строчки стали размножаться почкованием:
Code:
127.0.0.1 localhost.localdomain localhost
192.168.1.1 gate.home.lan gate my.router my.WL500gp
127.0.0.1 localhost.localdomain localhost
192.168.1.1 my.router my.WL500gp
127.0.0.1 localhost.localdomain localhost
192.168.1.1 gate.home.lan gate my.router my.WL500gp
Причём наметилась тенденция увеличения количества строк на две при каждой перезагрузке. Я конечно испугался что в один прекрасный день у меня файл разрастётся настолько, что не поместится на tmpfs и тогда мой роутер просто перестанет грузиться. Удалил /usr/local/etc/hosts, удалил .files, однако при каждой перезагрузке роутера в файле /etc/hosts продолжает добавляться по две строки! Вопрос: Что делать и кто виноват?
* В домашней сети настроил DHCP. Всё прекрасно работает, dnsmasq складывает выделенные адреса в файл /etc/dnsmasq.log. Однако при перезагрузке роутера этот файл, к несчастью, теряется, что приводит к тому, что dnsmasq "не помнит" кому какие адреса выдал, а главное - забывает локальные имена. То есть мой компьютер, к примеру, резко забывает что он называется zap.home.lan, что приводит к задержкам при запуске некоторых приложений (они пытаются отрезолвить это имя). Вопрос: насколько сложно сделать, чтобы файл /tmp/dnsmasq.log сохранялся при перезагрузке роутера?
-----------------------------
Спасибо всем, кому хватило терпения прочитать до этого места :-) В качестве награды дарю рецепт разноцветной строчки подсказки командной строки: создайте файл /usr/local/etc/profile со следующим содержимым:
Code:
#!/bin/sh
export PS1="\r\[\e[1;37m\][\[\e[34m\]\u\[\e[37m\]@\[\e[32m\]\h\[\e[37m\]|\[\e[36m\]\w\[\e[37m\]]\[\e[0;36m\]"
После этого сделайте файл запускаемым и запишите всё на flashfs:
Code:
chmod a+x /usr/local/etc/profile
flashfs save; flashfs commit; flashfs enable
И, кстати, между делом последний вопрос - что делает команда flashfs enable? save формирует архив, commit записывает его на /dev/mtd4, а enable? Нужно ли делать enable каждый раз, или достаточно одного?