व्यवहार में लिनक्स के तहत फर्मवेयर कैसे फ्लैश करें?


15

ठीक है, मैं सामान्य विक्रेता-विशिष्ट तरीके से कई फ़र्मवेयर को अपग्रेड करने के लिए कई जलती हुप्स के माध्यम से कूदने के लिए बहुत पुराना महसूस कर रहा हूं: कुछ डॉस टूल डाउनलोड करें, कुछ समय बर्बाद करने के लिए एक (फ्री-) डॉस बूट माध्यम बनाएं और BIOS बनाने के लिए अधिक समय बर्बाद करें। वास्तव में इससे बूट होता है और अंत में फर्मवेयर अपग्रेड को फ्लैश करता है।

यह तो 1980-ies है।

मैं कोरबूट परियोजना से कुछ लिनक्स फ्लैश टूल भर में आता हूं । यह विभिन्न फ्लैश-चिप्स का समर्थन करता है। लेकिन यह अभ्यास में कैसे काम करता है?

मुझे लगता है कि सही प्रारूप में विक्रेता आपूर्ति फर्मवेयर अपग्रेड को परिवर्तित करने वाले कुछ नुकसान हैं। या सही डेस्टिनेशन चिप को इंडेंट करने के बारे में क्या?

वर्तमान में मुझे शायद उदाहरण के लिए अपग्रेड करना है:

  • कुछ सीगेट 1.5 टीबी डिस्क के फर्मवेयर
  • पुराने एबिट एथलोन 64 बोर्ड (अवार्ड बायोस) के फर्मवेयर
  • बायोस / एंबेडेड-कंट्रोलर-बायोस ऑफ ए थिंकपैड

आप अपने डिवाइस फर्मवेयर को लिनक्स सिस्टम में कैसे अपग्रेड करते हैं?

जवाबों:


11

