Uygulamada Linux altında bellenim nasıl yanıp söner?


15

Pekala, her zamanki satıcıya özgü yolla çeşitli yazılımları yükseltmek için birkaç yanan çemberden atlamak için çok yaşlı hissediyorum: Bazı DOS araçlarını indirin, (Free-) DOS önyükleme ortamı oluşturmak ve BIOS yapmak için daha fazla zaman harcamak aslında ondan önyükleme yapın ve son olarak aygıt yazılımı güncellemesini flash edin

Bu 1980'lerdir.

Bazı rastlamak linux flaş aracı dan Coreboot projesi . Çeşitli FLASH çiplerini destekliyor gibi görünüyor. Fakat pratikte nasıl çalışır?

Sanırım satıcı tarafından sağlanan ürün yazılımı yükseltmelerini doğru biçime dönüştüren bazı tuzaklar var. Ya da doğru hedef çipini belirlemeye ne dersiniz?

Şu anda muhtemelen örneğin yükseltmek zorunda:

  • bazı Seagate 1.5 TB disklerinin ürün yazılımı
  • eski bir Abit Athlon 64 kartının bellenimi (Award bios)
  • Bios / Gömülü Denetleyici-Thinkpad'in Bios'ları

Linux sistemindeki cihaz yazılımınızı nasıl yükseltirsiniz?

Yanıtlar:


11

