Что абсолютные минимальные требования состоят в том, чтобы загрузить систему Linux

Если Вы хотите строки X к Y включительно (начинающий нумерацию в 1), использовать

tail -n "+$X" /path/to/file | head -n "$((Y-X+1))"

tail считает и отбросит первые X-1 строки (нет никакого пути вокруг того), затем считайте и распечатайте следующие строки. head считает и распечатает требуемое количество строк, затем выйдет. Когда head выходы, tail получает сигнал SIGPIPE и умирает, таким образом, он не будет читать больше, чем ценность размера буфера (обычно несколько килобайтов) строк из входного файла.

С другой стороны, как gorkypl предложенный, используйте sed:

sed -n -e "$X,$Y p" -e "$Y q" /path/to/file

sed решение значительно медленнее хотя (по крайней мере, для утилит GNU и утилит Busybox; sed мог бы быть более конкурентоспособным при извлечении значительной части файла на ОС, где передача по каналу является медленной, и sed быстр). Вот быстрые сравнительные тесты в соответствии с Linux; данные были сгенерированы seq 100000000 >/tmp/a, среда является Linux/amd64, /tmp tmpfs, и машина в других отношениях неактивна и не подкачивает.

real  user  sys    command
 0.47  0.32  0.12  /dev/null #GNU
 7.12  6.58  0.55  /dev/null #BusyBox
 9.95  9.54  0.28  sed -n -e '50000000,90000000 p' -e '90000000q' /tmp/a >/dev/null #GNU
23.76 23.13  0.31  sed -n -e '50000000,90000000 p' -e '90000000q' /tmp/a >/dev/null #BusyBox

Если Вы знаете диапазон байта, Вы хотите работать с, можно извлечь его быстрее путем пропуска непосредственно к позиции запуска. Но для строк, необходимо читать с начала и считать новые строки. Извлечь блоки из x включительно к y эксклюзивному запуску в 0, с размером блока b:

dd bs="$b" seek="$x" count="$((y-x))" 

1
12.08.2013, 23:33
2 ответа

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

Загрузчик иногда является частью встроенного микропрограммного обеспечения (недавние ядра Linux могут быть загружены непосредственно EFI на x86). Также необходимо сказать ядро что файловую систему смонтироваться как /, например, с root= параметр (для Linux). Это впоследствии попытается загрузить init как последний шаг к ручному управлению к пространству пользователя. В случае Linux Вы могли бы хотеть проверить init_post() в init/main.c для порядка двоичных файлов, которые пробуют.

2
27.01.2020, 23:29

Да Вам нужна система для знания, что смонтироваться и где. Загрузчик будет искать изображение и системные двоичные файлы. Хорошей документацией для проигрывания вокруг является Linux, С нуля заказывают, смотрят здесь.

1
27.01.2020, 23:29

Теги

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