Лицензионно чистое ядро Linux (С)
Mar. 15th, 2010 09:51 pmТема Говна и NDA получила масштабное продолжение.
Любимый заказчик,впечатлённый нашей неземной красотой заманавшись с системной интеграцией, выделил две три недели на создание лицензионно чистой версии Linux ядра под целевой чип. Напоминаю - берём код совершенно постороннего вендора, скачанный с его сайта, и с помощью лома и такой то матери осуществляем портирование Board Support Package (BSP) с 2.6.15.4 (вышел 4 года назад) на 2.6.28.10 (максимально соответствует закрытой для нас версии исходников, на которую заказчик осуществляет интеграцию).
Волшебное застигло на старте - diff вендорского ядра от vanilla kernel 2.6.15.4 составил порядка 500kb. Вся инициализация, ethernet, i2c, модификации serial8250 и прочая.
Если этот патч концентрированного вендорского поноса показать в LKML (Linux Kernel Mailing List) - о голову авторов гарантированно будут бить бутылки, наполненные консервированной мочой Торвальдса, на уничтожение голов вместе с содержимым мозга. Концентрат кодификации кривохаков на скорую руку.
Этапы большого пути (каждый этап выполнялся 2-3 раза, с выкидыванием предыдущих неудачных результатов):
Итак, сегодня в 21:00 я впервые загрузил Лицензионно Чистое Ядро Linux (C) 2.6.28.10 на целевой платформе, NFSROOT.
Остался i2c. Предвижу столь же большой объём мозготраха, как и на tulip ethernet.
Алилуйя. Сим победим.
А вы начинаете каждое утро с аутотренинга - чтения вслух с выражением файла с говорящим названием Documentation/stable_api_nonsense.txt из дерева исходников Linux kernel?
Любимый заказчик,
Волшебное застигло на старте - diff вендорского ядра от vanilla kernel 2.6.15.4 составил порядка 500kb. Вся инициализация, ethernet, i2c, модификации serial8250 и прочая.
Если этот патч концентрированного вендорского поноса показать в LKML (Linux Kernel Mailing List) - о голову авторов гарантированно будут бить бутылки, наполненные консервированной мочой Торвальдса, на уничтожение голов вместе с содержимым мозга. Концентрат кодификации кривохаков на скорую руку.
Этапы большого пути (каждый этап выполнялся 2-3 раза, с выкидыванием предыдущих неудачных результатов):
- Перенос архитектурно-зависимых заголовочных файлов (все пути поменялись)
- Дописывание ассемблерного кода (ARM9) для распаковки образа (поменялось api распаковщика, автоматически сгенерённые переменные оказались невыровненными, что блокировало компиляцию). RISC, ага. Мозг анально дефлорирован.
- Жестокая нестандартная инициализация serial8250 c модификацией самого драйвера с комментариями "а вот эту проверочку мы уберём, наш чип её не любит и вообще это ошибка в ядре, но делать мы ничего не будем, а только прилепим кривохак".
- Кровавое портирование испохабленного драйвера tulip. Да, вендор использует свою собственный форк драйвера tulip, держит её в drivers/net/
_tulip, которая малосовместима даже со штатной tulip из 2.6.15.4, не говоря уже об 2.6.28.10. Я, будучи в душе хорошим мальчиком, попытался портировать _tulip похорошему, в основное дерево, но после полутора недель самовзлома мозга сдался, и сделал также как вендор - скопировал его дерево драйверов. А хули - они оторвали PCI c мясом и подключили чип по MII + переход 1.1.13 -> 1.1.15 в upstream kernel tulip сделал корректное портирование для моего уровня познаний в предмете невозможным. Но даже вдогонку мне ядро поднасрало, поменяв инициализацию NAPI в network devices, пришлось upstream внимательно смотреть.
Итак, сегодня в 21:00 я впервые загрузил Лицензионно Чистое Ядро Linux (C) 2.6.28.10 на целевой платформе, NFSROOT.
Остался i2c. Предвижу столь же большой объём мозготраха, как и на tulip ethernet.
Алилуйя. Сим победим.
А вы начинаете каждое утро с аутотренинга - чтения вслух с выражением файла с говорящим названием Documentation/stable_api_nonsense.txt из дерева исходников Linux kernel?