2011-01-14 21 views
6

tôi đang cố gắng viết bộ tải khởi động (sắp xếp thế giới hello). tôi đang sử dụng Bochs để mô phỏng (nền tảng Linux-Ubuntu). Nhưng tôi không thể tạo một iso khởi động cho tệp nhị phân của mình. Mặc dù trong hướng dẫn VFD (đĩa mềm ảo) được sử dụng nhưng nó là dành cho nền tảng Windows. Đây là mã của tôi cho bộ nạp khởi động (chỉ để thử nghiệm)Làm thế nào để tạo một iso khởi động (không phải ổ đĩa cd hoặc flash) để thử nghiệm bộ tải khởi động của riêng bạn?

;********************************************* 
; Boot1.asm 
;  - A Simple Bootloader for testing if cd is booting or not 
; 
; Operating Systems Development Tutorial 
;********************************************* 

[BITS 16] ;tell the assembler that its a 16 bit code 
[ORG 0x7C00] ;Origin, tell the assembler that where the code will 

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 

tôi đã thử ISO chính trên Ubuntu. Nó đang chuyển đổi tệp nhị phân thành ISO nhưng không thể chuyển sang ISO. Bochs được hiển thị lỗi "cd không phải là eltorito" mà tôi googled và được tìm thấy là tiêu chuẩn cho khả năng khởi động ISO.What những điều bổ sung tôi phải thêm vào nó để làm cho nó khả năng khởi động. tôi đã thêm chữ ký khởi động vào cuối. Có ai có thể đề xuất một ứng dụng đáng tin cậy để tạo ISO khởi động trên Ubuntu không? Công việc của tôi bị kẹt do điều này .... HOẶC tôi khá chắc chắn có rất nhiều người phải tham gia vào việc phát triển hệ điều hành trên nền tảng Linux. Làm thế nào để mọi người thử nghiệm?

Tôi đã tạo một ổ đĩa flash có thể khởi động với Unetbootin bằng iso của chương trình bộ nạp khởi động của tôi. chuyển sang hộp ảo và xoay một chút để khởi động từ pendrive, nhưng vẫn hiển thị nó không thể khởi động được. Tôi nghĩ ai đó đã nói chính xác rằng bạn cần rất nhiều kiên nhẫn trong việc phát triển hệ điều hành.


: phew cuối cùng chương trình bootloader của tôi chạy ...
tôi đã sử dụng hình ảnh đĩa mềm ảo để khởi động chương trình của tôi trên hộp ảo. Dưới đây là các bước trong trường hợp ai đó đang đấu tranh với nó.
1.Tạo boot.asm có chương trình bộ nạp khởi động của bạn.
2.Compile with nasm. nasm -f bin boot.asm -o boot.bin.
3.sudo mkfs.msdos C/home/tên /floppy.img 1440
4.sudo chown tên ./floppy.img. link text
5.Sao chép với dd. dd nếu =./boot.bin của =./floppy.img.
6.Run VirtualBox và chọn floppy.img làm thiết bị khởi động trong máy ảo mới của bạn.
PS: bạn cũng có thể đính kèm đĩa mềm.img vào thiết bị "vòng lặp" và gắn kết nó như một đĩa mềm thực.

+1

Có thể trùng lặp [Tạo hình ảnh ISO có thể khởi động với bộ nạp khởi động tùy chỉnh] (https://stackoverflow.com/questions/34268518/creating-a-bootable-iso-image-with-custom-bootloader) –

Trả lời

-1

một kịch bản rất đơn giản sẽ làm điều này trong linux như sau: -

rm -f disk_images/myos.iso 
mkisofs -quiet -V 'MYOS' -input-charset iso8859-1 -o disk_images/myos.iso -b myos.flp disk_images/ || exit 

Các ổ đĩa mềm được thực hiện như sau: -

nasm -f bin -o boot.bin boot.asm 
dd if=boot.bin of=floppy.img count=1 bs=512 //for the bootloader 

dd if=boot.bin of=floppy.img skip seek=1 count=1339 //assuming a 1.44Mb floppy 

và sau đó bạn có hệ thống tệp

mkdosfs (or whatever system you want) -C floppy.img 1440 

Nếu bạn đã giúp đỡ về cửa sổ, hãy cho tôi biết :)

+0

làm thế nào để chúng ta làm điều đó trong cửa sổ? POWERISO có thể thực hiện việc này không? – ASHUTOSH

+1

'dd if = boot.bin of = floppy.img skip seek = 1 count = 1339' trông rất sai. Đầu tiên 'skip' yêu cầu tham số, nhưng không có tham số nào được chỉ định. bỏ qua sẽ bỏ qua số khối trên tệp đầu vào (boot.bin) nhưng boot.bin chỉ là 512 byte để không có ý nghĩa. Kích thước khối mặc định cho DD là 512 vì vậy count = 1339 có vẻ sai. Tôi có thể thấy nó là 2879 (với đĩa mềm 1.44MB). Có một phần của tôi tin rằng bạn đang tìm cách bỏ qua khối đầu tiên trong tập tin đầu ra (đĩa mềm) và viết 0 để điền vào một ảnh đĩa. Điều này có vẻ như một giải pháp hợp lý 'dd if =/dev/zero = floppy.img seek = 1 count = 2879' –

+0

Tôi cũng bị nhầm lẫn bởi' mkdosfs -C floppy.img 1440'. Điều này sẽ thất bại nếu hình ảnh đĩa đã tồn tại. Và nó đã tồn tại vì nó được tạo ra với các lệnh _DD_ trước đó. –

1

Trong số tất cả các địa điểm lưu trữ/phương pháp thu hồi, CDROM/El-Torito là kỳ quặc (và không làm cho tôi bắt đầu trên Mac CDROM lai hệ thống tập tin)

Với Floppy, Harddisk/USB hoặc PXE -TFTP, nó đủ để viết mã đối tượng cho lĩnh vực đầu tiên, hoặc trong trường hợp của tftp, chỉ cần tải xuống và thực thi. Nó không thể dễ dàng hơn với những thứ này.

+0

Đây là những gì tôi cũng tin rằng bây giờ sau khi cố gắng tất cả các loại s/w để làm cho khả năng khởi động iso và flashdrive trong 3 ngày. Một lệnh dd đơn giản là những gì sẽ xảy ra là một cuộc sống tiết kiệm ... :) – Terminal

+1

Không cần sử dụng 'dd' và cú pháp khó xử của nó khi 'cat>' và 'dd_rescue' làm. dd cũng giống như eltorito .. – user562374

0

Hãy thử WinISO, nó hoạt động hoàn hảo cho tôi.

+2

Có thể là một bình luận. – Robert

Các vấn đề liên quan