The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как загрузить модуль ядра из программы на СИ"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как загрузить модуль ядра из программы на СИ"  
Сообщение от Dethman email(ok) on 23-Июн-06, 13:26 
Вобщем нужно загрузить модуль из программы на Ц...
хотелось бы чтобыть це просто делалось %)
Смысл сего действия - свой инитрд... сумбурно ...
попутный вопрос - как из проги на Ц создать лооп девайс и прикрутить к нему файл %)
ну типа то что делаеться как losetup /dev/loop0 /mnt/cdrom/root.fs %)
оч нада !
Спасибы за поможь!
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от smb on 23-Июн-06, 14:49 
>Вобщем нужно загрузить модуль из программы на Ц...
>хотелось бы чтобыть це просто делалось %)
>Смысл сего действия - свой инитрд... сумбурно ...
>попутный вопрос - как из проги на Ц создать лооп девайс и
>прикрутить к нему файл %)
>ну типа то что делаеться как losetup /dev/loop0 /mnt/cdrom/root.fs %)
>оч нада !
>Спасибы за поможь!

Ну так и делай :)))
vfork(), exec() -> "losetup .....", потом в main process open() и вперед да с песней....
А вообще - смотри сорцы загрузки модуля :))) (kldload(*bsd), modprobe, insmod(linux))
Если же влом - пускай через указанный vfork() exec() =)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от Dethman email(ok) on 23-Июн-06, 15:12 
Самоцель была - LiveCD ;) все это надо сделать из initrd

>Ну так и делай :)))
>vfork(), exec() -> "losetup .....", потом в main process open() и вперед да с песней....
>А вообще - смотри сорцы загрузки модуля :))) (kldload(*bsd), modprobe, insmod(linux))
>Если же влом - пускай через указанный vfork() exec() =)

Мысль дельная, так сейчас и работает :
а мне хочеться без внешних приложений (т.е. что бы выкинуть из initrd бизибокс) %)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от chip email(ok) on 23-Июн-06, 22:13 
>Самоцель была - LiveCD ;) все это надо сделать из initrd

initrd грузится до загрузки ядра. Как предлагается подгружать модули на еще не загруженном ядре?

ps: возможно, моё суждение ошибочно, потому что initrd я толком не ковырял давным-давно, а сохранившиеся познания устарели или ошибочны.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от Dethman email(??) on 27-Июн-06, 11:29 

>initrd грузится до загрузки ядра. Как предлагается подгружать модули на еще не
>загруженном ядре?
initd это такой микро ОС (линух) каторый запускается после загрузки ядра, что бы загрузить нужные модули (например скази контролера драфа)

>ps: возможно, моё суждение ошибочно, потому что initrd я толком не ковырял
>давным-давно, а сохранившиеся познания устарели или ошибочны.
все познается в процессе ;)


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от chip email(??) on 28-Июн-06, 00:00 
>
>>initrd грузится до загрузки ядра. Как предлагается подгружать модули на еще не
>>загруженном ядре?
>initd это такой микро ОС (линух) каторый запускается после загрузки ядра, что
>бы загрузить нужные модули (например скази контролера драфа)

Так initrd (Ваше: "свой инитрд... сумбурно ...") или initd? Про последний вообще первый раз слышу. А первый грузится _до_ загрузки ядра о чем и гласит (man initrd):
       The  special  file  /dev/initrd  is  a  read-only block device.  Device
       /dev/initrd is a RAM disk that is initialized (e.g. loaded) by the boot
       loader before the kernel is started.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от Dethman email(??) on 28-Июн-06, 10:58 
>Так initrd (Ваше: "свой инитрд... сумбурно ...") или initd? Про последний вообще
>первый раз слышу. А первый грузится _до_ загрузки ядра о чем
про initd - опечатка конечно же это initrd
>и гласит (man initrd):
внимательней надо быть ;) простите за корявый перевод но: из того же мана

