2017-05-30 8 views
0

qemuエミュレータを使って単純なカーネルを読み込もうとしていますが、qemuが "ハードディスクから起動"してしまいました。 A screenshot of the problemQemuがハードディスクから起動するのをやめました

カーネルのソースコードは以下のリンクで見つけることができます:ディレクトリobj/kern/kernel.imgでラボ1の割り当てで、https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/Pdf of lab1,tar.gz of lab1,pointers1.c。タスクがあった。

The first part concentrates on getting familiarized with x86 assembly language, the QEMU x86 emulator, and the PC's power-on bootstrap procedure. The second part examines the boot loader for our 6.828 kernel, which resides in the boot directory of the lab tree ...

% cd lab 
% make 
... 
+ mk obj/kern/kernel.img 

.. Now you're ready to run QEMU, supplying the file obj/kern/kernel.img, created above, as the contents of the emulated PC's "virtual hard disk." This hard disk image contains both our boot loader (obj/boot/boot) and our kernel (obj/kernel).

% make qemu 
+1

あなたの提供するブートパラメータに関する詳細情報を追加してください。この写真はあなたの直面している問題を特定するのに大いに役に立たない? – LethalProgrammer

+0

@LethalProgrammerお返事ありがとう!私は次のコマンドを使用しています:sudo qemu-system-x86_64 -drive format = raw、file = obj/kern/kernel.img – eng140

+0

'obj/kern/kernel.img'とは何ですか? 'file -k obj/kern/kernel.img'とは何ですか? – osgx

答えて

0

eng140、コースのpdf MIT6_828F12_lab1.pdfで説明したように - https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab1.pdf、あなたはmake qemuでメイクファイルからQEMUを起動する必要があります。

This executes QEMU with the options required to set the hard disk and direct serial port output to the terminal. Some text should appear in the QEMU window: ...

あなたは、マニュアルの手順で起動してはいけませんあなたのように(qemu-system-x86_64 ..)。このターゲットは

qemu: $(IMAGES) pre-qemu 
    $(QEMU) $(QEMUOPTS) 

としてラボたGNUmakefileで実装され、QEMUのVaRはほとんどのプラットフォームとのMacOSのi386-softmmuの上qemuです。するには、qemuまたは標準qemuコマンドの32ビットシステムバージョンを使用しようとします。メイクファイルからのオプションは似ています:ラボのオプションがある-serial mon:stdioを持って

QEMUOPTS = -hda $(OBJDIR)/kern/kernel.img -serial mon:stdio -gdb tcp::$(GDBPORT) 
QEMUOPTS += $(shell if $(QEMU) -nographic -help | grep -q '^-D '; then echo '-D qemu.log'; fi) 
IMAGES = $(OBJDIR)/kern/kernel.img 
QEMUOPTS += $(QEMUEXTRA) 

... http://download.qemu.org/qemu-doc.html

-serial dev -- Redirect the virtual serial port to host character device dev. .. This option can be used several times to simulate up to 4 serial ports. ...

mon:dev_string 

This is a special option to allow the monitor to be multiplexed onto another serial port. The monitor is accessed with key sequence of Control-a and then pressing c. dev_string should be any one of the serial devices specified above. An example to multiplex the monitor onto a telnet server listening on port 4444 would be:

おそらくブート可能にするあなたのイメージは、シリアルポートを使用して、物事を印刷するには表示されません。以下のようなあなたのコマンドに追加してみてください:

qemu-system-i386 -drive format=raw,file=obj/kern/kernel.img -serial mon:stdio 

または

qemu-system-i386 -hda obj/kern/kernel.img -serial mon:stdio 
+0

お返事ありがとうございます!上記の行をGNUmakefileに追加しようとしましたが、うまくいかなかったのです。 – eng140

+0

eng140は 'qemu-system-i386 -hda obj/kern/kernelです。img -serial mon:stdio' line work?それのテキスト出力は何ですか? – osgx

+0

qemu-system-i386を開くことができませんでした。そのようなファイルやディレクトリはありません。 – eng140

0

eng140、あなたは32ビットLinuxを使用することができます。私も同じ問題がありました。 32ビットLinuxを使用した後、この問題は解決されました。次のWeb https://pdos.csail.mit.edu/6.828/2017/tools.html の「仮想マシンの使用」のセクションでは、32ビットLinuxを使用することをお勧めします。

関連する問題