I finally did it. I completely changed the directory structure of the project.
Changing the directory structure was very easy. It was just a matter of copying and pasting the files into the correct directory. The hard part was making the structure effective. In constructing this structure, I tried separating the parts of the kernel into three parts: kernel core, architecture-dependent, and device drivers. For architecture-dependent codes, there's the folder "arch." The folder contains the platform-dependent sources of various architectures. (For now, there's only one architecture..) Determining what architecture to choose and compile with is done by modifying the makefile variable. You change the ARCH variable in the global_variables.mk file.
global_variables.mk
Now, the problem here is the device driver. How should I make kernel drivers? Should I make them integrated into the kernel or separated?
Researching the Linux kernel for more information, I discovered that Linux contains all the drivers in the initramfs image. It turns out that those drivers were not embedded deeply in the Linux kernel; it was a separate file stored in the RAM image! (Linux is just so amazing.. ) I should also design the device driver system similarly to Linux. Should I also make a disk image that contains all the drivers and necessary system files? I think I should! (But with very simplicity and conciseness..... I hope)
(This fantastic source immensely helped me understand the purpose of initfs)
No more "integrated drivers" shenanigans now.. I should make file system drivers presently for making my version of initramfs!