PXE 부팅 가능 10MB 이상의 DOS 이미지 만들기


4

시스템, 하드 드라이브 또는 BIOS에 필요한 모든 펌웨어 업데이트가 포함 된 "대용량"DOS 플로피 디스크 이미지 (예 : 10MB 이상)를 만들고 싶습니다.

모든 것이 PXE 부팅 이미지에 있기 때문에 DOS 이미지를 네트워크로 연결할 필요는 없지만 네트워킹은 좋을 것입니다. Zip 디스크가 플로피 디스크 컨트롤러에 연결되어 있고 100MB를 초과했기 때문에 가능합니다.

오래 전에이 작업을 시도했지만 부팅에 실패하기 위해 너무 많은 시간을 보냈습니다. 따라서 누군가 악몽 같은 짐승을 만들고 편집하는 방법에 대한 신뢰할만한 지침이 있다면 알려주십시오. PXE에 사용할 수 있고 USB 스틱에 복사 할 수있는 이미지는 플러스입니다.

나쁜 제조업체는 LAN을 통해 쉽게 부팅하고 네트워킹 할 수있는 모든 펌웨어 업데이트가 포함 된 단일 부팅 가능한 Linux ISO를 제공하지 않습니다. HP 서버는이 작업을 수행하며 훌륭합니다.


답을 모르겠지만 Hiren 's Boot CD (또는 USB 스틱)를 확인하고 서로 다른 이미지와 부팅 옵션을 확인해야합니다.
golimar

더 동의 할 수 없었습니다. 그냥 말도 안돼!
Matt H

1
@vallismortis-당신은 무엇에 전적으로 동의하지 않습니까? 특히 서버 등에서 BIOS 업데이트 등을 배포하기가 엄청나게 어렵다고 언급하고 있었지만 많은 제조업체들이 여전히 DOS 용 업데이트 유틸리티를 제공하고 있습니다. DOS를 다운로드하여 USB 스틱에서 작동시키는 것은 어렵습니다. 누가 DOS를 실행합니까? Linux에서 이러한 유틸리티를 제공해야합니다.
Matt H

@MattH 정말 죄송합니다. 질문을 비판하고 있다고 생각했습니다. 죄송합니다! 댓글이 삭제되었습니다.
vallismortis

답변:


2

나는이 과정을 몇 번 겪었지만 매우 쉽지만, 내가 사용한 정확한 단계를 잊어 버렸으므로 여기에서 내 자신의 참조 및 다른 사람들을 위해 문서화하고 있습니다. 기록을 위해 Slackware Linux 14.2+를 PXE 서버로 사용하고 BIOS 업데이트를 위해 여러 가지 다른 Dell Optiplex 모델로 부팅하고 있습니다. 다른 답변에서 언급했듯이 대용량 파일 시스템의 부팅 가능한 ISO 이미지를 만들 수 있습니다. 그러나 부팅 플로피 이미지에 대해 구체적으로 물었으므로 여기에 내가 사용하는 단계가 있습니다.

먼저, MEMDISK 및 FAT12에 대한 배경 정보를 바탕으로 질문을 작성하십시오. 거기에는 많은 상충되고 모호한 정보가 있으므로 희망적으로 이것은 약간의 문제를 해결합니다.

2003 년syslinux 스레드는 MEMDISK가 하드웨어에 따라 최대 이미지 크기 4GB를 지원함을 나타냅니다 (즉, 메모리 제한적이지만 추가 하드웨어 별 고려 사항). 2002 년이전 스레드 는 별도의 PXELINUX 제한 (Linux 커널 공간은 ~ 1GB로 제한되었지만이 정보는 15 년이 넘었습니다)을 나타냅니다.

로부터 MEMDISK 문서 추측하려고 시도합니다 memdisk 일부 특정 플로피 디스크 형상이있다 :

플로피 이미지

디스크 이미지가 4,194,304 바이트 (4096K, 4MiB) 미만인 경우 플로피 이미지로 간주되며 MEMDISK는 파일 크기를 기준으로 형상을 추측하려고합니다. MEMDISK는 모든 표준 플로피 크기와 일반적인 확장 형식을 인식합니다 :

  163,840 bytes  (160K) c=40 h=1 s=8    5.25" SSSD
  184,320 bytes  (180K) c=40 h=1 s=9    5.25" SSSD
  327,680 bytes  (320K) c=40 h=2 s=8    5.25" DSDD
  368,640 bytes  (360K) c=40 h=2 s=9    5.25" DSDD
  655,360 bytes  (640K) c=80 h=2 s=8    3.5"  DSDD
  737,280 bytes  (720K) c=80 h=2 s=9    3.5"  DSDD
