continue messing with fat32

This commit is contained in:
2025-03-24 23:07:08 +03:00
parent bb5d94bb0c
commit cb9b864933
5 changed files with 19 additions and 18 deletions
+7 -3
View File
@@ -19,15 +19,19 @@ OUTPUT = myos.bin
all: $(OUTPUT)
create-image:
#sudo umount /mnt
#sudo losetup -D
cp myos.bin grubshit/boot/
#grub-mkrescue -o boot.iso grubshit
dd if=/dev/zero of=boot.iso bs=1M count=256
fdisk boot.iso
parted boot.iso --script mklabel msdos
parted boot.iso --script mkpart primary fat32 1MiB 100%
#sudo mkdosfs -F 32 -I boot.iso
#parted boot.iso mklabel msdos mkpart primary ext4 2048s 100% set 1 boot on
sudo losetup /dev/loop0 boot.iso
sudo losetup /dev/loop1 boot.iso -o 1048576
#sudo mkdosfs -F32 -f 2 /dev/loop1
sudo mkfs.vfat -F 32 -f 2 /dev/loop1
sudo mkdosfs -F32 -f 2 /dev/loop1
#sudo mkfs.vfat -F 32 -f 2 /dev/loop1
sudo mount /dev/loop1 /mnt
sudo grub-install --root-directory=/mnt --no-floppy --modules="normal part_msdos ext2 multiboot biosdisk" /dev/loop0 #there was biosdev also
sudo cp -r grubshit/boot/ /mnt/
+1
View File
@@ -0,0 +1 @@
KATYA_KRUTAYA
-1
View File
@@ -163,7 +163,6 @@ void ata_poll()
//x86 directions section
bool ata_read(uint8_t *buffer, uint32_t lba)
{
printf("ata_read: 0x%X\n", lba);
outb(0x1F6, 0xE0 | ((lba >> 24) & 0x0F));//E0 is for master, F0 is for slave
//outb(0x1F1, 0x00);//TODO: this is probably ignored so could be removed maybe?
outb(0x1F2, 1);//1 is sector count, how many sectors are we reading
-6
View File
@@ -1006,14 +1006,11 @@ static int follow_path(dir_t* dir, const char** path)
{
str++;
len = subpath_len(str);
printf("len: %X\n", len);
if (len == 0)
return FAT_ERR_PATH;
printf("AYE\n");
fat_t* fat = find_fat_volume(str, len);
if (!fat)
return FAT_ERR_PATH;
printf("HEH\n");
str += len;
dir->fat = fat;
@@ -1022,14 +1019,11 @@ static int follow_path(dir_t* dir, const char** path)
dir->sect = fat->root_sect;
dir->idx = 0;
}
printf("HJUY!\n");
fat_t* fat = dir->fat;
if (!fat)
return FAT_ERR_PARAM;
printf("EBALO\n");
dir_rewind(fat, dir);
for (;;)
+11 -8
View File
@@ -35,6 +35,7 @@ static int cat(const char* path)
return cnt;
printf("%.*s\n", cnt, buf);
printf("%s\n", buf);
if (cnt < 512)
break;
}
@@ -47,16 +48,12 @@ static int ls(const char* path)
dir_t dir;
dir_info_t info;
printf("\nListing items in %s:\n\n", path);
int err = fat_opendir(&dir, path);
printf("opening %s\n", path);
if (err)
return err;
for (;;)
{
printf("reading dir...\n");
err = fat_readdir(&dir, &info);
if (err == FAT_ERR_EOF)
@@ -64,7 +61,7 @@ static int ls(const char* path)
if (err)
return err;
printf("%X %s %d %d:%d %s%c\n",
printf("%X %s %x %x:%x %x %s%c\n",
info.size, months[info.modified.month], info.modified.day,
info.modified.hour, info.modified.min,
info.namelen, info.name, info.attr & FAT_ATTR_DIR ? '/' : ' ');
@@ -78,17 +75,22 @@ static int ls(const char* path)
void file_fuckery()
{
int err;
err = fat_mount(&ops, 0, &g_fat, "/");
err = fat_mount(&ops, 0, &g_fat, "ebalo");
if(err)
printf("KATYAKATYAKATYAKATYAKATYA: %X\n", err);
printf("%X\n", FAT_ERR_NOFAT);
printf("%X\n", err);
err = ls(".");
err = ls("/ebalo");
err = cat("/ebalo/boot/grub/grub.cfg");
err = fat_mkdir("/ebalo/pizdaa");
err = ls("/ebalo");
fat_umount(&g_fat);
//err = fat_fclose(&file);
if(err)
printf("ERROR! %X\n", err);
}
void apply_pic_masks()
@@ -118,6 +120,7 @@ void kmain()
disk_info info;
get_disk_info(&info);
printf("CYL HEAD SECT: %X %X %X\n", info.cylinders, info.heads, info.sectors);
file_fuckery();
while(1)
{