some changes to the build process

This commit is contained in:
notsomeidiot123 2025-08-24 20:11:51 -04:00
parent a892bbdebc
commit 9fe92009e5
3 changed files with 21 additions and 12 deletions

View File

@ -5,7 +5,7 @@ cd src/kernel/
gcc kmain.c $CFLAGS -o ../../bin/kernel/kmain.o gcc kmain.c $CFLAGS -o ../../bin/kernel/kmain.o
for d in ./*/; do for d in ./*/; do
if [ "$d" != "./obj/" ]; then if [ "$d" != "./obj/" ]; then
echo -e "\033[1;32mCompiling files in $d\033[0m" echo "\033[1;32mCompiling files in $d\033[0m"
for f in $d*.c; do for f in $d*.c; do
echo -e "\033[1;36mfile: $f\033[0m" echo -e "\033[1;36mfile: $f\033[0m"
SUF=".c" SUF=".c"

View File

@ -10,25 +10,34 @@ OBJS := $(patsubst src/kernel/%.c, bin/kernel/%.o, $(SRCS))
all: bootloader tools kernel all: bootloader tools kernel
cp bin/bootloader.bin image.bin cp bin/bootloader.bin image.bin
qemu-img resize -f raw image.bin 512M qemu-img resize -f raw image.bin 512M
./diskwrite -v -l idm.elf ifsm.elf kernel.elf -o image.bin ./diskwrite idm.elf ifsm.elf kernel.elf -o image.bin
sudo mount image.bin mount
sudo mkdir mount/mod # for kernel modules
sudo mkdir mount/bin # for binary executables
sudo mkdir mount/sys # for system files
# ./diskwrite -v -o image.bin # ./diskwrite -v -o image.bin
# ./diskwrite -v -l kernel.elf idm.elf -o image.bin # ./diskwrite -v -l kernel.elf idm.elf -o image.bin
qemu-system-i386 -hda image.bin --no-reboot --no-shutdown -m 32m -smp 2 -serial mon:stdio -D intlog.txt -d int qemu-system-i386 -hda image.bin --no-reboot --no-shutdown -m 32m -smp 2 -serial mon:stdio -D intlog.txt -d int
sudo umount mount
tools: tools:
$(CC) tools/diskwrite.c -o diskwrite $(CC) tools/diskwrite.c -o diskwrite
mount: bootloader tools kernel
cp bin/bootloader.bin image.bin
qemu-img resize -f raw image.bin 512M
./diskwrite -l idm.elf ifsm.elf kernel.elf -o image.bin
sudo mount image.bin mount
sudo mkdir mount/mod
sudo mkdir mount/bin
sudo mkdir mount/sys
@echo "\e[31mrun 'sudo umount mount' to unmount\e[0m"
bootloader: bootloader:
$(AS) src/bootloader/main.s $(BL_ASFLAGS) -o bin/bootloader.bin $(AS) src/bootloader/main.s $(BL_ASFLAGS) -o bin/bootloader.bin
run: run:
qemu-system-i386 -hda image.bin --no-reboot --no-shutdown -m 32m -smp 2 -serial mon:stdio -D intlog.txt -d int qemu-system-i386 -hda image.bin --no-reboot --no-shutdown -m 32m -smp 2 -serial mon:stdio -D intlog.txt -d int
test: bootloader tools kernel
cp bin/bootloader.bin image.bin
qemu-img resize -f raw image.bin 512M
./diskwrite -v -o image.bin
fsck.fat image.bin
sudo cp kernel.elf test/kernel.elf
make run
# kernel: $(OBJS) # kernel: $(OBJS)
kernel: kernel:
nasm src/kernel/entry.s -o bin/kernel/entry.o -f elf32 nasm src/kernel/entry.s -o bin/kernel/entry.o -f elf32

View File

@ -151,7 +151,7 @@ int write_file(fat_info *info, file_t *file, buffer_t buffer, size_t size, FILE
uint8_t *new_buffer = calloc(1, clusters * (info->bpb.bytes_per_sector * info->bpb.sectors_per_cluster )); uint8_t *new_buffer = calloc(1, clusters * (info->bpb.bytes_per_sector * info->bpb.sectors_per_cluster ));
memcpy(new_buffer, buffer, size); memcpy(new_buffer, buffer, size);
uint32_t cluster = first_cluster; uint32_t cluster = first_cluster;
printf("start: %d count: %d\n", cluster, clusters); // printf("start: %d count: %d\n", cluster, clusters);
// return -1; // return -1;
for(uint32_t i = 0; i < clusters; i++){ for(uint32_t i = 0; i < clusters; i++){
write_sector(disk, info->bpb.reserved_sectors + info->file_table_size_sectors + info->bpb.partition_start + ((cluster - 2) * info->bpb.sectors_per_cluster), info->bpb.sectors_per_cluster, new_buffer + i * info->bpb.sectors_per_cluster * info->bpb.bytes_per_sector); write_sector(disk, info->bpb.reserved_sectors + info->file_table_size_sectors + info->bpb.partition_start + ((cluster - 2) * info->bpb.sectors_per_cluster), info->bpb.sectors_per_cluster, new_buffer + i * info->bpb.sectors_per_cluster * info->bpb.bytes_per_sector);
@ -176,7 +176,7 @@ int create_file(char *path, fat_info *info, FILE *file, FILE *disk){
while(root_files[index].filename[0]){ while(root_files[index].filename[0]){
index++; index++;
} }
printf("%s\n", root_files[index].filename); // printf("%s\n", root_files[index].filename);
verbose && printf("Creating file at index: %d\n", index); verbose && printf("Creating file at index: %d\n", index);
char *ext = strchr(path, '.'); char *ext = strchr(path, '.');
char *tmpptr = path; char *tmpptr = path;
@ -280,7 +280,7 @@ int main(int argc, char **argv){
// return 0; // return 0;
// } // }
for(int i = 0; i < filec; i++){ for(int i = 0; i < filec; i++){
printf("\033[1;34mWriting file %d in list: %s\033[0m\n", i, files[i]); // printf("\033[1;34mWriting file %d in list: %s\033[0m\n", i, files[i]);
FILE *f = fopen(files[i], "r"); FILE *f = fopen(files[i], "r");
if(!f){ if(!f){
printf("Error Opening file\n"); printf("Error Opening file\n");