Hi,
On most Linux systems, the /boot
directory holds the files that the system needs in order to boot. Note that this is meant quite literally - it holds purely the files needed for booting, i.e. getting from the BIOS/EFI stage to the "the kernel is loaded and I'm starting process number one to do the rest" stage. So there's not much in here ordinarily, and seldom is there any need on a Red Hat-style system for you to ever change or modify the contents of this directory manually, or to even look at it at all to be honest.
The main files you'll find in here of interest are as follows:
/boot/config*
These files contain the configuration with which the kernel version specified in their filename was built. This is handy if ever you need to re-compile or re-build the same or a similar version of kernel, as you can get the configuration options used to build that kernel from here. Unless you're compiling kernels regularly, this is a file you'll never have to touch at all.
/boot/initrd*
These files are the initial RAM disks. Once the kernel loads, it generally is configured or passed by the boot loader the name of a RAM disk to load and mount. The main purpose of the initrd
image is to hold modules and drivers that the kernel needs to initialise the rest of the system - most importantly, drivers for storage controllers and networking in particular, so that the system will be able to mount its root file system and carry on booting once the kernel startup is completed. Again, unless you are routinely building kernels or need to insert custom drivers into your kernel to get a working system, you won't need to (and shouldn't) touch these.
/boot/symvers-*
These files contain debugging symbols for the modules included with the version of the kernel specified in their filename. You might find this useful if you ever need to attach a debugger to your kernel or if a particular kernel module is having serious problems, but again for the day-to-day use of most servers for routine purposes, you'll never need to look at or touch this.
/boot/System.map*
These files contain the kernel symbol tables for the version of the kernel they're associated with. A symbol table is a list of symbols and the memory addresses that they're associated with. Again, unless you have to debug kernel panics or other similar failures, this has no day-to-day impact on your usage of the system, and can and should be left well alone.
/boot/vmlinuz-*
This is the big one (in more ways than one) - the kernel. The vmlinuz
file is the Linux kernel, the heart of the operating system. This, plus the initrd
, are the two files that your system needs more than any other to be readable and working in order to boot. Without a kernel and the RAM disk associated with that exact version of the kernel, you're probably not going to have a bootable system.
It's the boot loader configuration (usually GRUB) that tells the system which kernel and RAM disk to load, and which passes parameters to the kernel telling it key pieces of info about the system (i.e. where to find the root file system, and which process to execute to begin the system startup process).
As to how permissions problems could stop the system booting here - hard to say exactly without more info. But as a general rule of thumb: ensure that the /boot
directory or filesystem always has plenty of free space, and on a RHEL-style system never manually mess with the contents of this directory unless you know exactly what you're doing and exactly why you have to do it.
Hope this helps ! If you have any further questions let me know and I'll see what I can do.