OSDev.org
https://forum.osdev.org/

Kernel loading problem
https://forum.osdev.org/viewtopic.php?f=1&t=33055
Page 1 of 2

Author:  Sipige [ Tue Jul 03, 2018 10:13 am ]
Post subject:  Kernel loading problem

Hello, I am on LINUX and I trying to make an little operating system using NASM and QEMU with a FAT12 filesystem but it doesn't work.
I have take the source code from a tutorial that you can download here : http://www.brokenthorn.com/Resources/Demos/Demo1.zip.

I make this :
Code:
sipige@Sipige-GE62VR-6RF:~/Téléchargements/Demo1 (1)$ cd Stage1
sipige@Sipige-GE62VR-6RF:~/Téléchargements/Demo1 (1)/Stage1$ nasm -f bin Boot1.asm -o Boot1.bin
sipige@Sipige-GE62VR-6RF:~/Téléchargements/Demo1 (1)/Stage1$ cd ../Stage2
sipige@Sipige-GE62VR-6RF:~/Téléchargements/Demo1 (1)/Stage2$ nasm -f bin Stage2.asm -o KRNLDR.SYS
sipige@Sipige-GE62VR-6RF:~/Téléchargements/Demo1 (1)/Stage2$ cd ..
sipige@Sipige-GE62VR-6RF:~/Téléchargements/Demo1 (1)$ cat Stage1/Boot1.bin Stage2/KRNLDR.SYS /dev/zero | dd of=floppyA bs=512 count=2880
2880+0 enregistrements lus
2880+0 enregistrements écrits
1474560 bytes (1,5 MB, 1,4 MiB) copied, 0,00695998 s, 212 MB/s
sipige@Sipige-GE62VR-6RF:~/Téléchargements/Demo1 (1)$ qemu-system-i386 -boot a -fda floppyA
WARNING: Image format was not specified for 'floppyA' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.
sipige@Sipige-GE62VR-6RF:~/Téléchargements/Demo1 (1)$


And I have :
Code:
ERROR : Press Any Key to Reboot


I do not know what to do.
Thanks

Author:  neon [ Tue Jul 03, 2018 11:47 am ]
Post subject:  Re: Kernel loading problem

Hello,

You shouldn't be concatenating those two files. Reformat the disk, then install stage 1, then mount the disk and copy stage2.bin to the root directory. Please reference the OSDev wiki here for creating and mounting disk images with Linux.

Author:  Sipige [ Tue Jul 03, 2018 11:55 am ]
Post subject:  Re: Kernel loading problem

Thank you. I will test this tomorrow.

Author:  Sipige [ Wed Jul 04, 2018 2:35 am ]
Post subject:  Re: Kernel loading problem

Ok but I have a problem with losetup :
Code:
root@Sipige-GE62VR-6RF:/home/sipige/Téléchargements/Demo1 (1)# dd if=/dev/zero of=floppy.img bs=512 count=2880
2880+0 enregistrements lus
2880+0 enregistrements écrits
1474560 bytes (1,5 MB, 1,4 MiB) copied, 0,0247006 s, 59,7 MB/s
root@Sipige-GE62VR-6RF:/home/sipige/Téléchargements/Demo1 (1)# losetup /dev/loop0 floppy.img
losetup: floppy.img : échec de configuration du périphérique boucle: Périphérique ou ressource occupé
root@Sipige-GE62VR-6RF:/home/sipige/Téléchargements/Demo1 (1)#

Author:  Velko [ Wed Jul 04, 2018 4:57 am ]
Post subject:  Re: Kernel loading problem

Quote:
échec de configuration du périphérique boucle: Périphérique ou ressource occupé

It complains that /dev/loop0 is already in use.

To see the details, run
Code:
losetup -l


If you know what that loopback device is used for (you did set it up earlier), can detach it by running
Code:
losetup -d /dev/loop0


You can use another loopback device as well. My Linux distro has /dev/loop0, /dev/loop1, ..., /dev/loop7 and there's probably a way to add more.

Author:  Sipige [ Wed Jul 04, 2018 7:02 am ]
Post subject:  Re: Kernel loading problem

Ok thanks.

I have this :
Code:
root@Sipige-GE62VR-6RF:/home/sipige/Téléchargements/Demo1 (1)# dd if=/dev/zero of=floppy.img bs=512 count=2880
2880+0 enregistrements lus
2880+0 enregistrements écrits
1474560 bytes (1,5 MB, 1,4 MiB) copied, 0,0243512 s, 60,6 MB/s
root@Sipige-GE62VR-6RF:/home/sipige/Téléchargements/Demo1 (1)# losetup /dev/loop16 floppy.img
root@Sipige-GE62VR-6RF:/home/sipige/Téléchargements/Demo1 (1)# mkdosfs -F 12 /dev/loop16
mkfs.fat 4.1 (2017-01-24)
root@Sipige-GE62VR-6RF:/home/sipige/Téléchargements/Demo1 (1)#


