컴파일된 어셈블리 코드를 USB 장치의 부트 섹터로 이동합니다.

컴파일된 어셈블리 코드를 USB 장치의 부트 섹터로 이동합니다.

나는 간단한 운영 체제를 작성했고 그것을 테스트하려고 합니다. VirtualBox가 설치되어 있고 8GB 플래시 드라이브도 있어서 그냥 사용해도 될 것 같습니다. 그러나 USB 드라이브를 부팅 가능하게 만드는 방법을 잘 모르겠습니다. 부팅 가능한 ISO 이미지를 만드는 방법에 대한 많은 튜토리얼을 따랐지만 VirtualBox나 디스크 유틸리티 모두 이를 읽을 수 없습니다. 누군가 USB 드라이브를 부팅 가능하게 만드는 검증된 방법을 알려줄 수 있습니까?

내가 소유한 것

  • 8GB 플래시 드라이브

  • VirtualBox 가상 머신

  • .bin은 nasm을 사용하여 컴파일된 어셈블리 코드에서 생성되었습니다.

나는 필요하다

  • USB 장치의 부트 섹터를 채우는 방법에 대한 간단하고 명확한 정보

  • .bin 이외의 파일이 필요한 경우 올바른 방향으로 살짝 이동

기존 코드

;*********************************************
;   Boot1.asm
;       - A Simple Bootloader
;
;   Operating Systems Development Tutorial
;*********************************************

org     0x7c00              ; We are loaded by BIOS at 0x7C00

bits    16                  ; We are still in 16 bit Real Mode

Start:

    cli                 ; Clear all Interrupts
    hlt                 ; halt the system

times 510 - ($-$$) db 0             ; We have to be 512 bytes. Clear the rest of the bytes with 0

dw 0xAA55                   ; Boot Signature

내가 따랐던 튜토리얼

http://www.quilime.com/code/bootable_iso http://www.acm.uiuc.edu/sigops/roll_your_own/ http://www.brokenthorn.com/Resources/OSDevIndex.html http://www.brokenthorn.com/Resources/OSDev1.html http://www.brokenthorn.com/Resources/OSDev2.html http://www.brokenthorn.com/Resources/OSDev3.html

답변1

일반적인 접근 방식은 다음 dd과 같습니다.syslinux 부트로더mbr.bin에 설치하려면 /dev/sda.

dd bs=440 count=1 conv=notrunc if=mbr/mbr.bin of=/dev/sda

여기에 /dev/sda대상 장치가 있습니다. ( of"출력 파일"입니다.)

이를 USB 드라이브의 장치 이름으로 바꿀 수 있습니다.

답변2

좋습니다. 최소한의 운영 체제를 설치했습니다. 이제 시작하려면 어떤 종류의 기계가 필요합니다.

어떤 컴퓨터(노트북, VirtualBox 등)를 사용하든 부팅 시 운영 체제를 로드하고 시작하기 위한 코드가 포함된 ROM이 필요합니다. 이는 일반적으로 BIOS와 유사합니다. 이것은 일반적으로 단순히 얻을 것입니다부트 섹터부팅 미디어를 구성하고 거기에서 발견된 모든 것을 실행합니다.

따라서 최소한의 운영 체제를 부트 섹터에 넣으면 됩니다. 운영 체제가 충분히 미니멀하지 않은 경우 부팅 섹터에 더 많은 운영 체제를 로드하는 코드가 필요합니다.

답변3

나는 이것이 당신이 요청한 것이 아니라는 것을 알고 있지만 VirtualBox에서 .bin 파일을 시작하는 쉬운 방법이 있습니다.

먼저 VirtualBox 가상 플로피 디스크인 .vfd 파일을 만들어야 합니다. 빈 .vfd 파일을 만들려면 셸에서 다음 명령을 실행하세요.

$ head -c 1474560 /dev/zero > bootloader.vfd

그런 다음 컴파일된 .bin이 .vfd 파일에 포함되도록 셸에 넣습니다.

$ dd status=noxfer conv=notrunc if=[bin_name].bin of=bootloader.vfd

이제 가상 플로피 디스크가 생겼습니다. 하지만 다음에 무엇을 해야 할까요?

VirtualBox에서 새 가상 머신을 생성합니다. 유형은 기타를 선택하고 버전은 DOS를 선택합니다. 하드 드라이브가 필요하지 않습니다.

가상 머신을 생성한 후 해당 설정으로 이동하고 스토리지 탭으로 이동하여 출력 .vfd 파일을 플로피 디스크로 추가합니다.

그게 다야!

관련 정보