======================================
chapter5/e 运行程序命令记录
======================================
# 先制作内核
nasm -f elf -o kernel.o kernel.asm
ld -s -m elf_i386 -Ttext 0x30400 -o kernel.bin kernel.o string.o start.o
# 再制作磁盘和引导程序
bximage #生成a.img软盘
nasm boot.asm -o boot.bin #引导扇区,加载引导程序
nasm loader.asm -o loader.bin #编译引导程序,引导内核
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
sudo mount -o loop a.img /mnt/floppy/
sudo cp -fv loader.bin /mnt/floppy/
sudo cp -fv kernel.bin /mnt/floppy/
sudo umount /mnt/floppy/
#最后运行
bochs
c
======================================
chapter5/f 运行程序命令记录
======================================
# 先制作内核
nasm -f elf -o kernel.o kernel.asm
nasm -f elf -o string.o string.asm
nasm -f elf -o kliba.o kliba.asm
gcc -c -m32 -fno-builtin -o start.o start.c
ld -s -m elf_i386 -Ttext 0x30400 -o kernel.bin kernel.o string.o start.o kliba.o
# 再制作磁盘和引导程序
bximage #生成a.img软盘
nasm boot.asm -o boot.bin #引导扇区,加载引导程序
nasm loader.asm -o loader.bin #编译引导程序,引导内核
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
sudo mount -o loop a.img /mnt/floppy
sudo cp -fv loader.bin /mnt/floppy
sudo cp -fv kernel.bin /mnt/floppy
sudo umount /mnt/floppy
#最后运行
bochs
c
========================================
chapter6/g 运行程序命令记录
=========================================
#修改Makefile:
第20,21行: 分别增加 -m32 和 -m elf_i386
CFLAGS = -I include/ -c -m32 -fno-builtin
LDFLAGS = -s -m elf_i386 -Ttext $(ENTRYPOINT)
#执行
make image
bochs
c
=======================================
chapter6/h 运行程序命令记录
=======================================
#Makefile中第20行: CFLAGS 加上 -m32
第21行 : LDFLAGS 加上 -m elf_i386
make image
出现错误:
ld -s -m elf_i386 -Ttext 0x30400 -o kernel.bin kernel/kernel.o kernel/start.o kernel/i8259.o kernel/global.o kernel/protect.o lib/klib.o lib/kliba.o lib/string.o
lib/klib.o:在函数‘disp_int’中:
klib.c:(.text+0xe6):对‘__stack_chk_fail’未定义的引用
make: *** [kernel.bin] 错误 1
------------------------------------------------
# 解决办法: 在顶层的Makefile里找到CFLAGS然后在参数后面添加-fno-stack-protector标志
make clean
make image
bochs
c
=================================================