Прошиваем BIOS из линукса
🕛 11.03.2009, 00:42
столкнулся с такой проблемой.шеф дал ноут, который принес из сервиски.
грит, поставь вынь.
ставлю вынь - не хочет ибо установщик не находит хард, который есть sata.
в сервиске биос поставили старый, без поддержки usb что сильно зарудняет работу и возможности определения в ручную типа соединения харда.
через диск биос не обновить ибо в досе он не видит привод почемуто.
но вот линь поставился на ура и все увидел(хотя usb все таки проигнорировал)
ноут Acer Aspire 5110
пришла мысля поставить линь и через него прошить bios.
порылся в и-нете и наткнулся на статью.
думаю пригодиться.
Теория
*
Скрыто
Практика
Для прошивания БИОСа в линуксе требуется только две вещи - сама прошивка БИОСа и программа, которая будет этот самый БИОС прошивать. Программу можно скачать в исходниках отсюда: http://openbios.info/FlashRom или же в Debian-based (например в Ubuntu) дистрибутивах поставить с помощью APT:
"#apt-get install flashrom"
Перед записью новой прошивки в БИОС, желательно сохранить старую версию, то есть скопировать прошивку, которая уже прошита в БИОСе, чтобы потом можно было легко восстановить все обратно:
"#flashrom -r MyBIOS.bin"
Где MyBIOS.bin - это имя файла, в который сохранится старая версия прошивки. После сохранения, можно уже на свой страх и риск записывать скачанную прошивку в БИОС:
"
#sudo flashrom -w NewBIOS.bin"
Где NewBIOS.bin - это имя скачанной прошивки. Также, можно добавить ключ -v чтобы программа проверила записанную прошивку и еще можно добавить ключ -V чтобы вывод работы был более информативным:
"#sudo flashrom -Vvw NewBIOS.bin"
С остальными же ключами можно ознакомиться с помощью -help
"
$flashrom -help"
Пример
На примере была испытана материнская плата GIGABYTE GA-965P-DQ6 rev2.0 с Ubuntu 8.04 GNU/Linux на борту
FlashRom при первом запуске без ключей показал вот такую информацию:
"
krik@krik-desktop:~/temp$ sudo flashrom
[sudo] password for krik:
Calibrating delay loop... OK.
No coreboot table found.
Found chipset "Intel ICH8/ICH8R", enabling flash write... OK.
Found chip "Macronix MX25L8005" (1024 KB) at physical address 0xfff00000.
Found chip "Macronix unknown Macronix SPI chip" (0 KB) at physical address 0x0.
Multiple flash chips were detected: MX25L8005 unknown Macronix SPI chip
Please specify which chip to use with the -c option."
На материнской плате установлено два чипа BIOS. Один главный, второй - запасной (в случае повреждения первого, прошивка восстанавливается со второго). Флэшер нашел оба этих чипа и предложил выбрать, который использовать. Чтобы выбрать чипсет - надо использовать ключ -c. Для этой материнской платы, чтобы прочитать уже стоящею прошивку БИОСа в файл, пришлось запустить ее с такими параметрами:
"krik@krik-desktop:~/temp$ sudo flashrom -r MyBIOS.bin -c MX25L8005"
Где MyBIOS.bin - это файл, куда сохранялась прошивка, а MX25L8005 - выбранный чипсет. После того, как прошивка была забекапена, можно уже приступать непосредственно к записи новой прошивки, которую можно скачать для этой материнской платы отсюда - http://www.gigabyte.ru/products/mb/bios/ga-965p-dq6_20.html но перед записью прошивки в БИОС можно проверить, ту ли прошивку вы скачали - достаточно сравнить размер MyBIOS.bin и 965PDQ6.12K или открыть оба файла в hex-редакторе и сравнить начало и конец. Если все в порядке, приступаем:
"krik@krik-desktop:~/temp$ sudo flashrom -Vvw -c MX25L8005 965PDQ6.12K"
Где файл 965PDQ6.12K - и есть сама прошивка с официального сайта (на сайте расположены exe-файлы, но это всего-лишь SFX-RAR архив с самой прошивкой и программой-флэшером для ДОСа). Теперь можно перезагрузиться с новым биосом.
Настройки NVRAM (CMOS)
В линуксе не только можно прошивать БИОС, но и также сохранять или записывать его текущие настройки, причем штатными средствами. Нужно всего-лишь подгрузить модуль nvram и считать информацию с устройства /dev/nvram:
"
#modprobe nvram
#sudo dd if=/dev/nvram of=my_bios_cfg.bin"
Где my_bios_cfg.bin - это двоичный файл, куда сохранятся текущие настройки биоса. Записать настройки обратно можно тем-же путем, только поменяв if на of и of на if:
"#sudo dd of=/dev/nvram if=my_bios_cfg.bin"
Ссылки
Скрыто