FreeDOS ile yanıp sönme, bir yeniden başlatma ve çıkarılabilir cihaz yok

  1. GRUB2 kullandığınızdan emin olun (paketin grub-pcUbuntu'da yüklü olup olmadığını kontrol edin )
  2. SYSLINUX MEMDİSK'ini ele geçirin. Ubuntu'da paketi yükleyin, syslinux-commonmemdisk'iniz/usr/lib/syslinux/memdisk
  3. Fdboot.img dosyasını indirin , ana dizininize veya bir ABD klavye düzeniyle kolayca yazabileceğiniz başka bir dizine kaydedin
  4. Yanıp sönen yazılımınızı FreeDOS görüntüsüne gömün:
    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.EXEve BIOS.IMGörneklerdir)
    5. umount /mnt/floppy
  5. Sisteminizi başlatın ve GRUB2'de kesin (ESC tuşuna basın)
  6. GRUB2'nin komut satırına girmek için c tuşuna basın.
  7. MEMDISK yükü:
    1. Enter linux16 (hd. Şimdi sekmeye basın. Sabit disklerin bir listesi gösterilir.
    2. linux16 (hd0,Örneğin , satırın söyleyeceği şekilde sabit disk seçimini tamamlayın .
    3. Bölümlerin listesini görmek için sekmeye bir kez daha basın. /usr/lib/syslinuxLinux kurulumunuzda bağlı olduğunuz bölümü bulmanız gerekir .
    4. Şuna benzer şekilde Şimdi harddisk ve bölüm şartname var, yolunu tamamlayabilirsiniz: linux16 (hd0,msdos3)/usr/lib/syslinux/memdisk. Enter tuşuna basın.
  8. FreeDOS yükleyin:
    1. Bulmak için aynı sekme tamamlamayı kullanın fdboot.img, ancak initrd16bunun yerine komutla linux16. Böyle bir çizgi ile son edeceğiz: initrd16 (hd0,msdos3)/home/janus/fdboot.img. Enter tuşuna basın.
  9. Yazın bootve enter tuşuna basın.
  10. FreeDOS önyükleme menüsü görünecektir.
  11. Sürücülere ihtiyaç duymadığınız için "güvenli mod" seçeneğini seçin.
  12. DOS komut istemi olarak, bellenim adı örneğin çalıştırılabilir yanıp sönen yazın: FLASH.EXE. Enter tuşuna basın.
  13. Yanıp sönmenin bitmesini bekleyin.
  14. Ürün yazılımı flaşörü makinenin kendisini önyükleyebilir veya istemi geri alabilirsiniz. İstemi geri alırsanız, yeniden başlatmak için Control-Alt-Delete tuşlarına basın.
  15. GRUB yapılandırmasını kalıcı olarak değiştirmediğiniz için, varsayılan işletim sisteminize geri yüklenecektir.

Görüntüde yeterli alan yoksa, chtaube.eu'daki en küçük resmi kullanın . Görüntüyü açın ve filtreleyin xxd. Şimdi 55aa'yı arayın . Olmalı 0x1fe. Görüntüyü offset=$((0x200))ek bir montaj bayrağı olarak monte edebilirsiniz. $(())Sözdiziminin Bash'a özgü olduğuna dikkat edin , ancak Zsh dilinde de çalışacaktır.

Alternatif olarak, bkz. Https://www.fladi.at/posts/large-freedos-boot-image/


Mevcut cevabınızı çoğaltmak yerine güncellemelisiniz.
maxschlepzig

Bir menü girişi yapmak için grub.cfg bu satırları koyarak öneririz. Kopyalamak ve yapıştırmak daha kolaydır veya en azından gerçek bir metin editörü kullanarak yeniden yazın.
derobert

@derobert: Grub2 aygıtını ve bölüm kimliğini nasıl güvenilir bir şekilde bulabilirim? Bilmeniz gerekir ki, bunu yapılandırma içine yerleştirirseniz. Bu yüzden sekmenin tamamlanması güzel.
Janus Troelsen

1
@derobert: Grub2'den bahsettiğinizden emin misiniz? Bu biçim bana Grub0. * Gibi geliyor. Ne zaman msdoseklenir? Eğer gönderirseniz sorunuzu cevaplamaya çalışacağım. Bilmeme izin ver.
Janus Troelsen

2
@ysangkok bu hem grub1 hem de grub2, msdos sadece bölüm tipidir ... Sormak için bir sorum yok, yaptığınızı sanıyordum ("Grub2 cihazını ve bölüm kimliğini nasıl güvenilir bir şekilde bulabilirim?").
derobert

7

Yükseltilebilir bellenime sahip her cihazın muhtemelen bunu yapmak için kendi yöntemleri olacaktır. Özellikle anakartlar bu bakımdan kötü bir şekilde uyumsuzdur.

Sabit disklere gelince, bu yine tescilli bir konudur. Seagate , bellenim güncellemelerini gerçekleştirmek için liveCD ve Windows indirmeleri sağlar, ancak Linux veya Unix araçlarını sağlamaz.

Sen inşa edebilirsiniz önyüklenebilir görüntüleri GRUB boot edilebilir Thinkpad BIOS güncellemeleri için.

Aksi takdirde, araçlar için üreticiye danışmanız gerekecektir.

Öte yandan, mikrodenetleyicilerle çalışıyorsanız, bunları hala sınırlı bir temelde de olsa, genellikle oldukça evrensel araçlarla programlayabilirsiniz (örneğin, Atmel cipsleri genellikle programlanabilir avrdude).


6

Seagate 3 TB video için (ST3000VX000-9YW1):

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

3

Seagate Barracuda 7200.12 ST31000528AS (1 TB SATA) sürücüsünü aşağıdaki yöntemle başarıyla flash ettim: ( Kendi sorumluluğunuzdadır kullanın! )

  1. ISO'yu Seagate'ten indirin: http://www.seagate.com/staticfiles/support/downloads/firmware/Barracuda12-ALL-CC49.iso
  2. mount / PH-CC49.ima.iso dosyasından ayıkla
  3. dima'yı bir USB flash sürücüye yerleştirin: dd if=./PH-CC49.ima of=/dev/sdX bs=512k
  4. Bilgisayarı kapatın ve yanıp sönecek sürücüler hariç tüm sürücülerin bağlantısını kesin
  5. USB flash sürücüden önyükleme yapın (bu, Seagate Firmware güncelleme yardımcı programına önyükleme yapar
  6. Sürücüleri flaş etmek için ekrandaki talimatları izleyin
  7. Gücü kapatın, her şeyi tekrar bağlayın ve açın

Bu kadar! Windows yok, hantal CD yok, Grub düzenlemesi yok, FreeDos yok, kesintili Windows .exe yok (denedi ancak belirsiz bir hata mesajı ile başarısız oldu)

Kredi kaynağa gider: http://ubuntuaddicted.blogspot.ca/2014/10/seagate-firmware-flash-using-usb.html (PH-CC49.ima arayarak buldu)


Cevabınızı başka bir yerde verdiğiniz (aynı kişiye benziyor musunuz?) Başka bir cevaba bağlamak istiyorum: linuxquestions.org/questions/linux-hardware-18/…
Peter Teoh

Evet, cevabımı her iki siteye de kopyalayarak yapıştırdım. Yine, kredi kaynağa gider.
Alecz

2

Seagate ST2000NM0024-1HT174 için bunu yaptım: firmware'i seagate'ten indirdi ve bir usb anahtarında sakladı. benim pc linux nane arkadaşı 17.3 canlı bir usb (veya dvd) ile yeniden. ve tüm seagate yardımcı programını doğrudan Masaüstünde açın. Firmware'i Masaüstü üzerinde bir komut kopyaladı, sonra seaflashlin_33_054 komutunu daha basit bir şekilde seaflashlin olarak yeniden adlandırdı.

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

mint mint # cd Desktop

mint Desktop # ./seaflashlin

bash: ./seaflashlin: Permission denied 

(Hata! İzin dosyasını değiştiriyorum)

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

(bu, ürün yazılımımın SN02 sürümü olduğunu ve HD'nin / dev / sg0 konumunda olduğunu doğrular)

Şimdi bios ile Flash yapabilirsiniz: (xxx.LOD = bellenim sabit diski)

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'un SN02 yerine SN05 olarak değiştirildiğini doğrulayan

Çok Tehlikeli, bunu kullanmak kendi sorumluluğunuzdadır!

İyi şanslar !


1

Bir anakartın BIOS'unu güncellemek için flashrom kullanabilirsiniz .

Örnek (Abit KN9 Ultra):

Kurulu AMD Athlon 64 kurulu, AM2 Soket, Nvidia yonga seti, 2006 yılında piyasaya sürüldü. Değiştirilebilir 256 KB flash çip var. BIOS, Phoenix'in ticari markası gibi görünen 'Award' ile etiketlenmiştir.

Flashrom bu yonga setini ve bu flaş yongasını destekler.

Destek aşağıdaki gibi bir komutla test edilebilir:

# 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.

Öncelikle flaş çipinin mevcut içeriğini yedeklemek mantıklıdır:

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

Daha sonra satıcıdan gelen bir vanilya görüntü dosyası ile karşılaştırılabilir (örn. xxdVe kullanılarak vimdiff).

Bazı farklılıklar beklenir - çünkü bazı BIOS'lar flaşta ek bilgiler (örn. DMI) ve yapılandırma (ör. MAC adresleri) depolar. Abit KN9 Ultra için de durum aynı. DMI verileri ilk 1872 baytta depolanır - ve önyükleme sırasında BIOS tarafından kolayca yeniden oluşturulur. MAC adresleri 0x74E30 göreli konumunda depolanır.

Satıcı ürün yazılımı dosyaları, içeren awdflash.exebir arşivde ve BINörneğin bir dosyada paketlenmiştir M520A_23.BIN. Bu örnekte, bin dosyası BIOS görüntüsünü olduğu gibi içerir, yani flaş çipini aşağıdaki gibi bir komutla doğrudan yazılabilir:

# 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.

Güncellemeye bağlı olarak, bir sonraki yeniden başlatma için CMOS'un temizlenmesi gerekebilir - aksi takdirde BIOS başlatılamayabilir. Bu kartta CMOS bir atlama teli ayarı ile silinebilir. Yazılım ile temizleme de mümkündür (örn . CmosPwd aracılığıyla ).

Benzersiz varsayılan MAC adreslerini korumak için, yeni satıcı resmi yanıp sönmeden önce yamalanabilir, örn:

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

tuzaklar:

  • Flash yazma henüz flashrom tarafından uygulanmayan anakarta özel kart etkinleştirme (yazma korumasını devre dışı bırakmak için) nedeniyle başarısız olabilir .

0

Benim küçük deneyimim, Intel Anakart BIOS'umu güncellemek için Flashrom kullandım ve iyi çalıştı. Genel olarak gerçekten güzel bir araç gibi görünüyor.


Bunun için kullandığınız örnek bir komut satırı gönderebilir misiniz?
maxschlepzig

0

Yukarıda belirtildiği gibi GRUB ile önyükleme DOS yükseltme disketini kullanarak donanım çoğunluğu için çalışır. Bazı durumlarda yerel araçlar bulabilirsiniz. Dell, distro paketleme sistemiyle bütünleşen depoları bile hazırlar:

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

Ne yazık ki, çoğu güncelleme makinenin yeniden başlatılmasını gerektirir.


0

Deneyin:

hdparm --fwdownload (VE ÇOK DİKKATLİ OLUN!)

Ancak, dikkatli olun!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.