Soy un gran entusiasta de los sistemas operativos y estoy siguiendo un curso relacionado. Entonces, como proyecto, me asignaron implementar un sistema operativo simple.
Me proporcionaron la implementación simple del sistema operativo dejosé.
Puedo seguir todas las instrucciones dadas y compilar el sector de arranque y la parte rudimentaria del kernel usando el ensamblador NASM. También agregué mi propio código para mostrar información adicional de la máquina.
Para resumir,josées un sistema operativo que fue diseñado para arrancar desde una unidad de disquete. Pero no tengo ningún dispositivo para trabajar con unidades de disquete.
Los diseñadores de JOSH se encargaron dd if=boot.bin bs=512 count=1 of=/dev/fd0
de colocar el archivo boot.bin en el disquete.
Necesito saber si se puede crear una parte de disquete virtual en una unidad USB y puedo iniciar este sistema operativo desde allí.
Como uso ubuntu, realmente agradezco que alguien pueda explicarme cómo crear este disquete virtual en mi USB y cómo colocar los archivos boot.bin y kernel.bin en esa unidad virtual.
Según tengo entendido, deberíamos tener algún tipo de sector de 512 bytes para este archivo boot.bin.
Realmente aprecio si alguien puede ayudarme con esto.
Respuesta1
Deberías investigarArranque PXE.
No es que esté diciendo que necesariamente debas usar PXE en lugar de un disquete (aunque podrías terminar haciéndolo).
Pero la tecnología de arranque PXE utiliza un disquete virtual para iniciar la carga de su eventual sistema operativo. Y hay varias herramientas asociadas para trabajar con disquetes virtuales (rellenarlos, almacenarlos como un archivo), así como para enviar el disquete virtual por cable para que la máquina de destino arranque. Por lo tanto, es muy probable que encuentre lo que necesita en el mundo PXE.
Usé Tftpd32 para esto en el pasado. Iba a publicar un enlace, pero Chrome ahora advierte sobre malware en ese sitio, así que tenga cuidado. Creo que Windows ahora también incluye cosas de este tipo (en WDS en Windows Server).
Respuesta2
No importa, encontré la solución.
josées un sistema operativo de una sola tarea impulsado por interrupciones. Obtenemos el archivo de arranque de 512 bytes que tiene una firma de arranque válida, del sitio y un archivo de kernel simple que en realidad es el sistema operativo.
Ahora bien, este sector de arranque sólo entiende el sistema de archivos FAT12, por lo que tenemos que usar una unidad de disquete para ejecutarlo.
Lo que hice fue crear un disquete virtual y grabar el archivo de arranque en el MBR de ese disco, copiar el archivo del kernel y lo ejecuté en una máquina virtual.
Como encontré enaquíPodemos crear una imagen de disquete usando los siguientes comandos.
~$ cd /media // open the terminal in your home directory and head to /media
/media$ sudo mkdir floppy // create a directory in media
// go back to home directory again
~$ mkfs.msdos -C myfloppy.img 1440 // create a floppy disk image of size 1.44 MB
~ $ sudo mount -o loop myfloppy.img /media/floppy/ // mount the image with the floppy directory.
// now open another terminal where your boot.bin file and kernel.bin file is and enter the following
/os$ lsblk // get the name of the mounted floppy image, you can identify it from the list with a disk that has 1.5 MB size
/os$ sudo dd if=./boot.bin of=/dev/loop0 // now burn the boot file to the MBR
/os$ sudo cp kernel.bin /media/floppy/ // copy the kernel file to the disk image
Después de eso, puede iniciar desde esta imagen de disquete usando una máquina virtual.
Respuesta3
Tengo una memoria USB antigua que tiene una emulación de disquete: puedes escribir una imagen de disquete en ella y la memoria será detectada como una unidad de disquete USB.