1,222,800 bytes (1200K) c=80 h=2 s=15   5.25" DSHD
1,474,560 bytes (1440K) c=80 h=2 s=18   3.5"  DSHD
1,638,400 bytes (1600K) c=80 h=2 s=20   3.5"  DSHD (extended)
1,720,320 bytes (1680K) c=80 h=2 s=21   3.5"  DSHD (extended)
1,763,328 bytes (1722K) c=82 h=2 s=21   3.5"  DSHD (extended)
1,784,832 bytes (1743K) c=83 h=2 s=21   3.5"  DSHD (extended)
1,802,240 bytes (1760K) c=80 h=2 s=22   3.5"  DSHD (extended)
1,884,160 bytes (1840K) c=80 h=2 s=23   3.5"  DSHD (extended)
1,966,080 bytes (1920K) c=80 h=2 s=24   3.5"  DSHD (extended)
2,949,120 bytes (2880K) c=80 h=2 s=36   3.5"  DSED
3,194,880 bytes (3120K) c=80 h=2 s=39   3.5"  DSED (extended)
3,276,800 bytes (3200K) c=80 h=2 s=40   3.5"  DSED (extended)
3,604,480 bytes (3520K) c=80 h=2 s=44   3.5"  DSED (extended)
3,932,160 bytes (3840K) c=80 h=2 s=48   3.5"  DSED (extended)

작은 크기의 perl 스크립트가 MEMDISK 디렉토리에 포함되어있어 MEMDISK가 다른 크기로 선택할 지오메트리를 결정할 수 있습니다. 일반적으로 MEMDISK는 80 개의 실린더 또는 약간 더 높은 사용 된 대부분의 물리적 확장 형식을 정확하게 감지합니다.

 LABEL floppy_image
  LINUX memdisk
  INITRD floppy.img

이미지가 4 MiB보다 크고 플로피 이미지 인 경우 MEMDISK가 해당 이미지를 플로피 이미지로 취급하도록 할 수 있습니다.

 LABEL floppy_image
  LINUX memdisk
  INITRD floppy.img
  APPEND floppy

실제로, 나는 그 APPEND floppy매개 변수에 운이 없었습니다 . 내가 얻을 MEMDISK: No ramdisk image specified!내가 그것을 사용할 때 오류가 발생했습니다.

일반적으로 플로피 이미지 는 16MB 및 8k 클러스터로 제한되는 FAT12 형식을 사용 합니다. FAT12 에는 32MB 또는 256MB (64k 클러스터)를 허용하는 확장 기능 이있는 것으로 보이지만 구체적인 내용은 확실하지 않습니다.

부팅 가능한 '플로피'이미지 의 최대 FAT12 크기 ( 16,736,256 바이트 )를 대상으로하는 경우 다음을 수행 할 수 있습니다.

dd if=/dev/zero of=FAT12_16MB.img bs=1 count=16736256

그러나 해당 명령을 완료하는 데 1 분이 걸릴 수 있습니다. 더 큰 블록 크기를 사용하면 1 초 이내에 동일한 작업을 수행 할 수 있습니다.

dd if=/dev/zero of=FAT12_16MB.img bs=8192 count=2043

이제 '빈 플로피 디스크'가 생겼으므로 FAT12로 포맷해야합니다 (이 명령에 사용 가능한 매개 변수에 관심이있는 man mkfs.fat경우 맨 페이지를 보려면 실행 하십시오).

mkfs.fat -D 0x00 -F 12 -n FREEDOSBIOS FAT12_16MB.img

이제 포맷 된 FAT12 '플로피 디스크'이미지가 있습니다. 폴더를 만들어 마운트 할 수 있습니다 :

mkdir floppy
mount -t msdos -o loop FAT12_16MB.img floppy

이제 파일 복사를 시작할 수 있습니다. fdos.org 에서 FreeDOS OEM 부팅 디스크 를 다운로드하여 더 큰 이미지로 복사했습니다.

wget http://www.fdos.org/bootdisks/autogen/FDOEM.288.imz
unzip FDOEM.288.imz

FreeDOS 이미지의 새 마운트 지점을 작성하고 마운트하십시오.

mkdir freedos12
mount -t msdos -o loop FDOEM.288 freedos12

FreeDOS 운영 체제를 더 큰 플로피로 복사하십시오.

