Automatically create the EXT2 filesystem without sudo.

This commit is contained in:
Enrico Fraccaroli
2021-12-17 09:40:15 +01:00
parent 11f485cf77
commit 151404d0d3
2 changed files with 17 additions and 19 deletions
+15 -17
View File
@@ -76,24 +76,23 @@ endif()
add_subdirectory(programs)
add_subdirectory(programs/tests)
add_subdirectory(mentos)
add_subdirectory(initscp)
add_subdirectory(libc)
add_subdirectory(doc/doxygen)
# =============================================================================
# Target to generate the initrd filesystem.
# Target to generate the EXT2 filesystem.
add_custom_target(
initrd
COMMAND echo "---------------------------------------------"
COMMAND echo "Initializing 'initrd'..."
COMMAND echo "---------------------------------------------"
COMMAND initfscp -s ${CMAKE_SOURCE_DIR}/files -t ${CMAKE_BINARY_DIR}/initrd -m /dev
COMMAND echo "---------------------------------------------"
COMMAND echo "Done!"
COMMAND echo "---------------------------------------------"
DEPENDS initfscp
DEPENDS all_programs all_tests)
rootfs.img
COMMAND echo "---------------------------------------------"
COMMAND echo "Creating EXT2 filesystem..."
COMMAND echo "---------------------------------------------"
COMMAND mke2fs -L 'rootfs' -N 0 -d ${CMAKE_SOURCE_DIR}/files -m 5 -r 1 -t ext2 -v -F rootfs.img 32M
COMMAND echo "---------------------------------------------"
COMMAND echo "Done!"
COMMAND echo "---------------------------------------------"
DEPENDS all_programs all_tests
)
# =============================================================================
# Update GDB symbol file.
add_custom_target(
@@ -140,12 +139,11 @@ set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -vga std)
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -m ${MEMORY_SIZE})
set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -drive file=rootfs.img,format=raw)
set(EMULATOR_KERNEL -kernel mentos/kernel-bootloader.bin)
set(EMULATOR_FS -initrd initrd)
add_custom_target(
qemu
COMMAND ${EMULATOR} ${EMULATOR_FLAGS} ${EMULATOR_KERNEL} ${EMULATOR_FS}
DEPENDS kernel-bootloader.bin initrd all_programs all_tests libc)
DEPENDS kernel-bootloader.bin rootfs.img all_programs all_tests libc)
# =============================================================================
# Builds the code and runs qemu with the built Os.
@@ -158,6 +156,6 @@ add_custom_target(
COMMAND echo "Now, QEMU has loaded the kernel, and it is waiting that you remotely connect to it."
COMMAND echo "To start debugging, open a new shell in THIS same folder, and just type \"gdb\"!"
COMMAND echo "\n\n"
DEPENDS gdb_file kernel-bootloader.bin initrd)
DEPENDS gdb_file kernel-bootloader.bin rootfs.img)
add_custom_target(all-execs-clion-embedded DEPENDS gdb_file_clion_embedded kernel-bootloader.bin initrd)
add_custom_target(all-execs-clion-embedded DEPENDS gdb_file_clion_embedded kernel-bootloader.bin rootfs.img)
+2 -2
View File
@@ -11,7 +11,7 @@
/// Change the header.
#define __DEBUG_HEADER__ "[ATA ]"
/// Defines the debug level.
//#define __DEBUG_LEVEL__ 100
#define __DEBUG_LEVEL__ 100
#include "descriptor_tables/isr.h"
#include "hardware/pic8259.h"
@@ -612,7 +612,7 @@ static void ata_device_read_sector(ata_device_t *dev, uint32_t lba, uint8_t *buf
if ((dev->type != ata_dev_type_pata) && (dev->type != ata_dev_type_sata)) {
return;
}
pr_debug("ata_device_read_sector(dev: %p, lba: %d, buff: %p)\n", dev, lba, buffer);
//pr_debug("ata_device_read_sector(dev: %p, lba: %d, buff: %p)\n", dev, lba, buffer);
spinlock_lock(&ata_lock);
ata_wait(dev, 0);