it-swarm-ko.tech

실제로 Linux에서 펌웨어를 플래시하는 방법은 무엇입니까?

글쎄요, 저는 일반적인 공급 업체별 방법을 통해 여러 펌웨어를 업그레이드하기 위해 여러 번의 험난한 단계를 뛰어 넘는 것에 너무 늙어 가고 있습니다 : 일부 DOS 도구를 다운로드하고 (무료) DOS 부팅 매체를 만드는 데 시간을 낭비하고 BIOS를 만드는 데 더 많은 시간을 낭비합니다. 실제로 부팅하고 마지막으로 펌웨어 업그레이드를 플래시합니다.

1980 년대입니다.

Coreboot 프로젝트 에서 linux flash tool 을 발견했습니다. 다양한 FLASH 칩을 지원하는 것 같습니다. 그러나 실제로 어떻게 작동합니까?

공급 업체에서 제공 한 펌웨어 업그레이드를 올바른 형식으로 변환하는 데 몇 가지 함정이 있다고 생각합니다. 아니면 올바른 대상 칩을 식별하는 것은 어떻습니까?

현재 예를 들어 업그레이드해야합니다.

  • 일부 Seagate 1.5의 펌웨어 TB 디스크
  • 오래된 Abit Athlon 64 보드의 펌웨어 (Award bios)
  • 씽크 패드의 바이오스/임베디드 컨트롤러 바이오스

Linux 시스템에서 장치 펌웨어를 어떻게 업그레이드합니까?

15
maxschlepzig

