學習操作系統,看經典系統的源碼,有很多收穫,在博客上記錄一下發現的問題和學習的收穫。
第一步就是要將xv6運行起來。在這裏記錄一下,運行過程中的問題。
過程中的問題
recipe for target ‘bootblock’ failed
問題如下圖所示。問題根源是sign.pl文件無法運行。無法運行有兩種情況,一種是權限問題,./sign.pl權限不允許。可以sudo或者chmod 修改sign.pl文件的權限;另一種是系統自帶的perl解釋器的問題,./sign.pl 命令未找到。可以重裝perl解釋器,或者在Makefile文件中,將./sign.pl 換爲 perl sign.pl,換爲可以執行的命令即可。
對vectors未定義的引用
問題如下所示。問題根源在於,在Makefile中,要先編譯trap.c,再生成vector.s,但trap.c需要調用vector.s,兩者產生矛盾。可以修改Makefile的OBJS順序,將vectors放在trap系列之前,即可編譯通過。
no bootable device報錯
問題如下所示。這個問題我沒找到根源,看別人都是文件權限問題,如該博客所說。但我只是重新下載了源碼,編譯就成功了。果然重寫重做大法好!
實驗結果
最後成功截圖如下。