cp -r freedos12/* floppy

그런 다음 FreeDOS 파티션을 마운트 해제하고 더 이상 필요하지 않은 경우 마운트 지점을 삭제하십시오.

umount freedos12
rmdir freedos12

이제 FAT12_16MB.imgFreeDOS 운영 체제를 포함 하는 16MB 플로피 이미지 ( )가 있습니다. 그러나 PXE를 통해 부팅하려고하면 다음 오류가 발생합니다.

Loading boot sector... booting...
This is not a bootable disk. Please insert a bootable floppy and press any key to try again...

이 이미지에서 부팅 섹터를 만들어야합니다. 중요 : 이미지 파일에 직접 쓰므로 다음 단계 전에 플로피 이미지가 마운트되지 않았는지 확인하십시오.

umount floppy

부팅 섹터를 FreeDOS 이미지 FDOEM.288에서 더 큰 이미지`FAT12_16MB.img '로 복사하십시오 .

dd if=FDOEM.288 of=FAT12_16MB.img bs=1 count=446 seek=62 skip=62 conv=notrunc

이제 FreeDOS가 포함 된 PXE 부팅 가능한 16MB FAT12 플로피 이미지가 있습니다. 이 시점에서 이미지를 다시 마운트하고 필요한 추가 파일을 복사 할 수 있습니다.

이 이미지를 부팅하는 데 사용하는 정확한 PXE 구성은 다음과 같습니다.

label bios
menu label FreeDOS
kernel memdisk
append initrd=FAT12_16MB.img

몇 가지가 있습니다 기타 유용한 단계별 자원 밖이 답변을 작성하는 동안 내가 상담을하는 것이가.



3

이 작업은 쉽게 수행 할 수 없지만 불가능하지는 않습니다.

모든 펌웨어 업그레이드가 포함 된 부팅 가능한 FreeDOS ISO를 제작 한 다음 PXE를 PXELINUX 및 memdisk로 부팅합니다

LABEL BIOS UPG
 MENU LABEL Bios Upg
 KERNEL memdisk
 APPEND iso initrd=FreDosBiosUpg.iso

1
유지하기가 너무 어려워 질 것입니다. FreeDOS에 네트워크가 내장되어 있어야 모든 BIOS 이미지가 포함 된 네트워크 드라이브 문자를 매핑 할 수 있습니다.
rjt

1
유지 관리가 왜 어려운가요? 네트워킹 내장이 필요하지 않습니다. 바이오스 이미지는 ISO 내에 포함되어 있습니다. 메뉴로 FreeDOS를 부팅하고 올바른 BIOS 업데이트를 시작하십시오. 완벽하게 수행 할 수 있고 유지하기가 어렵지 않습니다.
Pat

1
BIOS 이미지를 50 개 정도 유지하기 위해 ISO를 재구성하는 것은 간단합니다. 네트워크를 통해 다운로드 된 업데이트를 공유하는 FreeDOS의 PXE 부팅이 한 번이면 훨씬 쉽습니다.
rjt

1
견과류?? 한 줄 명령으로 ISO를 만들 수 있습니다. 일반 TFTP에는 10 메가의 소리가 너무 큽니까? PE 부트에서 WDS / MDT / SCCM이 200MB까지 전송하는 것을 알고 있습니다. 그것은 당신이 당신에게 대답하는 사람에게 꽤 무례한 것 외에 당신이 무엇을 말하는지 전혀 모른다고 생각합니다.
Pat

1
팻, 나는 무례하고 시간을 주셔서 감사합니다 의미하지 않았다. 통신이 잘못 된 것 같습니다. 모든 이미지의 관리는 이미 손이 닿지 않았으며 SolidStateDrives를 사용하면 5 개월 전에 요청했을 때보 다 훨씬 적은 시간이 소요되는 훨씬 더 나빠졌습니다. mkisofs를 여러 번 실행했지만 실행 시간이 없어 완료 될 때까지 기다렸다가 PXE 부팅을 테스트 한 후 다시 실행하여 다른 BIOS 이미지를 테스트하십시오. 나는 10MB가 tftp에 대해 너무 많지 않다고 말한 적이 없지만 올바르게 처리되지 않으면 10MB가 DOS에 너무 많을 수 있습니다.
rjt

0

memdisk 커널은 더 큰 이미지를로드 할 수 없습니다.

더 큰 이미지를로드하려면 vmlinuz kernal을 시도해야합니다. Linux 미러에서 온라인으로 찾을 수 있습니다. 나는 centos에서 하나를 사용하여 더 큰 이미지를로드했습니다.


1
대부분의 BIOS 업데이트 소프트웨어는 Linux가 아닌 MS-DOS 호환 운영 체제에서 작동합니다. vmlinuz는 Linux이므로 작동하지 않습니다.
rjt

한계가 있지만 질문의 매개 변수 내에 속합니다. 나는 이것을 내 대답에 문서화했다 .
vallismortis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.