Действительно ли возможно проследить источник Linux от первой начальной загрузки до кода пространства пользователя настольного GUI?

Встраивание произвольных строк (как tput вывод) в sed выражения замены проблематичны, потому что необходимо удостовериться (путем выхода), строка допустима sed синтаксис, который является большей сложностью, которой лучше всего избегают. Я использовал бы awk вместо этого. Так же, как пример:

{ echo line 1: PASS; echo line 2: FAIL; } | 
    awk -v "red=$(tput setaf 1)" -v "green=$(tput setaf 2)" \
        -v "reset=$(tput sgr0)" '
    { for (i = 1; i <= NF; i++) {
           if ($i == "FAIL") printf "%s", red "FAIL" reset;
           else if ($i == "PASS") printf "%s", green "PASS" reset;
           else printf "%s", $i

           if (i == NF) printf "%s", ORS
           else printf "%s", OFS 
      }}'

Ключ должен присвоиться tput последовательности к awk переменные, сделанные сюда использование -v опции.

2
17.11.2013, 22:42
4 ответа

Я подозреваю, что это более трудно, чем понятый Michael Kjörling и OP.

OP, кажется, думает об операции ЦП как прямая, единственная временная шкала, где задачи выполняются последовательно. И Michael Kjörling укрепляет то впечатление путем комментирования, что любое данное ядро выполняет строго одну инструкцию на цикл, последовательно.

Это, конечно, неполно на микроскопическом уровне (современные ПК имеют несколько центральных процессоров), и бесполезный на meso/macro-scopic уровнях.

Мы описываем все сложные системы с точки зрения макроскопических переменных; иногда это вызвано тем, что это - только переменные, к которым у нас есть доступ, но их полноценность не является преимущественно полноценностью легкого доступа. Мы не описываем газа путем утверждения положений и скоростей всех включенных частиц, но используем вместо этого давление/объем/температуру/энтропию.

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

Эквивалент давления/объема/энтропии/температуры в информатике является уровнями абстракции, упрощенными представлениями задач, выполненных машиной, независимо от фактической реализации агентов, выполняющих задачи. АЛЬС присутствует на всем протяжении информатики, от HALs до уровней модели OSI, и так далее.

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

2
27.01.2020, 22:06

Можно просмотреть исходный код и изучить, как система работает (если Вы знаете C/C++ и блок хорошо). Насколько я знаю, код не линеен.

1
27.01.2020, 22:06

Вероятно, максимум, что Вы можете для получения, немного онлайн, отлаживая и журналируемый демон systemd, который записывает все от очень вначале (путь перед традиционными средствами входа).

Если это недостаточно, и Вы хотите систему транспортировки на более низком уровне, можно запустить Linux в виртуальной среде как QEMU, который позволил бы видеть глубоко во внутренностях, использовать gdb на живом ядре и так далее и так далее. Существуют некоторые учебные руководства, как установить QEMU для живого ядра и его всего изображения, отлаживающего: http://www.cs.rochester.edu/~sandhya/csc256/assignments/qemu_linux.html

Также смотрите к stackowerflow вопросу для инструментов в ядре, используемом для отладки: https://stackoverflow.com/questions/4943857/linux-kernel-live-debugging-how-its-done-and-what-tools-are-used

0
27.01.2020, 22:06

Я хотел бы указать на Вас на bootchart. bootchart запускает как первый процесс вместо init и контролирует то, что выполняется и сколько времени он работает.

Bootchart

Это не все, что Вы хотели контролировать, но это имеет очень хороший вывод графических данных, и это стоит для попытки.

К вызовам системы контроля Вы могли, например, выполниться perf record при ранней начальной загрузке, но Вам решать как интерпретировать миллионы строк.

0
27.01.2020, 22:06

Теги

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