From 4f5f689c207ca49d25b2fe335df3491c66fb0e39 Mon Sep 17 00:00:00 2001 From: Medium Fries Date: Thu, 29 Nov 2018 20:47:13 -0800 Subject: [PATCH] first thingy --- .gitignore | 2 + bochslog | 239 ++++++++++++++++++++++++++++++++++++++++++++++++++ bochslog.txt | 241 +++++++++++++++++++++++++++++++++++++++++++++++++++ bochsrc.conf | 9 ++ iso.sh | 10 +++ link.ld | 29 +++++++ loader.asm | 20 +++++ readme.md | 6 ++ setup.sh | 11 +++ 9 files changed, 567 insertions(+) create mode 100644 .gitignore create mode 100644 bochslog create mode 100644 bochslog.txt create mode 100644 bochsrc.conf create mode 100644 iso.sh create mode 100644 link.ld create mode 100644 loader.asm create mode 100644 readme.md create mode 100644 setup.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4374aa4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*o +*elf diff --git a/bochslog b/bochslog new file mode 100644 index 0000000..30846f4 --- /dev/null +++ b/bochslog @@ -0,0 +1,239 @@ +00000000000i[ ] Bochs x86 Emulator 2.6 +00000000000i[ ] Built from SVN snapshot on September 2nd, 2012 +00000000000i[ ] System configuration +00000000000i[ ] processors: 1 (cores=1, HT threads=1) +00000000000i[ ] A20 line support: yes +00000000000i[ ] IPS is set to 1000000 +00000000000i[ ] CPU configuration +00000000000i[ ] level: 6 +00000000000i[ ] SMP support: no +00000000000i[ ] APIC support: xapic +00000000000i[ ] FPU support: yes +00000000000i[ ] MMX support: yes +00000000000i[ ] 3dnow! support: no +00000000000i[ ] SEP support: yes +00000000000i[ ] SSE support: sse2 +00000000000i[ ] XSAVE support: no +00000000000i[ ] AES support: no +00000000000i[ ] MOVBE support: no +00000000000i[ ] ADX support: no +00000000000i[ ] x86-64 support: yes +00000000000i[ ] 1G paging support: no +00000000000i[ ] MWAIT support: yes +00000000000i[ ] AVX support: no +00000000000i[ ] VMX support: 1 +00000000000i[ ] Optimization configuration +00000000000i[ ] RepeatSpeedups support: yes +00000000000i[ ] Fast function calls: yes +00000000000i[ ] Handlers Chaining speedups: no +00000000000i[ ] Devices configuration +00000000000i[ ] NE2000 support: yes +00000000000i[ ] PCI support: yes, enabled=yes +00000000000i[ ] SB16 support: yes +00000000000i[ ] USB support: yes +00000000000i[ ] VGA extension support: vbe cirrus +00000000000i[MEM0 ] allocated memory at 0x7fcf6e615010. after alignment, vector=0x7fcf6e616000 +00000000000i[MEM0 ] 32.00MB +00000000000i[MEM0 ] mem block size = 0x00100000, blocks=32 +00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('/usr/share/bochs/BIOS-bochs-latest') +00000000000i[VTIME] using 'realtime pit' synchronization method +00000000000i[ ] lt_dlhandle is 0x2e31230 +00000000000i[PLGIN] loaded plugin libbx_hdimage.so +00000000000i[ ] lt_dlhandle is 0x2e31ae0 +00000000000i[PLGIN] loaded plugin libbx_pci.so +00000000000i[ ] lt_dlhandle is 0x2e32660 +00000000000i[PLGIN] loaded plugin libbx_pci2isa.so +00000000000i[ ] lt_dlhandle is 0x2e33060 +00000000000i[PLGIN] loaded plugin libbx_acpi.so +00000000000i[ ] lt_dlhandle is 0x2e33a60 +00000000000i[PLGIN] loaded plugin libbx_cmos.so +00000000000i[ ] lt_dlhandle is 0x2e34390 +00000000000i[PLGIN] loaded plugin libbx_dma.so +00000000000i[ ] lt_dlhandle is 0x2e34e20 +00000000000i[PLGIN] loaded plugin libbx_pic.so +00000000000i[ ] lt_dlhandle is 0x2e356b0 +00000000000i[PLGIN] loaded plugin libbx_pit.so +00000000000i[ ] lt_dlhandle is 0x2e360e0 +00000000000i[PLGIN] loaded plugin libbx_floppy.so +00000000000i[ ] lt_dlhandle is 0x2e36cc0 +00000000000i[PLGIN] loaded plugin libbx_vga.so +00000000000i[ ] lt_dlhandle is 0x2e37530 +00000000000i[PLGIN] loaded plugin libbx_ioapic.so +00000000000i[ ] lt_dlhandle is 0x2e37d70 +00000000000i[PLGIN] loaded plugin libbx_keyboard.so +00000000000i[ ] lt_dlhandle is 0x2e387e0 +00000000000i[PLGIN] loaded plugin libbx_harddrv.so +00000000000i[ ] lt_dlhandle is 0x2e4a8f0 +00000000000i[PLGIN] loaded plugin libbx_pci_ide.so +00000000000i[PLGIN] init_dev of 'pci' plugin device by virtual method +00000000000i[PCI ] 440FX Host bridge present at device 0, function 0 +00000000000i[PLGIN] init_dev of 'pci2isa' plugin device by virtual method +00000000000i[PCI ] PIIX3 PCI-to-ISA bridge present at device 1, function 0 +00000000000i[PLGIN] init_dev of 'cmos' plugin device by virtual method +00000000000i[CMOS ] Using local time for initial clock +00000000000i[CMOS ] Setting initial clock to: Thu Nov 29 19:46:53 2018 (time0=1543549613) +00000000000i[PLGIN] init_dev of 'dma' plugin device by virtual method +00000000000i[DMA ] channel 4 used by cascade +00000000000i[PLGIN] init_dev of 'pic' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'pit' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'floppy' plugin device by virtual method +00000000000i[DMA ] channel 2 used by Floppy Drive +00000000000i[PLGIN] init_dev of 'vga' plugin device by virtual method +00000000000i[MEM0 ] Register memory access handlers: 0x00000000000a0000 - 0x00000000000bffff +00000000000i[VGA ] interval=200000 +00000000000i[MEM0 ] Register memory access handlers: 0x00000000e0000000 - 0x00000000e0ffffff +00000000000i[BXVGA] VBE Bochs Display Extension Enabled +00000000000i[MEM0 ] rom at 0xc0000/41472 ('/usr/share/bochs/VGABIOS-lgpl-latest') +00000000000i[PLGIN] init_dev of 'acpi' plugin device by virtual method +00000000000i[PCI ] ACPI Controller present at device 1, function 3 +00000000000i[PLGIN] init_dev of 'ioapic' plugin device by virtual method +00000000000i[IOAP ] initializing I/O APIC +00000000000i[MEM0 ] Register memory access handlers: 0x00000000fec00000 - 0x00000000fec00fff +00000000000i[PLGIN] init_dev of 'keyboard' plugin device by virtual method +00000000000i[KBD ] will paste characters every 1000 keyboard ticks +00000000000i[PLGIN] init_dev of 'harddrv' plugin device by virtual method +00000000000i[HD ] CD on ata0-0: 'os.iso' +00000000000i[CD1 ] load cdrom with path=os.iso +00000000000e[CD1 ] open cd failed for os.iso: No such file or directory +00000000000i[HD ] Could not locate CD-ROM, continuing with media not present +00000000000i[HD ] Using boot sequence cdrom, none, none +00000000000i[HD ] Floppy boot signature check is enabled +00000000000i[PLGIN] init_dev of 'pci_ide' plugin device by virtual method +00000000000i[PCI ] PIIX3 PCI IDE controller present at device 1, function 1 +00000000000i[PLGIN] init_dev of 'unmapped' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'biosdev' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'speaker' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'extfpuirq' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'parallel' plugin device by virtual method +00000000000i[PAR ] parallel port 1 at 0x0378 irq 7 +00000000000i[PLGIN] init_dev of 'serial' plugin device by virtual method +00000000000i[SER ] com1 at 0x03f8 irq 4 +00000000000i[PLGIN] init_dev of 'gameport' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'iodebug' plugin device by virtual method +00000000000i[PLGIN] register state of 'pci' plugin device by virtual method +00000000000i[PLGIN] register state of 'pci2isa' plugin device by virtual method +00000000000i[PLGIN] register state of 'cmos' plugin device by virtual method +00000000000i[PLGIN] register state of 'dma' plugin device by virtual method +00000000000i[PLGIN] register state of 'pic' plugin device by virtual method +00000000000i[PLGIN] register state of 'pit' plugin device by virtual method +00000000000i[PLGIN] register state of 'floppy' plugin device by virtual method +00000000000i[PLGIN] register state of 'vga' plugin device by virtual method +00000000000i[PLGIN] register state of 'unmapped' plugin device by virtual method +00000000000i[PLGIN] register state of 'biosdev' plugin device by virtual method +00000000000i[PLGIN] register state of 'speaker' plugin device by virtual method +00000000000i[PLGIN] register state of 'extfpuirq' plugin device by virtual method +00000000000i[PLGIN] register state of 'parallel' plugin device by virtual method +00000000000i[PLGIN] register state of 'serial' plugin device by virtual method +00000000000i[PLGIN] register state of 'gameport' plugin device by virtual method +00000000000i[PLGIN] register state of 'iodebug' plugin device by virtual method +00000000000i[PLGIN] register state of 'acpi' plugin device by virtual method +00000000000i[PLGIN] register state of 'ioapic' plugin device by virtual method +00000000000i[PLGIN] register state of 'keyboard' plugin device by virtual method +00000000000i[PLGIN] register state of 'harddrv' plugin device by virtual method +00000000000i[PLGIN] register state of 'pci_ide' plugin device by virtual method +00000000000i[SYS ] bx_pc_system_c::Reset(HARDWARE) called +00000000000i[CPU0 ] cpu hardware reset +00000000000i[APIC0] allocate APIC id=0 (MMIO enabled) to 0x00000000fee00000 +00000000000i[CPU0 ] CPUID[0x00000000]: 00000002 756e6547 6c65746e 49656e69 +00000000000i[CPU0 ] CPUID[0x00000001]: 00000633 00010800 00002028 1fcbfbff +00000000000i[CPU0 ] CPUID[0x00000002]: 00410601 00000000 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000000]: 80000008 00000000 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000001]: 00000000 00000000 00000101 2a100000 +00000000000i[CPU0 ] CPUID[0x80000002]: 20202020 20202020 20202020 6e492020 +00000000000i[CPU0 ] CPUID[0x80000003]: 286c6574 50202952 69746e65 52286d75 +00000000000i[CPU0 ] CPUID[0x80000004]: 20342029 20555043 20202020 00202020 +00000000000i[CPU0 ] CPUID[0x80000005]: 01ff01ff 01ff01ff 40020140 40020140 +00000000000i[CPU0 ] CPUID[0x80000006]: 00000000 42004200 02008140 00000000 +00000000000i[CPU0 ] CPUID[0x80000007]: 00000000 00000000 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000008]: 00003028 00000000 00000000 00000000 +00000000000i[PLGIN] reset of 'pci' plugin device by virtual method +00000000000i[PLGIN] reset of 'pci2isa' plugin device by virtual method +00000000000i[PLGIN] reset of 'cmos' plugin device by virtual method +00000000000i[PLGIN] reset of 'dma' plugin device by virtual method +00000000000i[PLGIN] reset of 'pic' plugin device by virtual method +00000000000i[PLGIN] reset of 'pit' plugin device by virtual method +00000000000i[PLGIN] reset of 'floppy' plugin device by virtual method +00000000000i[PLGIN] reset of 'vga' plugin device by virtual method +00000000000i[PLGIN] reset of 'acpi' plugin device by virtual method +00000000000i[PLGIN] reset of 'ioapic' plugin device by virtual method +00000000000i[PLGIN] reset of 'keyboard' plugin device by virtual method +00000000000i[PLGIN] reset of 'harddrv' plugin device by virtual method +00000000000i[PLGIN] reset of 'pci_ide' plugin device by virtual method +00000000000i[PLGIN] reset of 'unmapped' plugin device by virtual method +00000000000i[PLGIN] reset of 'biosdev' plugin device by virtual method +00000000000i[PLGIN] reset of 'speaker' plugin device by virtual method +00000000000e[SPEAK] Failed to open /dev/console: Permission denied +00000000000e[SPEAK] Deactivating beep on console +00000000000i[PLGIN] reset of 'extfpuirq' plugin device by virtual method +00000000000i[PLGIN] reset of 'parallel' plugin device by virtual method +00000000000i[PLGIN] reset of 'serial' plugin device by virtual method +00000000000i[PLGIN] reset of 'gameport' plugin device by virtual method +00000000000i[PLGIN] reset of 'iodebug' plugin device by virtual method +00000000000i[ ] set SIGINT handler to bx_debug_ctrlc_handler +00000000025i[MEM0 ] allocate_block: block=0x0 used 0x1 of 0x20 +00000004661i[BIOS ] $Revision: 11318 $ $Date: 2012-08-06 19:59:54 +0200 (Mo, 06. Aug 2012) $ +00000318321i[KBD ] reset-disable command received +00000319563i[BIOS ] Starting rombios32 +00000320005i[BIOS ] Shutdown flag 0 +00000320602i[BIOS ] ram_size=0x02000000 +00000321030i[BIOS ] ram_end=32MB +00000333047i[BIOS ] Found 1 cpu(s) +00000347228i[BIOS ] bios_table_addr: 0x000fa438 end=0x000fcc00 +00000675023i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) +00001002955i[P2I ] PCI IRQ routing: PIRQA# set to 0x0b +00001002979i[P2I ] PCI IRQ routing: PIRQB# set to 0x09 +00001003003i[P2I ] PCI IRQ routing: PIRQC# set to 0x0b +00001003027i[P2I ] PCI IRQ routing: PIRQD# set to 0x09 +00001003037i[P2I ] write: ELCR2 = 0x0a +00001003816i[BIOS ] PIIX3/PIIX4 init: elcr=00 0a +00001011496i[BIOS ] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 class=0x0600 +00001013775i[BIOS ] PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 class=0x0601 +00001015893i[BIOS ] PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 class=0x0101 +00001016122i[PIDE ] new BM-DMA address: 0xc000 +00001016742i[BIOS ] region 4: 0x0000c000 +00001018776i[BIOS ] PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 class=0x0680 +00001019006i[ACPI ] new irq line = 11 +00001019020i[ACPI ] new irq line = 9 +00001019047i[ACPI ] new PM base address: 0xb000 +00001019061i[ACPI ] new SM base address: 0xb100 +00001019089i[PCI ] setting SMRAM control register to 0x4a +00001183183i[CPU0 ] Enter to System Management Mode +00001183183i[CPU0 ] enter_system_management_mode: temporary disable VMX while in SMM mode +00001183193i[CPU0 ] RSM: Resuming from System Management Mode +00001347214i[PCI ] setting SMRAM control register to 0x0a +00001362116i[BIOS ] MP table addr=0x000fa510 MPC table addr=0x000fa440 size=0xc8 +00001363931i[BIOS ] SMBIOS table addr=0x000fa520 +00001363982i[MEM0 ] allocate_block: block=0x1f used 0x2 of 0x20 +00001366910i[BIOS ] Firmware waking vector 0x1ff00cc +00001371769i[BIOS ] ACPI tables: RSDP addr=0x000fa640 ACPI DATA addr=0x01ff0000 size=0x1f22 +00001371806i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) +00001372537i[BIOS ] bios_table_cur_addr: 0x000fa664 +00001500155i[VBIOS] VGABios $Id: vgabios.c,v 1.75 2011/10/15 14:07:21 vruppert Exp $ +00001500226i[BXVGA] VBE known Display Interface b0c0 +00001500258i[BXVGA] VBE known Display Interface b0c5 +00001503183i[VBIOS] VBE Bios $Id: vbe.c,v 1.64 2011/07/19 18:25:05 vruppert Exp $ +00005715308i[BIOS ] IDE time out +00263771906e[HD ] ata0-0: atapi_cmd_error: key=02 asc=3a +00263774581i[BIOS ] ata_is_ready returned 1 +00263775099e[HD ] ata0-0: atapi_cmd_error: key=02 asc=3a +00263798589i[BIOS ] CDROM boot failure code : 0003 +00263853597p[BIOS ] >>PANIC<< No bootable device. +00263853597i[CPU0 ] CPU is in real mode (active) +00263853597i[CPU0 ] CS.mode = 16 bit +00263853597i[CPU0 ] SS.mode = 16 bit +00263853597i[CPU0 ] EFER = 0x00000000 +00263853597i[CPU0 ] | EAX=0000040a EBX=0000cd04 ECX=00090004 EDX=00000402 +00263853597i[CPU0 ] | ESP=0000ffaa EBP=0000ffae ESI=000e0000 EDI=0000f76c +00263853597i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf +00263853597i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D +00263853597i[CPU0 ] | CS:f000( 0004| 0| 0) 000f0000 0000ffff 0 0 +00263853597i[CPU0 ] | DS:f000( 0005| 0| 0) 000f0000 0000ffff 0 0 +00263853597i[CPU0 ] | SS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 +00263853597i[CPU0 ] | ES:0ffc( 0005| 0| 0) 0000ffc0 0000ffff 0 0 +00263853597i[CPU0 ] | FS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 +00263853597i[CPU0 ] | GS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 +00263853597i[CPU0 ] | EIP=0000054b (0000054a) +00263853597i[CPU0 ] | CR0=0x60000010 CR2=0x00000000 +00263853597i[CPU0 ] | CR3=0x00000000 CR4=0x00000000 +00263853597i[CMOS ] Last time is 1543549876 (Thu Nov 29 19:51:16 2018) +00263853597i[CTRL ] quit_sim called with exit code 1 diff --git a/bochslog.txt b/bochslog.txt new file mode 100644 index 0000000..27eb411 --- /dev/null +++ b/bochslog.txt @@ -0,0 +1,241 @@ +00000000000i[ ] Bochs x86 Emulator 2.6 +00000000000i[ ] Built from SVN snapshot on September 2nd, 2012 +00000000000i[ ] System configuration +00000000000i[ ] processors: 1 (cores=1, HT threads=1) +00000000000i[ ] A20 line support: yes +00000000000i[ ] IPS is set to 1000000 +00000000000i[ ] CPU configuration +00000000000i[ ] level: 6 +00000000000i[ ] SMP support: no +00000000000i[ ] APIC support: xapic +00000000000i[ ] FPU support: yes +00000000000i[ ] MMX support: yes +00000000000i[ ] 3dnow! support: no +00000000000i[ ] SEP support: yes +00000000000i[ ] SSE support: sse2 +00000000000i[ ] XSAVE support: no +00000000000i[ ] AES support: no +00000000000i[ ] MOVBE support: no +00000000000i[ ] ADX support: no +00000000000i[ ] x86-64 support: yes +00000000000i[ ] 1G paging support: no +00000000000i[ ] MWAIT support: yes +00000000000i[ ] AVX support: no +00000000000i[ ] VMX support: 1 +00000000000i[ ] Optimization configuration +00000000000i[ ] RepeatSpeedups support: yes +00000000000i[ ] Fast function calls: yes +00000000000i[ ] Handlers Chaining speedups: no +00000000000i[ ] Devices configuration +00000000000i[ ] NE2000 support: yes +00000000000i[ ] PCI support: yes, enabled=yes +00000000000i[ ] SB16 support: yes +00000000000i[ ] USB support: yes +00000000000i[ ] VGA extension support: vbe cirrus +00000000000i[MEM0 ] allocated memory at 0x7efcb7f89010. after alignment, vector=0x7efcb7f8a000 +00000000000i[MEM0 ] 32.00MB +00000000000i[MEM0 ] mem block size = 0x00100000, blocks=32 +00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('/usr/share/bochs/BIOS-bochs-latest') +00000000000i[VTIME] using 'realtime pit' synchronization method +00000000000i[ ] lt_dlhandle is 0x466e230 +00000000000i[PLGIN] loaded plugin libbx_hdimage.so +00000000000i[ ] lt_dlhandle is 0x466eae0 +00000000000i[PLGIN] loaded plugin libbx_pci.so +00000000000i[ ] lt_dlhandle is 0x466f660 +00000000000i[PLGIN] loaded plugin libbx_pci2isa.so +00000000000i[ ] lt_dlhandle is 0x4670060 +00000000000i[PLGIN] loaded plugin libbx_acpi.so +00000000000i[ ] lt_dlhandle is 0x4670a60 +00000000000i[PLGIN] loaded plugin libbx_cmos.so +00000000000i[ ] lt_dlhandle is 0x4671390 +00000000000i[PLGIN] loaded plugin libbx_dma.so +00000000000i[ ] lt_dlhandle is 0x4671e20 +00000000000i[PLGIN] loaded plugin libbx_pic.so +00000000000i[ ] lt_dlhandle is 0x46726b0 +00000000000i[PLGIN] loaded plugin libbx_pit.so +00000000000i[ ] lt_dlhandle is 0x46730e0 +00000000000i[PLGIN] loaded plugin libbx_floppy.so +00000000000i[ ] lt_dlhandle is 0x4673cc0 +00000000000i[PLGIN] loaded plugin libbx_vga.so +00000000000i[ ] lt_dlhandle is 0x4674530 +00000000000i[PLGIN] loaded plugin libbx_ioapic.so +00000000000i[ ] lt_dlhandle is 0x4674d70 +00000000000i[PLGIN] loaded plugin libbx_keyboard.so +00000000000i[ ] lt_dlhandle is 0x46757e0 +00000000000i[PLGIN] loaded plugin libbx_harddrv.so +00000000000i[ ] lt_dlhandle is 0x46878f0 +00000000000i[PLGIN] loaded plugin libbx_pci_ide.so +00000000000i[PLGIN] init_dev of 'pci' plugin device by virtual method +00000000000i[PCI ] 440FX Host bridge present at device 0, function 0 +00000000000i[PLGIN] init_dev of 'pci2isa' plugin device by virtual method +00000000000i[PCI ] PIIX3 PCI-to-ISA bridge present at device 1, function 0 +00000000000i[PLGIN] init_dev of 'cmos' plugin device by virtual method +00000000000i[CMOS ] Using local time for initial clock +00000000000i[CMOS ] Setting initial clock to: Thu Nov 29 19:49:46 2018 (time0=1543549786) +00000000000i[PLGIN] init_dev of 'dma' plugin device by virtual method +00000000000i[DMA ] channel 4 used by cascade +00000000000i[PLGIN] init_dev of 'pic' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'pit' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'floppy' plugin device by virtual method +00000000000i[DMA ] channel 2 used by Floppy Drive +00000000000i[PLGIN] init_dev of 'vga' plugin device by virtual method +00000000000i[MEM0 ] Register memory access handlers: 0x00000000000a0000 - 0x00000000000bffff +00000000000i[VGA ] interval=200000 +00000000000i[MEM0 ] Register memory access handlers: 0x00000000e0000000 - 0x00000000e0ffffff +00000000000i[BXVGA] VBE Bochs Display Extension Enabled +00000000000i[MEM0 ] rom at 0xc0000/41472 ('/usr/share/bochs/VGABIOS-lgpl-latest') +00000000000i[PLGIN] init_dev of 'acpi' plugin device by virtual method +00000000000i[PCI ] ACPI Controller present at device 1, function 3 +00000000000i[PLGIN] init_dev of 'ioapic' plugin device by virtual method +00000000000i[IOAP ] initializing I/O APIC +00000000000i[MEM0 ] Register memory access handlers: 0x00000000fec00000 - 0x00000000fec00fff +00000000000i[PLGIN] init_dev of 'keyboard' plugin device by virtual method +00000000000i[KBD ] will paste characters every 1000 keyboard ticks +00000000000i[PLGIN] init_dev of 'harddrv' plugin device by virtual method +00000000000i[HD ] CD on ata0-0: 'os.iso' +00000000000i[CD1 ] load cdrom with path=os.iso +00000000000i[CD1 ] Opening image file as a cd. +00000000000i[HD ] Media present in CD-ROM drive +00000000000i[HD ] Capacity is 235 sectors (0.46 MB) +00000000000i[HD ] Using boot sequence cdrom, none, none +00000000000i[HD ] Floppy boot signature check is enabled +00000000000i[PLGIN] init_dev of 'pci_ide' plugin device by virtual method +00000000000i[PCI ] PIIX3 PCI IDE controller present at device 1, function 1 +00000000000i[PLGIN] init_dev of 'unmapped' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'biosdev' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'speaker' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'extfpuirq' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'parallel' plugin device by virtual method +00000000000i[PAR ] parallel port 1 at 0x0378 irq 7 +00000000000i[PLGIN] init_dev of 'serial' plugin device by virtual method +00000000000i[SER ] com1 at 0x03f8 irq 4 +00000000000i[PLGIN] init_dev of 'gameport' plugin device by virtual method +00000000000i[PLGIN] init_dev of 'iodebug' plugin device by virtual method +00000000000i[PLGIN] register state of 'pci' plugin device by virtual method +00000000000i[PLGIN] register state of 'pci2isa' plugin device by virtual method +00000000000i[PLGIN] register state of 'cmos' plugin device by virtual method +00000000000i[PLGIN] register state of 'dma' plugin device by virtual method +00000000000i[PLGIN] register state of 'pic' plugin device by virtual method +00000000000i[PLGIN] register state of 'pit' plugin device by virtual method +00000000000i[PLGIN] register state of 'floppy' plugin device by virtual method +00000000000i[PLGIN] register state of 'vga' plugin device by virtual method +00000000000i[PLGIN] register state of 'unmapped' plugin device by virtual method +00000000000i[PLGIN] register state of 'biosdev' plugin device by virtual method +00000000000i[PLGIN] register state of 'speaker' plugin device by virtual method +00000000000i[PLGIN] register state of 'extfpuirq' plugin device by virtual method +00000000000i[PLGIN] register state of 'parallel' plugin device by virtual method +00000000000i[PLGIN] register state of 'serial' plugin device by virtual method +00000000000i[PLGIN] register state of 'gameport' plugin device by virtual method +00000000000i[PLGIN] register state of 'iodebug' plugin device by virtual method +00000000000i[PLGIN] register state of 'acpi' plugin device by virtual method +00000000000i[PLGIN] register state of 'ioapic' plugin device by virtual method +00000000000i[PLGIN] register state of 'keyboard' plugin device by virtual method +00000000000i[PLGIN] register state of 'harddrv' plugin device by virtual method +00000000000i[PLGIN] register state of 'pci_ide' plugin device by virtual method +00000000000i[SYS ] bx_pc_system_c::Reset(HARDWARE) called +00000000000i[CPU0 ] cpu hardware reset +00000000000i[APIC0] allocate APIC id=0 (MMIO enabled) to 0x00000000fee00000 +00000000000i[CPU0 ] CPUID[0x00000000]: 00000002 756e6547 6c65746e 49656e69 +00000000000i[CPU0 ] CPUID[0x00000001]: 00000633 00010800 00002028 1fcbfbff +00000000000i[CPU0 ] CPUID[0x00000002]: 00410601 00000000 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000000]: 80000008 00000000 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000001]: 00000000 00000000 00000101 2a100000 +00000000000i[CPU0 ] CPUID[0x80000002]: 20202020 20202020 20202020 6e492020 +00000000000i[CPU0 ] CPUID[0x80000003]: 286c6574 50202952 69746e65 52286d75 +00000000000i[CPU0 ] CPUID[0x80000004]: 20342029 20555043 20202020 00202020 +00000000000i[CPU0 ] CPUID[0x80000005]: 01ff01ff 01ff01ff 40020140 40020140 +00000000000i[CPU0 ] CPUID[0x80000006]: 00000000 42004200 02008140 00000000 +00000000000i[CPU0 ] CPUID[0x80000007]: 00000000 00000000 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000008]: 00003028 00000000 00000000 00000000 +00000000000i[PLGIN] reset of 'pci' plugin device by virtual method +00000000000i[PLGIN] reset of 'pci2isa' plugin device by virtual method +00000000000i[PLGIN] reset of 'cmos' plugin device by virtual method +00000000000i[PLGIN] reset of 'dma' plugin device by virtual method +00000000000i[PLGIN] reset of 'pic' plugin device by virtual method +00000000000i[PLGIN] reset of 'pit' plugin device by virtual method +00000000000i[PLGIN] reset of 'floppy' plugin device by virtual method +00000000000i[PLGIN] reset of 'vga' plugin device by virtual method +00000000000i[PLGIN] reset of 'acpi' plugin device by virtual method +00000000000i[PLGIN] reset of 'ioapic' plugin device by virtual method +00000000000i[PLGIN] reset of 'keyboard' plugin device by virtual method +00000000000i[PLGIN] reset of 'harddrv' plugin device by virtual method +00000000000i[PLGIN] reset of 'pci_ide' plugin device by virtual method +00000000000i[PLGIN] reset of 'unmapped' plugin device by virtual method +00000000000i[PLGIN] reset of 'biosdev' plugin device by virtual method +00000000000i[PLGIN] reset of 'speaker' plugin device by virtual method +00000000000e[SPEAK] Failed to open /dev/console: Permission denied +00000000000e[SPEAK] Deactivating beep on console +00000000000i[PLGIN] reset of 'extfpuirq' plugin device by virtual method +00000000000i[PLGIN] reset of 'parallel' plugin device by virtual method +00000000000i[PLGIN] reset of 'serial' plugin device by virtual method +00000000000i[PLGIN] reset of 'gameport' plugin device by virtual method +00000000000i[PLGIN] reset of 'iodebug' plugin device by virtual method +00000000000i[ ] set SIGINT handler to bx_debug_ctrlc_handler +00000000025i[MEM0 ] allocate_block: block=0x0 used 0x1 of 0x20 +00000004661i[BIOS ] $Revision: 11318 $ $Date: 2012-08-06 19:59:54 +0200 (Mo, 06. Aug 2012) $ +00000318321i[KBD ] reset-disable command received +00000319563i[BIOS ] Starting rombios32 +00000320005i[BIOS ] Shutdown flag 0 +00000320602i[BIOS ] ram_size=0x02000000 +00000321030i[BIOS ] ram_end=32MB +00000333038i[BIOS ] Found 1 cpu(s) +00000347219i[BIOS ] bios_table_addr: 0x000fa438 end=0x000fcc00 +00000675014i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) +00001002946i[P2I ] PCI IRQ routing: PIRQA# set to 0x0b +00001002970i[P2I ] PCI IRQ routing: PIRQB# set to 0x09 +00001002994i[P2I ] PCI IRQ routing: PIRQC# set to 0x0b +00001003018i[P2I ] PCI IRQ routing: PIRQD# set to 0x09 +00001003028i[P2I ] write: ELCR2 = 0x0a +00001003807i[BIOS ] PIIX3/PIIX4 init: elcr=00 0a +00001011487i[BIOS ] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 class=0x0600 +00001013766i[BIOS ] PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 class=0x0601 +00001015884i[BIOS ] PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 class=0x0101 +00001016113i[PIDE ] new BM-DMA address: 0xc000 +00001016733i[BIOS ] region 4: 0x0000c000 +00001018767i[BIOS ] PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 class=0x0680 +00001018997i[ACPI ] new irq line = 11 +00001019011i[ACPI ] new irq line = 9 +00001019038i[ACPI ] new PM base address: 0xb000 +00001019052i[ACPI ] new SM base address: 0xb100 +00001019080i[PCI ] setting SMRAM control register to 0x4a +00001183174i[CPU0 ] Enter to System Management Mode +00001183174i[CPU0 ] enter_system_management_mode: temporary disable VMX while in SMM mode +00001183184i[CPU0 ] RSM: Resuming from System Management Mode +00001347205i[PCI ] setting SMRAM control register to 0x0a +00001362107i[BIOS ] MP table addr=0x000fa510 MPC table addr=0x000fa440 size=0xc8 +00001363922i[BIOS ] SMBIOS table addr=0x000fa520 +00001363973i[MEM0 ] allocate_block: block=0x1f used 0x2 of 0x20 +00001366901i[BIOS ] Firmware waking vector 0x1ff00cc +00001371760i[BIOS ] ACPI tables: RSDP addr=0x000fa640 ACPI DATA addr=0x01ff0000 size=0x1f22 +00001371797i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) +00001372528i[BIOS ] bios_table_cur_addr: 0x000fa664 +00001500146i[VBIOS] VGABios $Id: vgabios.c,v 1.75 2011/10/15 14:07:21 vruppert Exp $ +00001500217i[BXVGA] VBE known Display Interface b0c0 +00001500249i[BXVGA] VBE known Display Interface b0c5 +00001503174i[VBIOS] VBE Bios $Id: vbe.c,v 1.64 2011/07/19 18:25:05 vruppert Exp $ +00005715368i[BIOS ] IDE time out +00114208035i[BIOS ] Booting from 07c0:0000 +00114308453i[BIOS ] int13_harddisk: function 41, unmapped device for ELDL=80 +00114312133i[BIOS ] int13_harddisk: function 08, unmapped device for ELDL=80 +00114315798i[BIOS ] *** int 15h function AX=00c0, BX=0000 not yet supported! +00115909810i[MEM0 ] allocate_block: block=0x1 used 0x3 of 0x20 +00325473000p[SDL ] >>PANIC<< POWER button turned off. +00325473000i[CPU0 ] CPU is in protected mode (active) +00325473000i[CPU0 ] CS.mode = 32 bit +00325473000i[CPU0 ] SS.mode = 32 bit +00325473000i[CPU0 ] EFER = 0x00000000 +00325473000i[CPU0 ] | EAX=1234abcd EBX=0002cd80 ECX=00000001 EDX=00000000 +00325473000i[CPU0 ] | ESP=00067ed0 EBP=00067ee0 ESI=0002cef0 EDI=0002cef1 +00325473000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf +00325473000i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D +00325473000i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 ffffffff 1 1 +00325473000i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 ffffffff 1 1 +00325473000i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 ffffffff 1 1 +00325473000i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 ffffffff 1 1 +00325473000i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 ffffffff 1 1 +00325473000i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 ffffffff 1 1 +00325473000i[CPU0 ] | EIP=00100011 (00100011) +00325473000i[CPU0 ] | CR0=0x60000011 CR2=0x00000000 +00325473000i[CPU0 ] | CR3=0x00000000 CR4=0x00000000 +00325473000i[CMOS ] Last time is 1543550111 (Thu Nov 29 19:55:11 2018) +00325473000i[CTRL ] quit_sim called with exit code 1 diff --git a/bochsrc.conf b/bochsrc.conf new file mode 100644 index 0000000..96345f8 --- /dev/null +++ b/bochsrc.conf @@ -0,0 +1,9 @@ +megs: 32 +display_library: sdl +romimage: file=/usr/share/bochs/BIOS-bochs-latest +vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest +ata0-master: type=cdrom, path=os.iso, status=inserted +boot: cdrom +log: bochslog.txt +clock: sync=realtime, time0=local +cpu: count=1, ips=1000000 diff --git a/iso.sh b/iso.sh new file mode 100644 index 0000000..e2d9c2e --- /dev/null +++ b/iso.sh @@ -0,0 +1,10 @@ + genisoimage -R \ + -b boot/grub/stage2_eltorito \ + -no-emul-boot \ + -boot-load-size 4 \ + -A os \ + -input-charset utf8 \ + -quiet \ + -boot-info-table \ + -o os.iso \ + iso diff --git a/link.ld b/link.ld new file mode 100644 index 0000000..d81ecda --- /dev/null +++ b/link.ld @@ -0,0 +1,29 @@ +ENTRY(loader) /* entry label */ + +SECTIONS { + /* code will load at 1 MB because grub takes that space */ + /* think of this like the initial offset for _the everthing_ */ + . = 0x00100000; + + /* align instruction block to 4kb */ + .text ALIGN (0x1000) : + { + *(.text) + } + + /* align rodata to 4KB off the previous as well */ + .rodata ALIGN (0x1000) : + { + *(.rodata*) + } + .data ALIGN (0x1000) : + { + *(.data*) + } + + .bss ALIGN (0x1000) : + { + *(COMMON) + *(.bss) + } +} diff --git a/loader.asm b/loader.asm new file mode 100644 index 0000000..8b34b43 --- /dev/null +++ b/loader.asm @@ -0,0 +1,20 @@ +; since we have no stack we have to create one for the OS + +global loader +MAGIC_NUMBER equ 0x1BADB002 +FLAGS equ 0x0 +CHECKSUM equ -MAGIC_NUMBER + +section .text +; align all instructions to 4 byte boundary by the x86 instruction set law +align 4 + ; dropping our magic and other things into memory + dd MAGIC_NUMBER + dd FLAGS + dd CHECKSUM + +loader: + mov eax, 0X1234ABCD + +.loop: + jmp .loop diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..e7f0e40 --- /dev/null +++ b/readme.md @@ -0,0 +1,6 @@ +# Gucci gang + +My attempt to create an operating system to learn more about how things work at a lower level. + +I'm not satisfied with, _dude trust me_, with regards to how something(anything) really works. +For that reason I'm partial to _trial by fire_ when learning because, for me at least, failure isn't an option to learning; it's a requirement. diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..d0906ca --- /dev/null +++ b/setup.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# Setup script to grab any and all dependancies needed to build this on any of my machines +bochs_=$(dpkg --list | grep bochs) +if [ "$bochs_" == "" ] +then + # install bochs shiz + sudo apt-get update + sudo apt-get install bochs bochs-sdl +else + echo 'Nothing to install' +fi