But now I don't know to install stage1 and how to copy stage2.

Author:  neon [ Wed Jul 04, 2018 11:42 am ]
Post subject:  Re: Kernel loading problem

Hello,

For installing the boot record (stage1) -- This can be done using third party software (i.e. PartCopy or a hex editor like Cygnus or HxD) or writing your own program to do it. We recommend just writing a utility since it can be extended in the future -- for now though all it needs to do is a simple fread/fwrite to read stage1.bin and overwrite the first 512 bytes of the disk image with it.

For copying the boot loader (stage2) -- You need to mount the disk image to some device so you can open it and access its contents. Copy stage2.bin to the root directory of the disk image.

Author:  FusT [ Thu Jul 05, 2018 4:20 am ]
Post subject:  Re: Kernel loading problem

Did you actually try to search the wiki?
Just about everything you're asking is outlined in the Bare Bones article.
If you're not using Grub to boot the OS, there are resources for that too.

This might come across as hostile, but please search the wiki before posting a question.

Author:  Sipige [ Thu Jul 05, 2018 4:48 am ]
Post subject:  Re: Kernel loading problem

Fust I have search but I don't want to use grub and all is in english.

Code:
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1/Stage1# nasm -f bin Boot1.asm -o bootloader.bin
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1/Stage1# cd ../Stage2
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1/Stage2# nasm -f bin Stage2.asm -o KRNLDR.SYS
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1/Stage2# cd ..
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1# dd if=/dev/zero of=floppy.img bs=512 count=2880
2880+0 enregistrements lus
2880+0 enregistrements écrits
1474560 bytes (1,5 MB, 1,4 MiB) copied, 0,00841148 s, 175 MB/s
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1# losetup /dev/loop15 floppy.img
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1# mkdosfs -F 12 /dev/loop15
mkfs.fat 4.1 (2017-01-24)
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1# chmod a+w floppy.img


Then I use wxHexEditor for replace the beginning of floppy.img by bootloader.bin.
Now I must copy KRNLDR.SYS to /dev/loop15 but I am new on Linux and I don't know ho to do.
Thank you

EDIT : Ah ok. Just had to do cd / mnt!
So I make this :
Code:
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1# mount /dev/loop15 /mnt -t msdos -o "fat=12"
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1# mv Stage2/KRNLDR.SYS /mnt
root@Sipige-GE62VR-6RF:/home/sipige/Documents/os/BrokenThorn/Demo1# qemu-system-i386 floppy.img

But the boot failed.
I don't know why but it is not in capital letters.
Code:
root@Sipige-GE62VR-6RF:/mnt# dir
krnldr.sys

Author:  neon [ Thu Jul 05, 2018 10:04 am ]
Post subject:  Re: Kernel loading problem

Hello,

You should be unmounting it before using floppy.img (or just boot directly from /mnt.) Also, case sensitivity (upper/lower case) doesn't matter since we are using the 8.3 short file name to find it. i.e. "krnldr" and "KRNLDR" are two names for the same file.

Author:  Sipige [ Thu Jul 05, 2018 10:16 am ]
Post subject:  Re: Kernel loading problem

THANK YOU !!!
Thank you very much !
Since the time I was stuck on it I began to believe that it would never work!

Author:  FusT [ Fri Jul 06, 2018 1:03 am ]
Post subject:  Re: Kernel loading problem

Sipige wrote:
and all is in english.

You'll find that the vast majority of OSdev resources are in English, which can make it a bit difficult if your English isn't very good.
This forum, wiki and most of the hardware manuals are in English. I'd argue that, besides knowing ASM/C/C++/whatever you write your OS in, English is a required skill to start OSdeving (though I have come across some French OSdev-related websites and forums too).

Again, this might come across a bit harsh but a lot of the things you're asking can be found through the wiki, forums or Google search with little to no effort and most of it isn't very OSdev-related, it's basic Linux usage.

Also, starting something as hard as OSdev on a platform that is completely new to you is probably not the best choice.
Stick with what you know (Windows I suppose, lots of great tools and resources out there for OSdev), take your first steps in the world of OSdev and become familiar with it.
It's good to want to learn how to use a new system (or programming language, for that matter), but don't combine it with trying to learn how to develop an OS, it'll be too much.

Of course, this is just my take on things, others might disagree.

Author:  Sipige [ Fri Jul 06, 2018 2:15 am ]
Post subject:  Re: Kernel loading problem

Yes but reading a language is the best way to learn it.
I can read english well but I need time so I prefer french.

Author:  dseller [ Fri Jul 06, 2018 9:24 am ]
Post subject:  Re: Kernel loading problem

I also suppose that if qemu could not open the image, it would have said something along the lines of "Could not open file" in its log file/output window.

If you got stuck on this part, it might be best to take a step back and get used to Linux first.

Author:  Sipige [ Fri Jul 06, 2018 9:25 am ]
Post subject:  Re: Kernel loading problem

No it is solved.

Page 1 of 2 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/