LINUX.ORG.RU

Ответ на: комментарий от xgatron

Дистрибутив - один проприетарный, основанный на debian. да, хуки там поддерживаются, можно использовать их (я пытался запихнуть строчку в уже имеющийся файл в initramfs-tools/hooks, что то типа cp /home/user/filename ${DESTDIR}/home, после чего запускал update-initramfs -u, но, видимо, это не так работает..

Hart
() автор топика
Ответ на: комментарий от Hart

Дистрибутив - один проприетарный, основанный на debian

фууу

что то типа cp /home/user/filename ${DESTDIR}/home, после чего запускал update-initramfs -u, но, видимо, это не так работает..

знать бы еще, что и как проверяешь…

посмотреть что есть в initramfs можно командой

 lsinitramfs /boot/initrd...

каталога home там обычно нет. Соответственно либо в скрипте создавай каталог, либо положи файл просто в ${DESTDIR}. Файл с хуком лучше сделать отдельным, чтобы не было проблем при обновлении (не забыть shebang и сделать скрипт исполняемым).

setfont надо копировать как-то так

. /usr/share/initramfs-tools/hook-functions
copy_exec /bin/setfont "${DESTDIR}/bin"
xgatron
()
Ответ на: комментарий от xgatron

ok, у меня как всегда ничего не работает.

что я сделал:

1) создал скрипт rulang в папке /etc/initramfs-tools/hooks (по идее, он должен пока просто передавать setfont в initramfs)

Вот код:

#!/bin/sh
PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case $1 in
prereqs)
        prereqs
        exit 0
        ;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /bin/setfont "${DESTDIR}/bin"

2) затем сделал исполняемым: chmod +x rulang

3) обновил initramfs : update-initramfs -u

4) перезагрузил машину, зашел в /bin и .. ничего.

Hart
() автор топика
Ответ на: комментарий от Hart

зато где-то лежит файл bin :) Писал по памяти, потому ошибся. Надо писать

copy_exec /bin/setfont

тогда файл положит в /usr/bin/setfont. Можешь попробовать написать

copy_exec /bin/setfont /bin/setfont

но положит все равно в /usr/bin/setfont

если непонятно, что происходит, то всегда можно написать set -x в начале скрипта. ну и почитать коменты в /usr/share/initramfs-tools/hook-functions полезно

xgatron
()
Последнее исправление: xgatron (всего исправлений: 1)
Ответ на: комментарий от xgatron

Так вот.., никак.

Строку

copy_exec /bin/setfont ${DESTDIR}/bin/setfont
я записывал нксколькими способами (там, etc/bin/setfint и т.д., разные варианты одного и того-же) - по нулям.

Попробовал удалить initramfs(update-initramfs -d -k) и заново создать его (update-initramfs -c -k). При создании, помимо всего того, что должно выводится при собрке initramfs, вывелся и мой скрипт (значит, в initramfs он все-же как то попадает). Вот вывод:

###############################################
LOCALIZATION DE RUSSA
###############################################
 in /etc/initramfs-tools/hooks/rulang