FreeDOS로 깜박임, 한 번의 재부팅 및 이동식 장치 없음

  1. GRUB2를 사용하고 있는지 확인합니다 (Ubuntu에 grub-pc 패키지가 설치되어 있는지 확인)
  2. SYSLINUX의 MEMDISK를 확보하십시오. Ubuntu에서 패키지 syslinux-common를 설치하면 memdisk가 /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.EXEBIOS.IMG는 예입니다.)
    5. umount /mnt/floppy
  5. 시스템을 부팅하고 GRUB2에서 중단 (ESC 누르기)
  6. C를 눌러 GRUB2의 명령 줄로 들어갑니다.
  7. MEMDISK로드 :
    1. linux16 (hd를 입력합니다. 이제 탭을 누르십시오. 하드 디스크 목록이 표시됩니다.
    2. 예를 들어 줄에 linux16 (hd0,가 표시되도록 하드 디스크 선택을 완료합니다.
    3. 탭을 다시 한 번 눌러 파티션 목록을 가져옵니다. Linux 설치에서 /usr/lib/syslinux가 마운트 된 파티션을 찾아야합니다.
    4. 이제 하드 디스크 및 파티션 사양이 준비되었으므로 다음과 같이 경로를 완성 할 수 있습니다. linux16 (hd0,msdos3)/usr/lib/syslinux/memdisk. 엔터 키를 치시오.
  8. FreeDOS로드 :
    1. 동일한 탭 완성을 사용하여 fdboot.img를 찾으 되 initrd16 대신 linux16 명령을 사용합니다. 다음과 같은 줄로 끝납니다 : initrd16 (hd0,msdos3)/home/janus/fdboot.img. 엔터 키를 치시오.
  9. boot를 쓰고 Enter 키를 누릅니다.
  10. FreeDOS 부팅 메뉴가 나타납니다.
  11. 드라이버가 필요하지 않으므로 "안전 모드"옵션을 선택하십시오.
  12. DOS 프롬프트에서 펌웨어 플래싱 실행 파일의 이름을 입력합니다 (예 : FLASH.EXE). 엔터 키를 치시오.
  13. 깜박임이 끝날 때까지 기다리십시오.
  14. 펌웨어 플래셔가 시스템 자체를 부팅하거나 프롬프트가 다시 표시 될 수 있습니다. 프롬프트가 다시 나타나면 Control-Alt-Delete를 눌러 재부팅하십시오.
  15. GRUB 구성을 영구적으로 변경하지 않았으므로 기본 OS로 바로 백업됩니다.

이미지에 공간이 충분하지 않으면 chtaube.e 에서 가장 작은 이미지를 사용하십시오. 이미지의 압축을 풀고 xxd를 통해 필터링합니다. 이제 55aa 를 검색하십시오. 0x1fe에 있어야합니다. 추가 마운트 플래그로 offset=$((0x200))을 사용하여 이미지를 마운트 할 수 있습니다. $(()) 구문은 Bash에 따라 다르지만 Zsh에서도 작동합니다.

또는 https://www.fladi.at/posts/large-freedos-boot-image/ 를 참조하십시오.

11
Janus Troelsen

업그레이드 가능한 펌웨어를 사용하는 모든 장치는이를 수행하는 고유 한 방법을 가지고있을 것입니다. 특히 마더 보드는 이와 관련하여 호환되지 않는 것으로 악명이 높습니다.

하드 드라이브에 관해서도 이것은 독점적 인 문제입니다. Seagate 제공 liveCD 및 Windows 다운로드를 통해 펌웨어 업데이트를 수행하지만 Linux 또는 Unix 도구는 수행하지 않습니다.

GRUB에서 부팅 할 수있는 Thinkpad BIOS 업데이트를 위해 bootable images 를 빌드 할 수 있습니다.

그렇지 않으면 제조업체에 도구를 확인해야합니다.

반면에 마이크로 컨트롤러로 작업하는 경우에는 여전히 제한된 기준이지만 상당히 보편적 인 도구로 프로그래밍 할 수 있습니다 (예 : Atmel 칩은 일반적으로 avrdude로 프로그래밍 할 수 있음).

7
greyfade

seagate 3TB 비디오 (ST3000VX000-9YW1) :

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

다음 방법을 사용하여 Seagate Barracuda 7200.12 ST31000528AS (1TB SATA) 드라이브를 성공적으로 플래시했습니다. (사용 위험 부담 !)

  1. Seagate에서 ISO 다운로드 : http://www.seagate.com/staticfiles/support/downloads/firmware/Barracuda12-ALL-CC49.iso
  2. .iso 파일에서 PH-CC49.ima 마운트/추출
  3. .ima를 USB 썸 드라이브에 dd : dd if=./PH-CC49.ima of=/dev/sdX bs=512k
  4. 컴퓨터를 끄고 플래시 할 드라이브를 제외한 모든 드라이브를 분리합니다.
  5. USB-thumb 드라이브에서 부팅 (Seagate 펌웨어 업데이트 유틸리티로 부팅됩니다)
  6. 간단한 화면 지침에 따라 드라이브를 플래시하십시오.
  7. 전원을 끄고 모든 것을 다시 연결 한 다음 전원을 켭니다.

그게 다야! Windows 없음, 부피가 큰 CD 없음, Grub 편집 없음, FreeDos 없음, 비정상적인 Windows .exe 없음 (시도했지만 모호한 오류 메시지로 실패)

출처 : http://ubuntuaddicted.blogspot.ca/2014/10/seagate-firmware-flash-using-usb.html (PH-CC49.ima를 검색하여 찾았습니다)

3
Alecz

제 seagate ST2000NM0024-1HT174의 경우 저는 그렇게했습니다 : seagate에서 펌웨어를 다운로드하여 USB 키에 저장했습니다. linux mint mate 17.3의 라이브 USB (또는 DVD)로 PC를 재부팅했습니다. 데스크톱에서 모든 seagate 유틸리티의 압축을 풉니 다. 데스크탑에 펌웨어를 복사 한 다음 seaflashlin_33_054 명령의 이름을 더 간단하게 seaflashlin으로 변경 한 후 터미널을 열고 다음과 같이 작성했습니다.

[email protected] ~ $ 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에 있음을 확인합니다)

이제 다음으로 BIOS를 플래싱 할 수 있습니다 : (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가 SN02에서 SN05로 변경되었는지 확인합니다.

매우 위험합니다. 자신의 책임하에 이것을 사용하십시오!

행운을 빕니다 !

2
erikkssen

flashrom 을 사용하여 마더 보드의 BIOS를 업데이트 할 수 있습니다.

예 (Abit KN9 Ultra) :

이 보드는 2006 년부터 출시 된 AMD Athlon 64 보드, AM2 소켓, Nvidia 칩셋입니다. 교체 가능한 256KB 플래시 칩이 있습니다. BIOS에는 Phoenix의 상표 인 것처럼 보이는 'Award'라는 레이블이 붙어 있습니다.

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

그런 다음 공급 업체의 Vanilla 이미지 파일과 비교할 수 있습니다 (예 : xxdvimdiff 사용).

일부 BIOS는 플래시에 추가 정보 (예 : DMI) 및 구성 (예 : MAC 주소)도 저장하기 때문에 약간의 차이가 예상됩니다. Abit KN9 Ultra도 마찬가지입니다. DMI 데이터는 처음 1872 바이트에 저장되며 부팅 중에 BIOS에서 쉽게 재생성됩니다. MAC 주소는 오프셋 0x74E30에 저장됩니다.

공급 업체 펌웨어 파일은 awdflash.exeBIN 파일이 포함 된 Zip 아카이브에 패키지되어 있습니다. M520A_23.BIN 이 예에서 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.

업데이트에 따라 다음 재부팅을 위해 CMOS 를 지워야 할 수 있습니다. 그렇지 않으면 BIOS가 시작되지 않을 수 있습니다. 해당 보드에서 CMOS 점퍼 설정을 통해 지울 수 있습니다. 소프트웨어를 통해 지울 수도 있습니다 (예 : CmosPwd 를 통해).

고유 한 기본 MAC 주소를 유지하기 위해 새 공급 업체 이미지를 플래싱하기 전에 패치 할 수 있습니다.

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

함정 :

  • 아직 flashrom에 의해 구현되지 않은 마더 보드 특정 보드 활성화 (즉, 쓰기 보호 비활성화) 코드로 인해 플래시 쓰기가 실패 할 수 있습니다.
1
maxschlepzig

앞에서 언급 한대로 GRUB로 부팅 된 DOS 업그레이드 플로피 사용은 대부분의 하드웨어에서 작동합니다. 경우에 따라 기본 도구를 찾을 수 있습니다. Dell은 배포 패키지 시스템과 통합되는 저장소도 준비합니다.

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

안타깝게도 대부분의 업데이트를 완료하려면 컴퓨터를 재부팅해야합니다.

0
zdzichu

시험:

hdparm --fwdownload (그리고 매우 조심하십시오!)

그러나 조심하십시오!

0
Stoatwblr

내 작은 경험으로는 Flashrom을 사용하여 인텔 마더 보드 BIOS를 업데이트했는데 제대로 작동했습니다. 일반적으로 정말 멋진 도구처럼 보입니다.

0
KellyClowers