[РЕШЕНО]Grub сообщение EndEntire file path: ... /EndEntire после выбора загрузки системы

vasek
этого нет и в исходиках chainloader … сообщения этого типа присуствуют только в файлах efi.
Возможно мы вкладываем разный смысл в свои высказывания, что накладывает определенное недопонимание друг друга

Я сам ещё подсмотрел. Может я неправильно понимаю, т.к. в файлах компиляции я не разбираюсь, но примерно попытался отследить функции
Изначально искал "file path:"
Нашёл тут: \grub-2.06\grub-core\loader\efi\chainloader.c


grub_printf ("file path: ");
  grub_efi_print_device_path (file_path);

Далее искал: grub_efi_print_device_path
Нашёл В том же: grub-2.06\grub-core\kern\efi\efi.c


grub_efi_print_device_path (grub_efi_device_path_t *dp)
{
...
{
	    case GRUB_EFI_PCI_DEVICE_PATH_SUBTYPE:
	      {
		grub_efi_pci_device_path_t *pci
		  = (grub_efi_pci_device_path_t *) dp;
		grub_printf ("/PCI(%x,%x)",
			     (unsigned) pci->function, (unsigned) pci->device);
	      }
	      break;
...
case GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE:
	      dump_vendor_path ("Messaging",
				(grub_efi_vendor_device_path_t *) dp);
	      break;
	    default:
	      grub_printf ("/UnknownMessaging(%x)", (unsigned) subtype);
	      break;
...
	    case GRUB_EFI_SATA_DEVICE_PATH_SUBTYPE:
	      {
		grub_efi_sata_device_path_t *sata;
		sata = (grub_efi_sata_device_path_t *) dp;
		grub_printf ("/Sata(%x,%x,%x)",
			     sata->hba_port,
			     sata->multiplier_port,
			     sata->lun);
	      }
	      break;
...
и т.д.
Т.е. сами сообщения grub знает. Начинается всё с chainloader.c, который функциями отсылается в efi.c, где уже и Sata и PCI и UnknownMessaging есть...но откуда сами значения я не понял
Беру: grub_efi_sata_device_path_t
Нашёл в grub-2.06\include\grub\efi\api.h

#define GRUB_EFI_SATA_DEVICE_PATH_SUBTYPE		18

struct grub_efi_sata_device_path
{
  grub_efi_device_path_t header;
  grub_efi_uint16_t hba_port;
  grub_efi_uint16_t multiplier_port;
  grub_efi_uint16_t lun;
} GRUB_PACKED;
typedef struct grub_efi_sata_device_path grub_efi_sata_device_path_t;

Ну а дальше я уже начал путаться и не совсем понимаю, где тип, а где сама сущность.
Но я думаю, дальше должно как-то из UEFI/BIOS брать, т.к. например, сам "hba_port" не находит, но вот "hba ->ports" находит в grub-2.06\grub-core\disk\ahci.c где уже прямые упоминания bios/uefi
vlad1.96
но откуда сами значения я не понял
Есть еще один интересный инструмент Grub: kernel.img (из DOC)
kernel.img - This image contains GRUB’s basic run-time facilities: frameworks for device and file handling, environment variables, the rescue mode command-line parser, and so on. It is rarely used directly, but is built into all core images.
который, насколько я понимаю, знает все (уже писал о нем)
strings /usr/lib/grub/x86_64-efi/kernel.img | grep -E 'ACPI|PCI|HD|UnknownMessaging'
/PCI(%x,%x)
/ACPI(%x,%x)
/ACPI(
/UnknownACPI(%x)
/UnknownMessaging(%x)
/HD(%u,%llx,%llx,%02x%02x%02x%02x%02x%02x%02x%02x,%x,%x)
Ошибки не исчезают с опытом - они просто умнеют
vasek
Есть еще один интересный инструмент Grub: kernel.img (из DOC)
Спасибо, буду смотреть)

Попробовал clear после chainloading, оно действительно убирает сообщение, но через пару секунд. Т.е. сообщение есть, но оно не остаётся до талого, а убирается, как только, видимо меняется состояние после chainloading
Ну и в загрузчике fedora clear я не обнаружил, как раньше думал
Попытаюсь суммировать
Начну с моего вопроса в самом начале:
Это сообщение не говорит о какой-то проблеме?
Нет не говорит. Это вывод в grub выводиться всегда при использовании chainloader. Причём, судя по комментариям внутри grub это вывод нужен "в основном для отладки"
А "/UnknownMessaging (17)", насколько я понял, говорит о том, что grub не может прочитать название вендора девайса, тем не менее на работу оно никак не влияет.
Сообщение можно игнорировать.
Связано ли оно с этим:
regexp -s root '\((.+)\)' "$cmdpath
в конфигурации?
нет, не связано

А если не говорит, то можно его скрыть или как-то пропустить
Часть скрипта /etc/grub.d/00_header скрывает этот вывод, так что можно использовать его либо в купе с grub-mkconfig, либо отдельно

Использование clear после chainloader убирает эту надпись, но не сразу.
Ну и последнее:
Честно, я не совсем понял, сошлись мы в выводах с @vasek и @jim945 или нет. Я очень слабо чувствую себя в исходниках и немного запутался
Но, пока я понимаю так, что само сообщение — это чисто вывод grub, а именно первая часть про "EndEntire file path: /EndEntire" это часть chainloader.c,
а "/ACPI(80341d0,0)/PCI (1,1)/PCI (0,0)/UnknownMessaging (17)/HD(1,800,3ff800,442b1f99144cd74c,2,2)/File(\EFT\Linux)/File(arch-linux-Igx.fi)" идёт уже из efi.c
Конечно, jim945 прав, но в той части, что первоначальной причиной является chainloader ... а вот дальше в части получения информации о ACPI/PCI/HD ... (удалил написанное) ... здесь я мало что знаю, а поэтому и не хорошо что-то писать на эту тему
Может пригодится когда-нибудь ... из серии Русские блоги ...
Ошибки не исчезают с опытом - они просто умнеют
vasek
вот дальше в части получения информации о ACPI
Это же по сути путь до файла, который загружается в память, с указанием всех устройств, через которые идёт подключение.
Исходники в этом направлении не копал конечно, но думаю мысль верна.
Да возможно использовался для отладки и забыли отключить. Или просто не подумали, что кому-то помешает.
Lupus pilum mutat, non mentem.
vasek
Может пригодится когда-нибудь … из серии Русские блоги …
Кстати. В ефи значительно упростили процесс загрузки. Если грубо, то там сразу идёт этап stage2 граба или вообще ядро можно грузить напрямую
Это значительно ускорило загрузку.
Lupus pilum mutat, non mentem.
offtop - очень нравится читать статьи из серии "Русские блоги" - насколько понял пишут/переводят наши русские, но используют китайские статьи. Как пример, некоторый другие статьи ...1..., ...2... и многое другое ... ВВедение в Linux или Структура системы Linux
Ошибки не исчезают с опытом - они просто умнеют
vasek
Может пригодится когда-нибудь … из серии Русские блоги
Да, действительно, интересности есть :) Спасибо, забираю

Тогда вопрос откуда берётся информацию о устройствах опускаем

Я думаю, пора уже теме присвоить статус РЕШЕНО, т.к. на мои первые вопросы я уже получил ответы, а именно, что это сообщение не является ошибкой, UnknownMessage - просто не найденное имя вендора, и оно ни на что не влияет, сообщение всплывает всегда и оно необходимо для отладки, ну маскируется оно скриптами из /etc/grub.d/00_header
(повторил выводы, чтобы люди дальше по сообщениям не искали)
 
Зарегистрироваться или войдите чтобы оставить сообщение.