Показать сообщение отдельно
Старый 24.11.2014, 18:35   #10 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Автор метода уверяет, что все должно работать для любой версии UEFI от Insyde, в принципе, можно ему поверить, наверное,я так думаю, но не уверен. На практике метод проверять не рискну, нет подходящего подопытного, но статья занятная и полезная.

По вашей ошибке:
Вы шаги 1-10 выполнили точно по инструкции? В частности, в шаге 10 написано, что парсить следует файл ROM самого большого размера, с именем, начинающимся с FE3542FE. А судя по вашему скрину, вы пытались безуспешно парсить 2 разных файла, причем в имени второго указанного начала вообще не наблюдается.
Далее, перл ругается на ошибку инициализации значения в 245 строке парсера. Смотрим в код и видим там цикл, по моему предположению, срабатывающий, пока размер файла превышает количество считанных из него данных
Код:
  while ($reader < $pkg{size}) # read until we in package
    {
        my $LANG_PACKAGE_LENGTH = unpack('I', (data($pkg{int_offset} + $reader, 3).pack("H",0))   );
        my $LANG_PACKAGE_OFFSET = $pkg{int_offset} + $reader;
        
        #print $LANG_PACKAGE_LENGTH,"\n";
        
        if ($LANG_PACKAGE_LENGTH)
        {
            $reader += (3 + 1 + 42);
            
            my $LANG_PACKAGE_NAME = (data($pkg{int_offset} + $reader, 5)); # skip 00 - end of header
            
            $languages{$LANG_PACKAGE_NAME} = {'offset' => $LANG_PACKAGE_OFFSET, 'length' => $LANG_PACKAGE_LENGTH, 'name' => $LANG_PACKAGE_NAME };
        }
        
        $reader += $LANG_PACKAGE_LENGTH - (3 + 1 + 42);
    }
Далее думайте сами, что именно вы сделали не так, как описано в инструкции.

Кроме того, автор метода работал в Ubunte, а у вас Windows. Существует некоторое различие в работе Perl в этих операционных системах. Возможно, это бредовая идея, но попробуйте стартовать с любого LiveCD Linux и проделать все операции в нем.

И да, там в конце статьи есть ссылочка для личных обращений к автору при появлении затруднений у страждущих... Ну, это я как бы между прочим на всякий случай написал, вдруг пригодится кому зайти поругаться со своим "кирпичиком" в руках .
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070