Выполнение программы сборки как кольцо 0

Самый простой подход должен был бы использовать tee вывести вход к и произвести от ребенка в два отдельных файла как так:

#!/bin/bash
tee in.log | child | tee out.log

Вы могли использовать tee -a параметр (добавляет) для записи обоих журналов в тот же файл, но я не совсем уверен, будут ли они чередованы в правильном порядке или просто записаны один за другим:

#!/bin/bash
tee -a both.log | child | tee -a both.log
2
19.05.2017, 03:06
2 ответа

Нет. Ядро специально разработано, чтобы запретить запуск кода пользовательского режима в кольцевом 0.

Для этого вам нужно будет написать модуль ядра, а затем пообщаться с вашим модулем каким-нибудь методом (возможно ioctl) из вашей программы пользовательского режима.

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

4
27.01.2020, 22:00

Вот довольно хорошее руководство для начала; http://www.thegeekstuff.com/2013/07/write-linux-kernel-module/

Makefile у меня не работал (ничего не нужно делать для «всех»), а просто выполнялся команда make ядра работает напрямую;

user@gauss:~/a$ make -C /lib/modules/$(uname -r)/build M=$PWD modules
make: Entering directory `/usr/src/linux-headers-3.13.0-29-generic'
  CC [M]  /home/user/a/hello.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/user/a/hello.mod.o
  LD [M]  /home/user/a/hello.ko
make: Leaving directory `/usr/src/linux-headers-3.13.0-29-generic'
0
27.01.2020, 22:00

Теги

Похожие вопросы