BOOT-UP OPERATION
When booting up with initrd, the system boots as follows:
Кода система грузиться с инитрд, система загружается следующим образом:

    1. The boot loader loads the kernel program and /dev/initrd's contents into memory.
    1. Загрузчик загружает код ядра и содержимое /dev/initrd (о котором вы писали) в память.
    2. On kernel startup, the kernel uncompresses and copies the contents of the device /dev/initrd onto device /dev/ram0 and then frees the memory used by /dev/initrd.
    2. Во время загрузки ядра, содержимое /dev/initrd разархивируется в /dev/ram0 и освобождает память занимаемую /dev/initrd/
    3. The kernel then read-write mounts device /dev/ram0 as the initial root file system.
    3. Ядро, монтирует /dev/ram0 в режиме чтения-записи как партицию на которой живет система (на самом деле написана пи другому но це не суть, хотя уже видно, что ядро _уже_ загруженно)
    далее по тексту переводить ломает %)
    4. If the indicated normal root file system is also the initial root file-system (e.g. /dev/ram0 ) then the kernel skips to the last step for the usual boot sequence.
    5. If the executable file /linuxrc is present in the initial root file-system, /linuxrc is executed with uid 0. (The file /linuxrc must have executable permission. The file /linuxrc can be any valid executable, including a shell script.)

Это то что нашлось по поиску в опеннете
http://www.opennet.me/tips/info/503.shtml

Ну таки вопрос повторю я на Си хочу нарисовать Linuxrc свой (обычно там шел скрипт исполняемый бизибоксом)

ЗЫ: Я тоже кстати раньше думалл о многих вещах не так как сегодня..

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от ACCA (ok) on 23-Июн-06, 22:39 
Не нужно грузить модули из программы на C, нужно правильно сконфигурировать udev.


В своём initrd нужно писать на shell, чтобы не переписывать всё для новых версий ядра. loop device нужно также делать на shell, чтобы была хоть какая-то надежда портировать в другие ОС.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от Dethman email(??) on 27-Июн-06, 11:42 
>Не нужно грузить модули из программы на C, нужно правильно сконфигурировать udev.

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

>В своём initrd нужно писать на shell, чтобы не переписывать всё для
>новых версий ядра. loop device нужно также делать на shell, чтобы
>была хоть какая-то надежда портировать в другие ОС.

смысл портирования не вижу тут я :)
а писать на ц в том удобней что как-то проще ... уютней, определение кто тут цдрум из ц проще мне было %) ну и ...
вобщем про /dev/loop я нашел как сделать
теперь вопрос как из кода на ц (не используя внешние приложения) загрузить ядру модули...

блин... много слов написал но вы поймете

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от Dethman email(??) on 28-Июн-06, 11:01 
>Не нужно грузить модули из программы на C, нужно правильно сконфигурировать udev.
нет удева ;) нщн ничего нет тока ядро %)

>В своём initrd нужно писать на shell, чтобы не переписывать всё для
>новых версий ядра. loop device нужно также делать на shell, чтобы
>была хоть какая-то надежда портировать в другие ОС.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

10. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от int_0d email on 28-Июн-06, 12:19 

для linux 2.6 все очень просто: нужно 1)mmap свой модуль 2) sys_create_module (в libc этого вызова вроде нету, так что придется дергать ядро через VSYSCALL_PAGE/по старинке int $0x80 вручную)  для полученного образа

для linux 2.4 - нужно ручками построить образ модуля (cм kernel/module.c for more details)

касательно создания у-в man mknod man ioctl


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

11. "Как загрузить модуль ядра из программы на СИ"  
Сообщение от Dethman email(??) on 28-Июн-06, 12:21 
>для linux 2.6 все очень просто: нужно 1)mmap свой модуль 2) sys_create_module
>(в libc этого вызова вроде нету, так что придется дергать ядро
>через VSYSCALL_PAGE/по старинке int $0x80 вручную)  для полученного образа
>
>для linux 2.4 - нужно ручками построить образ модуля (cм kernel/module.c for
>more details)
>
>касательно создания у-в man mknod man ioctl

Спасибо товарижь!

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру