Linux X86 _64 схемы физической памяти

Если вам известен какой-либо другой не -пустой файл в системе, то с помощью POSIXsed:

sed -e 's/.*/hello world/' -e 'wtarget' -e q otherfile

С GNU sedи вашим собственным не -пустым файлом вы можете использовать:

sed -i.bak -e '$ihello world' -e 'd' foo

В BSD sedэто будет работать вместо этого:

sed -i.bak -e '$i\
hello world' -e d foo

Если вы не используете оболочку, вероятно, разрыв строки не является проблемой.


С ex, если целевой файл существует:

ex -c '0,$d' -c 's/^/hello world/' -c 'x' foo

Это просто удаляет все в файле, заменяет первую строку на «hello world», затем записывает и завершает работу. Вы можете сделать то же самое с viвместо ex. Реализации не обязаны поддерживать несколько опций -c, но обычно поддерживают. Для многих exреализаций требование о том, что файл уже существует, не применяется.


Также сawk:

awk -v FN=foo -v STR="hello world" 'BEGIN{printf(STR) > FN }'

запишет "hello world" в файл "foo".


Если существуют файлы, содержащие нужные вам байты в известных местах,вы можете собрать файл байт за байтом с помощью нескольких команд с помощью dd(, в этом случае alphabetсодержит алфавит, но это может быть смесь входных файлов):

dd if=alphabet bs=1 skip=7 count=1 of=test
dd if=alphabet bs=1 skip=4 count=1 seek=1 of=test
dd if=alphabet bs=1 skip=11 count=1 seek=2 of=test
dd if=alphabet bs=1 skip=11 count=1 seek=3 of=test
dd if=alphabet bs=1 skip=14 count=1 seek=4 of=test
cat test
hello

После этого будет работать обычный cp, или вы могли бы поместить его в место -для начала.


Реже, команда mispipeиз moreutils позволяет построить оболочку -свободный канал:

mispipe "echo 1" "tee wtarget"

эквивалентен echo 1 | tee wtarget, но возвращает код выхода echo. Это использует функцию system()внутри, которая не строго требует существования оболочки.


Наконец, perlявляется общей командой и позволяет вам писать произвольные программы, которые делают все, что вы хотите, в командной строке, как и pythonили любой другой распространенный язык сценариев. Точно так же, если оболочка просто не "запущена", но существует, sh -c 'echo 1 > target'будет работать нормально.

0
22.07.2020, 09:56
1 ответ

(Я сошлюсь на последнюю версию документации по протоколу загрузки , документ, на который вы смотрели, устарел.)

Реальный загрузочный сектор ядра режима -и код установки являются частью ядра; см. раздел 1.2 . Они живут между X и X +0x08000.

Ядро защищенного -режима загружается по адресу 0x100000, это первый элемент в таблице выше.

0
18.03.2021, 23:18

Теги

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