FreeDOS, एक रिबूट और कोई हटाने योग्य उपकरणों के साथ चमकती

  1. सुनिश्चित करें कि आप GRUB2 का उपयोग कर रहे हैं (जांचें कि क्या आपके पास grub-pcउबंटू पर स्थापित पैकेज है)
  2. SYSLINUX के MEMDISK को पकड़ें। उबंटू पर, पैकेज स्थापित करें syslinux-commonऔर आपका मेमडिस्क अंदर रहेगा/usr/lib/syslinux/memdisk
  3. Fdboot.img डाउनलोड करें , इसे अपने होम डायरेक्टरी में सेव करें, या कुछ अन्य डायरेक्टरी से आप आसानी से यूएस कीबोर्ड लेआउट टाइप कर सकते हैं
  4. FreeDOS छवि में अपना चमकता सॉफ्टवेयर एम्बेड करें:
    1. sudo -s
    2. mkdir -p /mnt/floppy
    3. mount -o loop -t msdos fdboot.img /mnt/floppy
    4. cp -via FLASH.EXE BIOS.IMG /mnt/floppy/( FLASH.EXEऔर BIOS.IMGउदाहरण हैं)
    5. umount /mnt/floppy
  5. अपने सिस्टम को बूट करें और इसे GRUB2 में दबाएं (ESC दबाएँ)
  6. GRUB2 की कमांड लाइन में प्रवेश करने के लिए c दबाएं।
  7. लोड MEMDISK:
    1. दर्ज करें linux16 (hd। अब टैब दबाएं। हार्डडिस्क की एक सूची दिखाई जाएगी।
    2. हार्डडिस्क पसंद को पूरा करें ताकि रेखा कहे linux16 (hd0,, उदाहरण के लिए।
    3. विभाजन की सूची प्राप्त करने के लिए एक बार फिर से टैब दबाएँ। आपको उस विभाजन को खोजने की आवश्यकता है जहां /usr/lib/syslinuxआपके लिनक्स इंस्टॉलेशन में माउंट किया गया है।
    4. अब आपके पास हार्डडिस्क और विभाजन विनिर्देश हैं, आप पथ पूरा कर सकते हैं ताकि यह इस तरह दिखाई दे linux16 (hd0,msdos3)/usr/lib/syslinux/memdisk:। एंटर दबाए।
  8. लोड फ्रीडोस:
    1. खोजने के लिए पूर्ण टैब का उपयोग करें fdboot.img, लेकिन initrd16इसके बजाय कमांड के साथ linux16। आप इस तरह की एक पंक्ति के साथ खत्म हो जाएगा: initrd16 (hd0,msdos3)/home/janus/fdboot.img। एंटर दबाए।
  9. लिखें bootऔर एंटर दबाएं।
  10. FreeDOS बूट मेनू दिखाई देगा।
  11. "सुरक्षित मोड" विकल्प चुनें, क्योंकि आपको ड्राइवरों की आवश्यकता नहीं है।
  12. डॉस प्रॉम्प्ट में, फर्मवेयर फ्लैशिंग निष्पादन योग्य का नाम लिखें, उदाहरण के लिए FLASH.EXE:। एंटर दबाए।
  13. चमकती खत्म होने का इंतजार करें।
  14. फर्मवेयर फ़्लैशर मशीन को बूट कर सकता है, या आपको शीघ्र वापस मिल सकता है। यदि आपको प्रॉम्प्ट वापस मिलता है, तो रिबूट करने के लिए कंट्रोल-एलटी-डिलीट दबाएं।
  15. जैसा कि आपने GRUB कॉन्फ़िगरेशन को स्थायी रूप से नहीं बदला है, यह आपके डिफ़ॉल्ट OS में वापस बूट होगा।

यदि छवि पर पर्याप्त स्थान नहीं है, तो chtaube.eu से सबसे छोटी छवि का उपयोग करें । छवि को अनकम्प्रेस करें और यद्यपि इसे फ़िल्टर करें xxd। अब 55aa की खोज करें । यह होना चाहिए 0x1fe। आप offset=$((0x200))एक अतिरिक्त माउंट ध्वज के रूप में छवि को माउंट कर सकते हैं । सावधान रहें कि $(())वाक्य-विन्यास बैश-विशिष्ट है, लेकिन Zsh में भी काम करेगा।

वैकल्पिक रूप से, https://www.fladi.at/posts/large-freedos-boot-image/ देखें


आपको अपने मौजूदा उत्तर को डुप्लिकेट करने के बजाय अपडेट करना चाहिए।
मैक्सक्लेपज़िग

मेरा सुझाव है कि इसे मेनू प्रविष्टि बनाने के लिए उन पंक्तियों को grub.cfg में डालना चाहिए। एक वास्तविक टेक्स्ट एडिटर का उपयोग करके उन्हें कॉपी या पेस्ट करना आसान है, या कम से कम री-टाइप करें।
derobert

@derobert: मुझे Grub2 डिवाइस और पार्टीशन आईडी मज़बूती से कैसे मिलेंगे? आपको यह जानना होगा कि अगर यह विन्यास में पका रहा है। इसलिए टैब पूरा करना अच्छा है।
Janus Troelsen

1
@derobert: क्या आप सुनिश्चित हैं कि आप Grub2 के बारे में बात कर रहे हैं? वह प्रारूप मुझे Grub0। * जैसा दिखता है। msdosप्रीपेड कब किया जाता है ? यदि आप इसे पोस्ट करते हैं तो मैं आपके प्रश्न का उत्तर देने का प्रयास करूंगा। मुझे बताएं।
Janus Troelsen

2
@ysangkok कि दोनों grub1 और grub2 हैं, msdos सिर्फ विभाजन प्रकार है ... मेरे पास पूछने के लिए कोई प्रश्न नहीं है, मुझे लगा कि आपने किया है ("मुझे Grub2 डिवाइस और विभाजन आईडी को मज़बूती से कैसे पता चलेगा?")।
derobert

7

अपग्रेड करने योग्य फर्मवेयर के साथ हर डिवाइस के पास ऐसा करने के लिए शायद अपने तरीके हैं। इस संबंध में मदरबोर्ड विशेष रूप से कुख्यात हैं।

हार्ड ड्राइव के रूप में, फिर से, यह एक मालिकाना मामला है। सीगेट फर्मवेयर अपडेट करने के लिए लाइवसीडी और विंडोज डाउनलोड प्रदान करता है , लेकिन लिनक्स या यूनिक्स उपकरण नहीं।

आप थिंकपैड BIOS अपडेट के लिए बूट करने योग्य चित्र बना सकते हैं जिन्हें GRUB से बूट किया जा सकता है।

अन्यथा, आप बस उपकरण के लिए निर्माता के साथ जाँच करने जा रहे हैं।

दूसरी ओर, यदि आप माइक्रोकंट्रोलर्स के साथ काम कर रहे हैं, तो आप अक्सर उन्हें काफी सार्वभौमिक उपकरणों के साथ प्रोग्राम कर सकते हैं, हालांकि अभी भी एक सीमित आधार पर (जैसे, Atmel चिप्स आमतौर पर प्रोग्राम किया जा सकता है avrdude)।


6

सीगेट 3TB वीडियो (ST3000VX000-9YW1) के लिए:

sg_write_buffer -v -m 5 -I <FW file> <dev>

3

मैंने सफलतापूर्वक सीगेट बाराकुडा 7200.12 ST31000528AS (1TB SATA) ड्राइव को निम्न विधि से देखा है: ( अपने जोखिम पर प्रयोग करें! )

  1. सीगेट से आईएसओ डाउनलोड करें: http://www.seagate.com/staticfiles/support/downloads/firmware/Barracuda12-ALL-CC49.iso
  2. माउंट PH-CC49.ima.iso फ़ाइल से निकालें / निकालें
  3. एक USB अंगूठे ड्राइव करने के लिए। dd। dd: dd if=./PH-CC49.ima of=/dev/sdX bs=512k
  4. कंप्यूटर बंद करें और ड्राइव को छोड़कर सभी ड्राइव को डिस्कनेक्ट करें
  5. USB- अंगूठे ड्राइव से बूट (यह सीगेट फर्मवेयर अपडेट उपयोगिता में बूट होगा
  6. ड्राइव को फ्लैश करने के लिए स्क्रीन पर दिए गए निर्देशों का पालन करें
  7. बिजली बंद, सब कुछ वापस कनेक्ट करें, और बिजली चालू करें

बस! कोई विंडोज नहीं, कोई भारी सीडी नहीं, कोई ग्रुब संपादन नहीं, कोई फ्रीडोस नहीं, कोई परतदार विंडोज। Exe (इसे आज़माएं लेकिन यह एक अस्पष्ट त्रुटि संदेश के साथ विफल रहा)

श्रेय स्रोत को जाता है: http://ubuntuaddenced.blogspot.ca/2014/10/seagate-firmware-flash-use-usb.html (इसे PH-CC49.ima खोजकर पाया)


बस अपना उत्तर किसी अन्य उत्तर से लिंक करना चाहते हैं जो आपने (उसी व्यक्ति की तरह देखा था?) ने अन्यत्र दिया: linuxquestions.org/questions/linux-hardware-18/…
पीटर तेह

हां, मैं दोनों साइटों पर अपना उत्तर कॉपी-पेस्ट कर रहा था। फिर, इसका श्रेय स्रोत को जाता है।
एलिजाक

2

मेरे सीगेट ST2000NM0024-1HT174 के लिए मैंने ऐसा किया है: सीगेट से फर्मवेयर डाउनलोड किया और इसे एक बेकार कुंजी में संग्रहीत किया। linux टकसाल दोस्त 17.3 के एक लाइव यूएसबी (या डीवीडी) के साथ मेरे पीसी को रिबूट किया। और डेस्कटॉप पर सीधे सभी सीगेट उपयोगिता को अनज़िप करें। फर्मवेयर को डेस्कटॉप पर एक कमांड को कॉपी किया, फिर टर्मिनल और ओपन किए जाने के बाद कमांड सीफ्लाशलिन_33_054 को और अधिक सीफ्लाशलाइन के नाम दिया।

mint@mint ~ $ sudo su    (enter in Superuser live mint)

mint mint # cd Desktop

mint Desktop # ./seaflashlin

bash: ./seaflashlin: Permission denied 

(त्रुटि! मैं अनुमति फ़ाइल परिवर्तित करता हूं)

mint Desktop # ls -l
total 69284
drwxr-xr-x 5 mint mint      120 Nov  3 11:14 EntCap-Makara-SATA-SN05
-rw-r--r-- 1 mint mint 68386705 Nov  2 19:36 EntCap-Makara-SATA-SN05.zip
-rw-r--r-- 1 mint mint  2032640 Sep 10  2015 MakaraEntCapSATA-STD-512E-SN05.LOD
-rw-r--r-- 1 mint mint      312 Dec 17  2015 MK-SN05.CFS
-rw-r--r-- 1 mint mint   369127 Sep 11  2015 READMEFIRST-EnterpriseCapacity3.5-Makara-SATA firmware update.pdf
-rw-r--r-- 1 mint mint   104280 Oct 26  2015 seaflashlin
-rw-r--r-- 1 mint mint    31848 Oct 26  2015 seaflashlin.046.txt
-rwxr-xr-x 1 mint mint     7874 Nov  3 11:13 ubiquity.desktop

mint Desktop # chmod ugo+rxw *

mint Desktop # ls -l

total 69284
drwxrwxrwx 5 mint mint      120 Nov  3 11:14 EntCap-Makara-SATA-SN05
-rwxrwxrwx 1 mint mint 68386705 Nov  2 19:36 EntCap-Makara-SATA-SN05.zip
-rwxrwxrwx 1 mint mint  2032640 Sep 10  2015 MakaraEntCapSATA-STD-512E-SN05.LOD
-rwxrwxrwx 1 mint mint      312 Dec 17  2015 MK-SN05.CFS
-rwxrwxrwx 1 mint mint   369127 Sep 11  2015 READMEFIRST-EnterpriseCapacity3.5-Makara-SATA firmware update.pdf
-rwxrwxrwx 1 mint mint   104280 Oct 26  2015 seaflashlin
-rwxrwxrwx 1 mint mint    31848 Oct 26  2015 seaflashlin.046.txt
-rwxrwxrwx 1 mint mint     7874 Nov  3 11:13 ubiquity.desktop

mint Desktop # ./seaflashlin  

usage:
seaflashlin_i386 {-m <model_number> -f <fw_file> | -c <cfs_file>} [-d <sg_device>]
seaflashlin_i386 -f <fw_file> -d <sg_device>

Options:
    -i  PRINT IDENT INFO
    -v  PRINT VERSION AND EXIT (overrides all other arguments)
    -l  SHOW LICENSE
    -o  TIMEOUT VALUE (seconds)
    -x  TEST CFS FILE
Modes supported:
    -e  DEFERRED SIZE (ATA ONLY)
    -s  SEGMENT SIZE (1 segment = 512 bytes)
    -p  FORCE ATA PASSTHROUGH
    -w  FORCE WRITE BUFFER CMD
    -u  NON-SEGMENTED
e.g:
    seaflashlin_i386 -s 64 -f test.lod -d /dev/sg0
returns:
    0    No error found
    1    Fatal error in command line options
    2    FW Download Failed
    3    Invalid device

mint Desktop # ./seaflashlin -i

================================================================================
 Seagate Firmware Download Utility v0.4.6 Build Date: Oct 26 2015
 Copyright (c) 2014 Seagate Technology LLC, All Rights Reserved
 Thu Nov  3 11:20:52 2016
================================================================================
ATA       /dev/sg0 MN: ST2000NM0024-1HT174     SN: Z4H010XY             FW: SN02
PIONEER   /dev/sg1 MN: DVD-RW  DVR-221         SN:                      FW: 1.00
PIONEER   /dev/sg2 MN: DVD-RW  DVR-221         SN:                      FW: 1.00
SanDisk   /dev/sg3 MN: Cruzer Micro            SN:                      FW: 8.02

(यह पुष्टि करता है कि मेरा फर्मवेयर SN02 संस्करण है और HD / dev / sg0 पर ढूँढा गया है)

अब मैं बायोस को फ्लैश कर सकता हूं: (xxx.LOD = फर्मवेयर हार्ड डिस्क)

mint Desktop # ./seaflashlin -f MakaraEntCapSATA-STD-512E-SN05.LOD -d /dev/sg0

================================================================================
 Seagate Firmware Download Utility v0.4.6 Build Date: Oct 26 2015
 Copyright (c) 2014 Seagate Technology LLC, All Rights Reserved
 Thu Nov  3 11:26:21 2016
================================================================================
Flashing microcode file MakaraEntCapSATA-STD-512E-SN05.LOD to /dev/sg0
 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  :  !
Microcode Download to /dev/sg0 SUCCESSFUL

mint Desktop # ./seaflashlin -i
================================================================================
 Seagate Firmware Download Utility v0.4.6 Build Date: Oct 26 2015
 Copyright (c) 2014 Seagate Technology LLC, All Rights Reserved
 Thu Nov  3 11:26:45 2016
================================================================================
ATA       /dev/sg0 MN: ST2000NM0024-1HT174     SN: Z4H010XY             FW: SN05
PIONEER   /dev/sg1 MN: DVD-RW  DVR-221         SN:                      FW: 1.00
PIONEER   /dev/sg2 MN: DVD-RW  DVR-221         SN:                      FW: 1.00
SanDisk   /dev/sg3 MN: Cruzer Micro            SN:                      FW: 8.02

यह पुष्टि करता है कि bios को fron SN02 को SN05 में बदल दिया गया है

बहुत खतरनाक, अपने जोखिम पर इसका उपयोग करें!

सौभाग्य !


1

आप मदरबोर्ड के BIOS को अपडेट करने के लिए फ्लैशरोम का उपयोग कर सकते हैं ।

उदाहरण (Abit KN9 Ultra):

बोर्ड 2006 से जारी एएमडी एथलॉन 64 बोर्ड, एएम 2 सॉकेट, एनवीडिया चिपसेट है। इसमें 256 केबी की फ्लैश चिप है जो बदली जा सकती है। BIOS को 'पुरस्कार' के साथ लेबल किया गया है, जो फीनिक्स का ट्रेडमार्क लगता है।

Flashrom उस चिपसेट और उस फ़्लैश चिप का समर्थन करता है।

समर्थन को एक कमांड के साथ परीक्षण किया जा सकता है जैसे:

# flashrom --programmer internal
Calibrating delay loop... OK.
Found chipset "NVIDIA MCP55".
Enabling flash write... OK.
Enabling full flash access for board "abit KN9 Ultra"... OK.
Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) mapped at physical address 0x00000000fff80000.

यह फ्लैश चिप की वर्तमान सामग्री का बैकअप लेने के लिए समझ में आता है, पहले:

# flashrom --programmer internal -c Pm49FL004 -r backup.bin

यह तब विक्रेता से वेनिला छवि फ़ाइल की तुलना की जा सकती है (उदाहरण के लिए xxdऔर vimdiff) का उपयोग कर ।

कुछ अंतर अपेक्षित हैं - क्योंकि कुछ BIOS फ्लैश में अतिरिक्त जानकारी (जैसे डीएमआई) और कॉन्फ़िगरेशन (जैसे मैक पते) संग्रहीत करते हैं। अबेट KN9 अल्ट्रा के मामले में भी यही है। DMI डेटा को पहले 1872 बाइट्स में संग्रहीत किया जाता है - और बूट के दौरान BIOS द्वारा आसानी से फिर से उत्पन्न होता है। मैक पते 0x74E30 ऑफसेट पर संग्रहीत किए जाते हैं।

विक्रेता फर्मवेयर फ़ाइलों को ज़िप संग्रह में पैक किया जाता है जिसमें awdflash.exeएक BINफ़ाइल होती है, और जैसे M520A_23.BIN। इस उदाहरण में, बिन फ़ाइल में BIOS छवि सम्‍मिलित है, अर्थात इसे सीधे कमांड के साथ फ्लैश चिप के रूप में लिखा जा सकता है:

# flashrom --programmer internal -c Pm49FL004 -w M520A_23.BIN

Calibrating delay loop... OK.
Found chipset "NVIDIA MCP55".
Enabling flash write... OK.
Enabling full flash access for board "abit KN9 Ultra"... OK.
Found PMC flash chip "Pm49FL004" (512 kB, LPC, FWH) mapped at physical address 0x00000000fff80000.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

अपडेट के आधार पर, अगले रिबूट के लिए सीएमओएस को साफ करना आवश्यक हो सकता है - अन्यथा BIOS शुरू नहीं हो सकता है। उस बोर्ड पर CMOS को जम्पर सेटिंग के जरिए साफ किया जा सकता है। सॉफ्टवेयर के माध्यम से समाशोधन भी संभव है (जैसे CmosPwd के माध्यम से )।

अद्वितीय डिफ़ॉल्ट मैक पते रखने के लिए, नई विक्रेता छवि को चमकाने से पहले पैच किया जा सकता है, जैसे:

dd if=backup.bin of=mac.bin bs=1 count=16 skip=$(echo 16 i 74E30 p | dc)
dd if=mac.bin of=M520A_23_with_mac.bin bs=1 seek=$(echo 16 i 74E30 p | dc) \
   conv=notrunc

नुकसान:

  • मदरबोर्ड विशिष्ट बोर्ड सक्षम (यानी राइट प्रोटेक्ट डिसेबल) कोड के कारण फ्लैश लेखन विफल हो सकता है, जो कि फ्लैशरॉम द्वारा अभी तक लागू नहीं किया गया है।

0

मेरा छोटा अनुभव यह है कि मैंने अपने Intel Motherboard BIOS को अपडेट करने के लिए Flashrom का उपयोग किया और यह ठीक काम किया। सामान्य तौर पर यह एक बहुत अच्छा उपकरण लगता है।


क्या आप एक उदाहरण कमांड लाइन का उपयोग कर सकते हैं जिसे आप उसके लिए उपयोग करते हैं?
मैक्सक्लेपजिग

0

हार्डवेयर के बहुमत के लिए काम करने से पहले जीआरयूबी के साथ डॉस अपग्रेड फ्लॉपी बूट का उपयोग करना। कुछ मामलों में आप देशी उपकरण पा सकते हैं। डेल भी रिपोजिटरी तैयार करता है जो डिस्ट्रो पैकेजिंग सिस्टम के साथ एकीकृत होती है:

http://linux.dell.com/wiki/index.php/Repository/firmware

अफसोस की बात है, अधिकांश अपडेट को पूरा करने के लिए मशीन रिबूट की आवश्यकता होती है।


0

प्रयत्न:

hdparm --fwdownload (और बहुत सावधान रहो!)

हालाँकि, सावधान रहें!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.