Вопрос скорее всего чисто технический, но всё же…
До недавнего времени решил разобраться с выводом через GRUB программ на экран, как именно выводятся символы, решил поиграться с драйверами и тд.
Моим первичным руководством в этом стала вот эта статейка с Habr.
Меня интересует конкретно этот кусочек кода:
losetup /dev/loop2 ./hdd.img \
--offset `echo \`fdisk -lu /dev/loop1 | sed -n 10p | awk '{print $$3}'\`*512 | bc` \
--sizelimit `echo \`fdisk -lu /dev/loop1 | sed -n 10p | awk '{print $$4}'\`*512 | bc`
losetup -d /dev/loop1
Вывод терминала в этом случае:
Mounting partition to /dev/loop4...
(standard_in) 1: syntax error
(standard_in) 1: syntax error
losetup: failed to parse offset: '--sizelimit': Invalid argument
Я не очень много работал с Makefile в целом, но даже если задать определённые значения, которые я вытаскивал с помощью kpartx, выдаёт ошибку так как нужны КОНКРЕТНО ЭТИ расчёты(Хотя я не понимаю, что конкретно здесь умножается под ($$3), ведь никаких перменных не для Makefile ни для таргета нет)
Поэтому, знатоки ОС и в целом, те, кто довольно неплохо разбираются со структурой MakeFile, вот вопросы:
1.«@» в таргете image –авторское дополнение или технически уместный финт? Как он обосновывается в начале каждой команды?
2. Как работает bc в целом и что в куске кода выше происходит в целом?
3. Что конкретно принтуется под $$(-n), где (-n) - какое-то число. Откуда берётся это при отсутсвии передаваемых переменных?
Для знатоков ос:
Можете ли в целом описать процесс создания загрузочного образа ядра и сопутствующие инструменты в этом? Или соурсы?