LINUX.ORG.RU
 
int19h

TCCBOOT - динамическая компиляция ядра при загрузке


0

0

На днях появилась первая альфа-версия TCCBOOT - загрузчика ядра Linux, который позволяет динамически компилировать ядро из исходников во время загрузки. Для сборки ядра используется исключительно быстрый компилятор TCC (Tiny C compiler) того же автора, что позволяет собрать ядро за 15 секунд на P4 2.4GHz. На данный момент TCCBOOT протестирован только с ядром 2.4.26, для которого требуется небольшой патч, исправляющий некоторые не поддерживаемые (пока) TCC синтаксические конструкции.

>>> Подробности

СКАЖИ СВОЕМУ КОМПЬЮТЕРУ, ЧТОБЫ ЗАПЕР ДВЕРЬ

любительская автоматизация; устройство с открытой прошивкой
исходные тексты всех программ, открытые библиотеки
http://www.unicontrollers.com/products/unc01x

[#]  
Pi

Re: TCCBOOT - динамическая компиляция ядра при загрузке

ядро написано на шарпе и компилица джаст-ин-тайм компайлером от мелкософта

***** ()
[#]  
soko1

Re: Re: Переводчик для программера

хм, интересно однако. нужно будет попробовать. а под 2.6 не работает?

*** ()
[#]  
Pi

Re: TCCBOOT - динамическая компиляция ядра при загрузке

объясните убогому, а кому это надо?

***** ()
[#]  
soko1

Re: Re: Переводчик для программера

только я что-то догнать не могу, нафига эта сборка при каждой загрузке??? что она дает-то? не проще ли один раз скомпилировать и потом юзать долгое время? кто нить объяснит?

*** ()
[#]  
soko1

Re: Re: Переводчик для программера

Pi, вот и я про тоже...наверное чтобы повыпендриваться=) мол, вы все ломаки, юзаете одни и теже бинарники ядра, а я крутой кул-хацкер компилирую находу...

*** ()
[#]  
Selecter

Re: TCCBOOT - динамическая компиляция ядра при загрузке

WARNING: don't try to play with TCCBOOT unless you are a kernel hacker!

**** ()
[#]  
soko1

Re: Re: Переводчик для программера

Selecter, спасибо (я про цитату...), теперь все понятно. я был прав, сказав "кул-хацкер" (см. 5-е сообщение)=)

*** ()
[#] Ответ на: Re: Re: Re: Переводчик для программера от nightfly 27.10.2004 22:37:18  

Re: Re: Re: Re: Переводчик для программера

LiveCD в перспективе могут стать вконец офигевшими по части плотности прилегания к hardware, да и вообще - оптимизация весчь сугубо полезная.

anonymous ()
[#]  
soko1

Re: Re: Переводчик для программера

ой, сорри, не 5-е сообщение, а 6-е...

*** ()
[#]  
soko1

Re: Re: Переводчик для программера

скажите, кто нить из вас уже тестил эту фичу? как она вам?

вообщем поделитесь впечатлениями, как только поюзаете...

*** ()
[#]  

Re: TCCBOOT - динамическая компиляция ядра при загрузке

а кто-нибудь можешь объяснить как 34M tar.bz2 засунут на 5.9M .iso?

или там ещё и мегаархиватор прилагается?

* ()
[#]  

Re: TCCBOOT - динамическая компиляция ядра при загрузке

господа ракажите про этот интересный TCC (Tiny C compiler)

anonymous ()
[#]  

Re: TCCBOOT - динамическая компиляция ядра при загрузке

Однакооооо....

нет предела человеческому извращению =)

anonymous ()
[#]  
linuxsuxx_org

Re: TCCBOOT - динамическая компиляция ядра при загрузке

Компилиться быстро и сгенеренный код тормозит немеряно.
Вот это я панимаю 2 в 1!

()
[#]  

Re: TCCBOOT - динамическая компиляция ядра при загрузке

Эту хренотень не пробовал, но то что он написал QEMU - respect!!!

anonymous ()
[#]  

Re: TCCBOOT - динамическая компиляция ядра при загрузке

Офигеть...

** ()

Re: Re: TCCBOOT - динамическая компиляция ядра при загрузке

Вещь конечно может и интересная и быть может перспективная, но уж лучше присобачьте этот компилятор для обычных задач, что бы можно было бы весь дистр пересобрать за полчаса.

anonymous ()
[#]  

Re: Re: Re: Песни у пионерского костра

ребята идут дальше gentoo - one-time-kernel ;) следующим шагом, само-собой, будет сборка всей системы в момент загрузки. загрузчик будет спрашивать, какие программы сегодня нужны и собирать их, причем, за те же 15 секунд ;)

о! или даже так. программы будут собираться как только юзверь пытается их запускать.

пить надо меньше. меньше надо пить (с) "с легким паром"

()
[#] Ответ на: Re: Re: Re: Песни у пионерского костра от ultimate_dumb 28.10.2004 0:49:27  
baka-kun

Re: Re: Re: Re: Песни у пионерского костра

> программы будут собираться как только юзверь пытается их запускать.

Тоже мне, рокит саиенс. Сто лет в обед. JIT зовется.

**** ()
[#] Ответ на: Re: Re: Re: Песни у пионерского костра от ultimate_dumb 28.10.2004 0:49:27  
grob

Re: Re: Re: Re: Песни у пионерского костра

>о! или даже так. программы будут собираться как только юзверь пытается >их запускать.

все равно быстрее knoppix'а будет работать ;)

***** ()
[#]  

Re: TCCBOOT - динамическая компиляция ядра при загрузке

Интересно, а какой в этом смысл? Какова цель?

* ()
[#] Ответ на: Re: Re: Re: Песни у пионерского костра от ultimate_dumb 28.10.2004 0:49:27  

Re: Re: Re: Re: Сравнение Novell SLES9 vs Microsoft Win2k3 in a Windows Network

> о! или даже так. программы будут собираться как только юзверь пытается их запускать.

... что окончательно погубит технологию RPM ;)

* ()
int19h

Re: Re: TCCBOOT - динамическая компиляция ядра при загрузке

> объясните убогому, а кому это надо?

В принципе - никому (это на /. уже разжевали и выяснили, что принципиально сие ничего нового не дает). Но просто весело =) Это из того же разряда, что и веб-сервер на PHP. Хотя, кто знает, может сему чуду и найдут практическое применение...

На самом же деле, есть сильное подозрение, что это такой своеобразный промоушен для TCC: все-таки собрать ядро за 15 секунд - это сила.

А еще, как отметил кто-то на слэшдоте, кернелхакеров теперь низвели практически до статуса скриптописателей =)

**** ()
int19h

Re: Re: TCCBOOT - динамическая компиляция ядра при загрузке

> Интересно, а какой в этом смысл? Какова цель?

Вот, придумал!

Надо сваять LiveCD, на котором ядро будет при загрузке собираться с оптимизацией под проц. Можно даже дать юзеру флаги компиляции выбрать: "масса, вам с -O2, чтоб все медленно ползало, или с -O3, чтоб все быстро падало?" =)

**** ()
baka-kun

Re: Re: Re: TCCBOOT - динамическая компиляция ядра при загрузке

Достаточно при загрузке ядро _линковать_, а не компилировать. А все "полуфабрикаты" (*.o) с разными оптимизациями держать наготове.

Хотя это ничем и не отличается от загрузки ядерных модулей, только линковка статическая вместо динамической -- можно поэкономить на вызовах функций. ;)

**** ()
Harliff

Re: Re: TCCBOOT - динамическая компиляция ядра при загрузке

Конечно, на практике это и не найдет большого применения (ТАКИХ извращенцев все-таки не много), но сама технология переспективная. Если сверх-быстрая компиляция работает вообще, пусть и с очень ограниченым набором софта, то уже прогресс... В будущем можно создать очень динамичную систему, где все не первой необходимости при вызове качается из нета и компилируется за секунды. Представьте себе персборку всей системы (или просто некоторых частей, нуждающехся в обновлении) за минуты...

Я понимаю, куча народа скажет "я лучше бинарники качну или воспользуюсь gcc -- он хоть и медленен, но компилирует быстро и безглючно работающие проги"... Не забывайте, я говорю про будующее, т. к. сейчас эта технология не подходит для массового использования.

**** ()
[#]  

Re: TCCBOOT - динамическая компиляция ядра при загрузке

этот TCC сам по себе много места занимает? у меня вот GCC на хард не влезает -- cвободных 50Мб только, потому ядро пересобрать не могу. TCC поможет или нет?

anonymous ()
[#] Ответ на: Re: Re: Переводчик для программера от soko1 27.10.2004 22:31:05  

Re: Re: Re: Переводчик для программера

>а под 2.6 не работает ?

С ходу не получилось собрать, патч ,видать, надо... (((

вообще , я сомневаюсь что можно что либо существенное с помощью него

собрать, во всяком случае без подготовки...

147 Kb ... мдя... при таких размерах компилятор С

должен быть гениальным чтобы что нибудь собирать ... )))

anonymous ()

Re: Re: Re: Re: TCCBOOT - динамическая компиляция ядра при загрузке

Ну а потом автор начнет ваять свой тцц до уровня гцц и получим все теже 15 минут компиляции ядра. Может действительно надо гцц более модульным сделать? Не таким огромным, авось и сможет хотя бы за 30 секунд, но собрать ядро и все прочие проги.

anonymous ()
[#]  
qWen71n

Re: TCCBOOT - динамическая компиляция ядра при загрузке

Just for fun, гы, гы :)

*** ()
[#]  
soko1

Re: Re: Переводчик для программера

я все думаю над тем, что если он так быстро компилирует сишные файлы, то должны же быть и какие-то минусы. ну например как с флагами компиляции гцц (-O3), прога работает быстро, но нет гарантии что стабильно. что со стабильностью тут???

ЗЫ появилась хорошая идея (т.к. компилятор маленький), юзать этот тсс на дистрибе, который у меня на дискете...а то гцц что-то не влазит=)

*** ()
[#]  

Re: TCCBOOT - динамическая компиляция ядра при загрузке

а слаку под слакой он компилирует?

anonymous ()

Re: Re: Re: TCCBOOT - динамическая компиляция ядра при загрузке

> Для разработчиков ядра возможно такое может быть удобно.

Золотые слова! Именно для разработчиков ядра, или для тех кто пытается работать в этом направлении. Конечно собирать ядро каждый раз при старте - ИМХО маразм, но вот боротся с его "странностями" экспериментальным путем гораздо легче.

()
[#] Ответ на: Re: Re: Переводчик для программера от soko1 28.10.2004 6:02:41  

Re: Re: Re: Переводчик для программера

> ЗЫ появилась хорошая идея (т.к. компилятор маленький), юзать этот тсс на дистрибе, который
> у меня на дискете...а то гцц что-то не влазит=)

так ему ж все равно glibc и /usr/lib/include надо для компиляции

на дискету никак не влезет. на ZIP 100-мегабайтный, это да.

может когда-нибудь Патрик его в zipslack включит

anonymous ()

Re: Re: Re: Re: Re: TCCBOOT - динамическая компиляция ядра при загрузке

ММММ! Вобщем - то да... не подумал... Но вечерком обязательно попробую. А то все торкает дикое желание "побороть" во фрэймбуфере "снег" при переключении видеорежимов, а при том, что кернел-хацкер из меня никакой (пока), приходится действовать методом "подправили-собрали-посмотрели-обломились" ;).

()
[#]  

Re: TCCBOOT - динамическая компиляция ядра при загрузке

Уважаемые, может я настолько туп, но что-то это пахнет лажей...

Я все не пойму - компилятор-то как работает? Ему ведь тоже ресурсы немалые нужны - обращение к файлам, выделение памяти, там еще что-то. Кто этим всем рулит? Или у него еще и ядро свое есть, под которым он другое ядро компилит, а потом еще его и подгружает???????

* ()

Re: Re: TCCBOOT - динамическая компиляция ядра при загрузке

TCCBOOT reads C or assembly sources from a gzipped ROMFS filesystem stored in an Initial Ram Disk (initrd). It first reads the file 'boot/tccargs' which contains the TinyCC command line (same syntax as the tcc executable). The TinyCC invocation should output one binary image 'kernel'. This image is loaded at address 0x00100000. TCCBOOT then does a jump to the address 0x00100000 in 32 bit flat mode. This is compatible with the ABI of the 'vmlinux' kernel image.

Да и вообще

http://fabrice.bellard.free.fr/tcc/tccboot_readme.html

()
[#] Ответ на: Re: Re: Re: Песни у пионерского костра от ultimate_dumb 28.10.2004 0:49:27  

Re: Re: Re: Re: Песни у пионерского костра

>о! или даже так. программы будут собираться как только юзверь пытается их запускать.

Да. именно для этого он и задумывался:

#!/usr/local/bin/tcc

void main() { printf("Hello World"); }

При таком запуске он компилирует в память и тут же запускает.

>Надо сваять LiveCD, на котором ядро будет при загрузке собираться с оптимизацией под проц. Можно даже дать юзеру флаги компиляции выбрать: "масса, вам с -O2, чтоб все медленно ползало, или с -O3, чтоб все быстро падало?" =)

После того, как допишешь в tcc оптимизацию. (С сохранением скорости компиляции)

>этот TCC сам по себе много места занимает? В архиве 147 Kb...

У этого типа есть еще otcc, так тот вообще около 4Кб занимает.

>при таких размерах компилятор С должен быть гениальным чтобы что нибудь собирать ... )))

Он таки и есть гениальный.

>там в архиве исходники которые предлагается собирать GCC :L((((

Если я правильно помню, его потом можно пересобрать им-же самим.

*** ()
[#] Ответ на: Re: Re: Переводчик для программера от soko1 27.10.2004 22:35:50  
vitus

Re: Re: Re: Переводчик для программера

> не проще ли один раз скомпилировать и потом юзать долгое время?

Ну так один раз грузишься, а потом юзаешь машину долгое время. Я лично не вижу других причин перезагрузки линкусовых машин кроме как смена ядра.

* ()
[#] Ответ на: Re: Re: Re: Re: Песни у пионерского костра от smartly 28.10.2004 10:16:29  
mikhail

Re: Re: Re: Re: Re: Песни у пионерского костра

>#!/usr/local/bin/tcc

>void main() { printf("Hello World"); }

GCC с такими штуками выдаёт invalid preprocessing directive #!

>Я лично не вижу других причин перезагрузки линкусовых машин кроме как смена ядра.

Ноутбук? Экономия электроэнергии? Звук кулеров мешает кому-то спать?

# ()