madf: (Default)
[personal profile] madf
Значить, є у мене прокт карвош. Там автоматизація помивки машин, як виходить із назви. Проект старий, почався ще десь у 2007-му, або навіть раніше. Рулить там всім „тіпа промисловий комп“ — ebox-2300sx. Ну він, звісно, ніфіга не промисловий, зате маленький, крутенький і x86.

Так от, на фулл-таймі я ним займався до осені 2009-го року, коли я пішов працювати в ГТС. Я прекрасно пам’ятаю цей момент: вечір, всі навколо свіяткують день народження, пьють пиво, а мені треба зібрати драйвер мережі на цю фіговину, і завтра вже на роботу в ГТС. А там проблема в тому шо комп цей — привіт із 90-х. FPU немає, IDE не стандартний, мережева карта нестандартна і все таке. Сам виробник пропонує на вибір вланий Linux, власне ядро у вигляді бінарника або патчі на 2.6.18 (дякувати богові не на 2.4). Так от, тоді я все зібрав і все запустив на ядрі 2.6.21.1 і в такому вигляді воно проіснувало аж до сьогоднішнього дня.

І була у нас одна проблема — з годинником. Не зважаючи на синхронізацію, він постійно кудись тікав. Іноді на години, іноді на дні. Один раз я бачив на рік. В принципі, воно парило не сильно, але якщо у проміжок між стартом і синхронізацією встигала потрапити якась статистика — в базу летіли дублікати і все було погано. А якшо інтернету довго не було, то все було ще гірше. Коли компів стало багато, більше 300 штук, проблема стала парити і на неї почали звертати увагу. Спочатку грішили на батарейки для BIOS, потім ще на шо, але нічого ен підходило. І от, приблизно пів року тому, я задумався: „А воно хоч в RTC пише все що синхронізує?“. І глянув. І побачив, що

# hwclock -w
hwclock: can't open '/dev/misc/rtc': No such file or directory

Біда-біда. Але невелика. Там статичний /dev, тож я просто

mknod /dev/misc/rtc c 254 0

І знову дивлюся. І тепер воно же не те пише:

# hwclock -w
hwclock: can't open '/dev/misc/rtc': No such device or address

Біда-біда. Драйверу RTC немає. Проблема зрозуміла, треба вирішувати. Але я там не на фулл-тайм працюю, і задач там різних ще багацько, тож я просто запам’тав шо треба взяти ядро і зібрати для нього модуль RTC. От тільки конфігів на нього немає :)

І от, минулої п’ятниці я думаю: „О, кльово, 3 вихідних! Можна попрацювати! Значить так, у суботу займаюсь карвошем, у неділю відпочиваю а в понеділок чимось ще.“. Прийшла субота, взяв я, значить, 2.6.21 (не 2.6.21.1) і почав збирати. Тут фішка в тому що ядро має прийняти модуль як свій рідний, а оригінального конфігу немає. Перевірка йде по архітектурі, наявності SMP, точній версії ядра і target CPU. Оскільки у мене версія трошки інша — я просто додав „.1“ в Makefile. Ну в кінці кінців зібрав той модуль, і ядро навіть його завантажило, але ніфіга RTC в ситемі не з’явився. І всю суботу я бодався з тим модулем і дійшов висновку що RTC без PNP не працює. А ядро зібрано без PNP. Можна, звісно, замінити ядро цілком, але для цього треба перезавантажувати комп, а він там працює і обслуговує всяку гідравліку. Неприємно, клієнти не зрозуміють. Але що ж робити. О 2:30 я плюнув і вирішив продовжити наступного... еее... після сну :)

У неділю, зрозумівши що треба міняти ядро цілком, вирішив поставити щось більш свіже. Тут треба згадати що я уже пробував зібрати ядра 3-ї гілки, і не виходило, бо у мене застарілі linux headers. Тому я взяв 2.6.32.67 — longterm із гілки 2.6. Проблема ще була у тому що я не міг використовувати menuconfig — він сегфолтав. Тому тільки олдскул, тільки хардкор — make oldconfig і ручне редагування .config. І тут я уже прохавав фішку, точніше поцупиів із хабрастатті: можна взяти готовий конфіг із фірмового XLinux, натравити на нього oldconfig і все має злетіти. Але не виходила кам’яна квітка. Драйвер IDE сипав помилками DMA і все зависло ще на етапі завантаження. Самі виробники пишуть, що їх чіпсет уміє UltraDMA, але уміє погано. Тому стандартний драйвер не працює, і треба примусово перемикати його у режим MDMA, на що у них є патчений драйвер на 2.6.18. От тільки змін між 18 і 32 стільки що патч взагалі ну ні в які ворота. Я пробував розбирати той патч і код драйвера в 2.6.32, і шось там корячити, але нічого не виходило. Ще виробники пишуть що воно вміє працювати на Generic IDE, але і так теж не працювало. Чувак із хабрастатті пише що йому вдалося запустити на 2.6.37, але і на цьому ядрі у мене теж нічого не злетіло. Так я промустився знову до 2:30 і пішов спати.

