Использование командной строки ядра KasperskyOS
Ядро KasperskyOS может принимать командную строку во время запуска, что позволяет, например, активировать отключенную по умолчанию функциональность ядра, настроить механизмы ядра, задать, какие аппаратные интерфейсы ввода-вывода будут использоваться ядром на конкретной аппаратной платформе.
Командная строка ядра представляет собой один или несколько разделенных пробелами параметров запуска ядра:
<имя_параметра1>[=<значение_параметра1>] [<имя_параметра2>[=<значение_параметра2>]]...
Параметры запуска ядра приведены в таблице ниже.
Чтобы командная строка была передана ядру при запуске решения на QEMU, нужно указать параметры запуска ядра в параметре KERNEL_CMDLINE CMake-команды generate_qemu_target ().
Пример использования параметра KERNEL_CMDLINE CMake-команды generate_qemu_target ():
generate_qemu_target (qemu
...
KERNEL_CMDLINE "gdbstub.connection.timeout=10 gdbstub")
Чтобы командная строка была передана ядру при запуске решения на аппаратной платформе, нужно указать параметры запуска ядра в параметре BOOTARGS CMake-команды build_sd_image ():
Пример использования параметра BOOTARGS CMake-команды build_sd_image ():
build_sd_image (sd-image
...
BOOTARGS "gdbstub.connection.timeout=10 gdbstub")
Параметры запуска ядра KasperskyOS
Параметр | Описание параметра |
|---|---|
| Запускает GDB-сервер ядра. |
| Задает UART, используемый GDB-сервером ядра. По умолчанию GDB-сервер ядра использует UART5 на Raspberry Pi 4 B. Чтобы задать другой UART, нужно указать идентификатор UART в формате DTS (Device Tree Source). Например, чтобы GDB-сервер ядра использовал UART3, нужно указать следующий параметр: gdbstub.transport=uart:/soc/serial@7e201600 Дополнительно для Raspberry Pi 4 B с начальным загрузчиком U-Boot нужно внести изменения в конфигурационный файл dtoverlay=uart3 Кроме того, нужно установить тактовую частоту для заданного UART. Для этого можно использовать команду начального загрузчика U-boot
На Raspberry Pi 4 B для UART, который используется GDB-сервером ядра, по умолчанию задается символьная скорость 115200 бод. При необходимости это значение можно изменить. Например, следующий параметр задает для UART3 символьную скорость 9600 бод: gdbstub.transport=uart:/soc/serial@7e201600?baudrate=9600 При отладке на QEMU система сборки автоматически задает такое значение для этого параметра, чтобы GDB-сервер ядра использовал UART1. Это соответствует параметрам запуска QEMU ( |
| Задает время, в течение которого GDB-сервер ожидает подключения отладчика GDB при запуске ядра. При запуске ядра GDB-сервер может некоторое время или бесконечно ожидать подключения отладчика GDB в зависимости от значения параметра. Параметр может принимать следующие значения:
Например, чтобы задать время ожидания 10 с, нужно указать в командной строке следующий параметр: gdbstub.connection.timeout=10 Если параметр Примеры диагностического вывода со значением параметра: [KDBG ] GDB connection timeout: 10 second(s).
[KDBG ] GDB connection timeout: infinite. |
| Задает UART, используемый ядром для диагностического вывода. По умолчанию ядро использует UART0 для диагностического вывода на Raspberry Pi 4 B. Описание UART имеет такой же синтаксис, как и в параметре earlycon=pl011,mmio32,0xfe201600 Дополнительно для Raspberry Pi 4 B с начальным загрузчиком U-Boot нужно внести изменения в конфигурационный файл dtoverlay=uart3 На Raspberry Pi 4 B для UART, который используется ядром для диагностического вывода, по умолчанию задается символьная скорость 115200 бод. Для UART 16550 можно изменить символьную скорость, используя параметр earlycon=uart,<...><addr>[,<options>[,<*>]] Например, следующий параметр задает для UART1 на Raspberry Pi 4 B символьную скорость 9600 бод: earlycon=uart,mmio32,0xfe215040,9600n8 Если ни один из UART на Raspberry Pi 4 B не требуется использовать для диагностического вывода, то нужно указать следующий параметр: earlycon=none При запуске решения на QEMU система сборки автоматически задает такое значение для этого параметра, чтобы ядро использовало UART0 для диагностического вывода. Это соответствует параметрам запуска QEMU ( В решении может использоваться системная программа LogRR, которая получает диагностические данные от других программ решения и ядра для последующего вывода, например, через UART или сохранения в файл. Программы решения передают диагностические данные программе LogRR, используя клиентскую библиотеку этой программы. В то же время программы решения могут передавать диагностические данные ядру, используя, например, API trace.h. Программа LogRR обращается к ядру, чтобы ядро прекратило выполнять диагностический вывод, и затем считывает диагностические данные из ядра, включающие сообщения как самого ядра, так и программ решения. Для программы LogRR одним из возможных вариантов диагностического вывода является вывод через UART с использованием драйвера UART, работающего в пользовательском режиме. При использовании такого варианта, даже если передать ядру параметр |
| Отключает поддержку KASLR. |
| Отключает функциональность санитайзера дескрипторов для обнаружения использования недействительных дескрипторов. |
| Настраивает, как выполняется фиксация динамически выделяемой виртуальной памяти. О фиксации виртуальной памяти см. "Выделение и освобождение памяти". Параметр принимает следующие значения:
|
| Отключает дедупликацию нулевых страниц физической памяти, выделенных для фиксации виртуальной памяти в "ленивом" режиме. |
| Задает период дедупликации нулевых страниц физической памяти, выделенных для фиксации виртуальной памяти в "ленивом" режиме, в секундах. По умолчанию этот период составляет 10 с. Нельзя указывать |