小熊冲!冲!冲! 2025-02-03 16:22 采纳率: 0%
浏览 5

orange操作系统第十章

我最近在学习orange's一个操作系统的实现这本书,但是因为代码久远的原因一些代码一直无法正常运行(当然主要是我猜)。

其中第十章之前的代码基本已经实现了运行,但是第十章的代码(chapter10/e)中的代码一直跑不起来,求各位进行指导

以下是我为了能够运行make和bochs所进行的文件修改,其余文件未动

这是Makefile文件:

# commands/Makefile

#ENTRYPOINT    = 0x1000
HD        = ../80m.img

ASM        = nasm
DASM        = objdump
CC        = gcc-4.8    ;修改1,我指定了gcc版本
LD        = ld
ASMFLAGS    = -I ../include/ -f elf
CFLAGS        = -I ../include/ -c -fno-builtin -fno-stack-protector -Wall -m32 ;修改2,我指定了32位操作系统
LDFLAGS        = -Ttext 0x1000 -m elf_i386    ;修改三,加入elf_i386
DASMFLAGS    = -D
LIB        = ../lib/orangescrt.a
BIN        = echo

# All Phony Targets
.PHONY : everything final clean realclean disasm all install

# Default starting position
everything : $(BIN)

install : all clean
    cp ../kernel.bin ./ -v
    tar vcf inst.tar kernel.bin $(BIN)
    dd if=inst.tar of=$(HD) seek=`echo "obase=10;ibase=16;(\`egrep -e '^ROOT_BASE' ../boot/include/load.inc | sed -e 's/.*0x//g'\`+\`egrep -e '#define[[:space:]]*INSTALL_START_SECT' ../include/sys/config.h | sed -e 's/.*0x//g'\`)*200" | bc` bs=1 count=`ls -l inst.tar | awk -F " " '{print $$5}'` conv=notrunc

all : realclean everything

final : all clean

clean :
    rm -f *.o

realclean :
    rm -f $(BIN) *.o

kernel.bin :
    cp ../kernel.bin ./

start.o : start.asm
    $(ASM) $(ASMFLAGS) -o $@ $<

echo.o: echo.c ../include/type.h ../include/stdio.h
    $(CC) $(CFLAGS) -o $@ $<

echo : echo.o start.o $(LIB)
    $(LD) $(LDFLAGS) -o $@ $?

pwd.o: pwd.c ../include/type.h ../include/stdio.h
    $(CC) $(CFLAGS) -o $@ $<

pwd : pwd.o start.o $(LIB)
    $(LD) $(LDFLAGS) -o $@ $?

这是bochsrc文件


###############################################################
# Configuration file for Bochs
###############################################################

# how much memory the emulated machine will have
megs: 32

# filename of ROM images
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/vgabios/vgabios.bin

# what disk images will be used
floppya: 1_44=a.img, status=inserted

# hard disk
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
# !! Remember to change these if the hd img is changed:
#    1. include/sys/config.h::MINOR_BOOT
#    2. boot/include/load.inc::ROOT_BASE
#    3. Makefile::HD
#    4. commands/Makefile::HD
ata0-master: type=disk, path="80m.img", mode=flat, cylinders=162, heads=16, spt=63

# choose the boot disk.
boot: a

# where do we send log messages?
# log: bochsout.txt

# disable the mouse
mouse: enabled=0

# enable key mapping, using US layout as default.
keyboard:  keymap=/usr/share/bochs/keymaps/x11-pc-us.map

其余文件未动,但是当我使用make image和bochs -f bochsrc命令后却无法得到书本中的运行效果:

img


无法跳转到TTY中进行命令输入。为什么?

2.求大家推荐一下其它的带有运行代码的操作系统学习书,这本书真的太老了,学的真的难受,很多东西与现在不兼容,资料找起来特别痛苦。

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2025-02-03 16:23
    关注

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    我理解你可能正在尝试解决一个特定的问题或困难,但我需要更多上下文信息来回答你的问题。如果你能提供更多的背景信息,比如这段代码的具体内容、你在尝试解决什么问题,或者你需要帮助具体解决哪个章节的内容,这样我可以更好地理解你的需求并提供更具体的建议。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月3日