У понеділок — бекап-план. Берем 2.6.21, і збираємо його з нуля. Але проблема в тому що у 2.6.21 немає драйверу мережевої карти, але є патч на 2.6.18 який його додає. І патч ліг майже без проблем — був тільки один реджект який я поправив ручками. А ще патч править драйвер IDE... Зібрав, включаю — не працює! При цьому на over 300 компах працює! Мучився-мучився, поки не додумався вирубити нативний драйвер і запустити на Generic IDE. Допоміг аналіз бутлогів з робочих екземплярів, в вдумливе блукання по /sys. І на Generic IDE воно злетіло! При цьому на 2.6.32.67 не злітало! Такі справи.

Але це тільки половина справи, треба ще ввімкнути RTC. Вмикаю, запускаю, і знаєте шо воно мені каже?

rtc_cmos: probe of 00:05 failed with error -16

Тут треба подякувати чувакам з гентушного форуму, які уже з цією проблемою стикались. Драйверів RTC є ажно два: старий і новий. І треба використовувати новий. Ну шо, на новому все завелось. Зібрав ядро монолітом, щоб зручніше оновлювати, але з підтримкою модулів, шоб якшо шо. Кілька разів прогнав сценарій оновлення і скинув все це добро, разом із сценарієм адміну. І домовився з замовником про тести. Домовились на сьогодні.

А тепер тим хто дочитав до сюди — ржака:

[20:24:59] <Maxim Mamontov> 4-й пост
[20:25:14] <Maxim Mamontov> Заряжай
[20:25:17] <Maxim Mamontov> Там щас пусто
[20:25:21] <Maxim Mamontov> Можно ребутать
[20:26:04] <SpiderX> да какое ребутать, я еще даже впн не запустил :)
[20:26:20] <Maxim Mamontov> Ну ты даешь
[20:26:29] <Maxim Mamontov> 10 минут прошло!
[20:26:52] <SpiderX> Да, расслабился :)
[20:30:13] <SpiderX> 13 минут назад там мылись холодной водой =)
[20:30:19] <SpiderX> Так что все норм =)
[20:30:28] <Maxim Mamontov> Там азкрыто
[20:32:26] <Maxim Mamontov> Скажешь какая там дельта была с RTC
[20:32:49] <SpiderX> он уже в ребуте
[20:33:11] <Maxim Mamontov> Главное чтобы вернулся :)
[20:33:36] <SpiderX> пинга нет )
[20:33:40] <Maxim Mamontov> Плохо :)
[20:34:50] <SpiderX> ну все работает вроде
[20:34:53] <Maxim Mamontov> Фух
[20:35:05] <Maxim Mamontov> Ща я наберу Андрея чтобы там попрыскали чем-то
[20:35:17] <SpiderX> ~ # hwclock -w
hwclock: can't open '/dev/misc/rtc': No such file or directory
[20:35:58] <Maxim Mamontov> Найс
[20:36:01] <Maxim Mamontov> Где девайс? :)
[20:36:06] <SpiderX> Его нет :)
[20:36:10] <Maxim Mamontov> Там c 254 0
[20:36:34] <Maxim Mamontov> Ты после всех изменений в r/o перемонтировал?
[20:36:59] <SpiderX> да
[20:37:03] <Maxim Mamontov> Странно
[20:37:03] <SpiderX> тупо копировал команды
[20:37:13] <Maxim Mamontov> Ну создай руками
[20:37:18] <SpiderX> # Huawei E161 activation - а это зачем?)
[20:37:21] <Maxim Mamontov> Надо ж проверить ради чего все это затевалось
[20:37:34] <Maxim Mamontov> Это для укртелекомовского модема :)
[20:37:52] <Maxim Mamontov> Если ядро ок — почищу в прошивке
[20:38:42] <Maxim Mamontov> Наверное после всех этих команд имеет смысл делать sync
[20:38:59] <SpiderX> дважды :D
[20:39:05] <Maxim Mamontov> ^)
[20:39:10] <Maxim Mamontov> Ну че там девайс?
[20:40:29] <SpiderX> ~ # hwclock -w
hwclock: can't open '/dev/misc/rtc': No such device or address
[20:40:36] <Maxim Mamontov> Ядро какое?
[20:40:59] <SpiderX> Linux TinyGentoo 2.6.21.1 #5 Sun Oct 25 15:29:44 UTC 2009 i486 unknown
[20:41:03] <Maxim Mamontov> Не обновилось
[20:41:12] <SpiderX> ну твои команды не рулят :D
[20:41:18] <Maxim Mamontov> Мои команды рулят
[20:41:24] <Maxim Mamontov> Кто-то просто не умеет ими пользоваться :)
[20:41:46] <SpiderX> бля
[20:41:48] <SpiderX> не тот пост
[20:41:53] <Maxim Mamontov> Ахаха
[20:41:55] <Maxim Mamontov> ОЛОЛО
[20:42:02] <Maxim Mamontov> „Я не тот двигатель вырубил“
[20:42:33] <SpiderX> я ж на другой заходил, чтобы локально ловить 4 пост в сети
[20:42:44] <Maxim Mamontov> Отмазки не канают!
[20:43:01] <SpiderX> ~ # uname -a
Linux TinyGentoo 2.6.21 #15 Tue Jun 30 18:23:39 UTC 2015 i486 unknown

Profile

madf: (Default)
madf

April 2018

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 7th, 2026 09:14 pm
Powered by Dreamwidth Studios