+ PREREQ=
+ . /usr/share/initramfs-tools/hook-functions
+ copy_exec /bin/setfont /var/tmp/mkinitramfs_HzyAru/bin/setfont
+ local src target x nonoptlib ret
+ src=/bin/setfont
+ target=/var/tmp/mkinitramfs_HzyAru/bin/setfont
+ copy_file binary /bin/setfont /var/tmp/mkinitramfs_HzyAru/bin/setfont
+ local type src target link_target
+ type=binary
+ src=/bin/setfont
+ target=/var/tmp/mkinitramfs_HzyAru/bin/setfont
+ [ -f /bin/setfont ]
+ [ -d /var/tmp/mkinitramfs_HzyAru//var/tmp/mkinitramfs_HzyAru/bin/setfont ]
+ [ -e /var/tmp/mkinitramfs_HzyAru//var/tmp/mkinitramfs_HzyAru/bin/setfont ]
+ return 1
+ return 0

Так или иначе, в самом initramfs новых файлов не появляется.

Hart
() автор топика
Ответ на: комментарий от Hart

так он же пишет, куда файл положил

+ src=/bin/setfont
+ target=/var/tmp/mkinitramfs_HzyAru/bin/setfont

это как раз из-за указания пути как ${DESTDIR}/bin/setfont. Не надо указывать второй путь, просто оставить copy_exec /bin/setfont

Так или иначе, в самом initramfs новых файлов не появляется.

давай так

lsinitramfs /boot/<тут название initrd с версией ядра> | grep setfont

и вывод скрипта еще раз

xgatron
()
Ответ на: комментарий от Hart

перезагрузил машину, зашел в initramfs, а в /bin setfont так и не появился..

Зачем каждый раз перезагружать машину? zcat /boot/initramfs.gz | bsdcpio -it, возможно не .gz и не zcat, и не bsdcpio, а просто cpio. Но для того, чтобы узнать содержимое архива, точно не нужно каждый раз перезагружаться.

@xgatron, lsinitcpio входит в состав арчевского mkinitcpio, а у ТСа что-то другое, по его словам.

anonymous
()
Ответ на: комментарий от xgatron

Тред читал по-диагонали. Может быть так, что он изменяет не тот архив, который использует при загрузке?

anonymous
()
Ответ на: комментарий от anonymous

lsinitcpio входит в состав арчевского mkinitcpio, а у ТСа что-то другое, по его словам.

по словам ТСа у него что-то основанное на дебиане, так что надеюсь, что lsinitramfs подойдет

а вот zcat может не подойти, если у ТСа установлен пакет с микрокодом, т.к. тогда файл состоит из двух частей — сначала сжатый архив с микрокодом и следом за ним архив с ядром, сжатый отдельно от первого

xgatron
()
Ответ на: комментарий от anonymous

такое подозрение тоже есть, но я слишком уработался в последние несколько дней, туго соображаю и пока предпочитаю верить в лучшее

xgatron
()
Ответ на: комментарий от anonymous

так вот. криворукость моя границ не знает. я не прописывал свой initramfs при загрузке и загружался в дефолтный.

А так все работает.

И все же еще вопросик есть: куда кинуть скрипт, который будет выполнять следующую вещь:

#!bin/sh
setfont ${DESTDIR}/usr/share/fonts/866_8x16.psf

Скрипт должен запускаться при запуске initramfs и вставлять шрифт.

Hart
() автор топика
Ответ на: комментарий от Hart

Я записал скрипт

#!bin/sh 
setfont /usr/share/fonts/866_8x16.psf 

в ../initramfs-tools/scripts/init-bottom/scr.sh сделал его исполняемым, обновил initramfs и .. ничего.

Hart
() автор топика
Ответ на: комментарий от Hart

Наверное в /etc/profile.d/ можно, но лучше узнать откуда твой init запускает скрипты. Но это надо читать всё подряд, начиная с init, если возможно, конечно. Я в Дебиане не помню уже как там. Вроде в корне какая-то папка есть, откуда init все скрипты запускает. Смотреть надо.

#!bin/sh

Надёжнее будет указать полный путь до интерпретатора: #!/bin/sh.

${DESTDIR}

Переменная определена и находится в области видимости?

anonymous
()
Ответ на: комментарий от Hart

и .. ничего.

а чего ожидалось?

Необходимо просто чтоб русские символы корректно отображались.

это из соседней темы. Русские символы для каких строк должны отображаться? что за программа или скрипт выводит эти строки?

если ты про сообщения ядра, то они вряд ли имеют локализацию. Если про systemd, то там скорее всего тоже ее нет (кроме пользовательских программ типа systemctl).

PS: ${DESTDIR} работает только для хуков

xgatron
()
Ответ на: комментарий от Hart

В мануале, кстати, всё довольно подробно расписано.

Можно наверное и в /etc/initramfs-tools/scripts/init-top положить.

/usr/share/fonts/866_8x16.psf

А этот файл в initramfs имеется?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.