:: Re: [Dng] Linux boot documentation
Top Page
Delete this message
Reply to this message
Author: Didier Kryn
Date:  
To: dng
Subject: Re: [Dng] Linux boot documentation

Le 04/05/2015 16:48, Steve Litt a écrit :
> Hi all,
>
> I just documented the boot process, from Grub through init.
>
> See http://troubleshooters.com/linux/diy/howboot.htm
>
> Hope you like it.
>
> SteveT
>


     Dear Steve, I have a few comments, more or less important to 
understand how things work:


     It is pretty seldom, I think, that /bin and /sbin are symbolic 
links to /usr/bin and /usr/sbin. I have never seen it in a major distro 
up to now.


     The root= argument to kernel is usefull also when using an 
initramfs. In this case the the argument is ignored by the kernel but it 
is available to the initramfs init program. Note that custom initramfs 
may ignore it and have other ways to find the root partition.


     The initramfs init does a few things before it pivot-root and 
passes control to the ondisk init. It mounts /proc, /sys, /dev, creates 
device files, mounts the disk root partition, then mounts proc, sys and 
dev on this partition. On Debian, it mounts /run on tmpfs. When the 
ondisk init starts, there are quite a few things ready.


     Processes are created with a process-id which is incremented for 
every new process, until it reaches the maximum and restarts from the 
begining. If init has pid 1, it is because it is just the first one 
created. There is no other process started by the kernel before init. If 
the second init (after pivot-root) also has pid 1, it is because it is 
just the same process, running a different program. I'm not sure what 
happens if init crashes after other processes have been started, wether 
the kernel panics or other processes continue without init - not a very 
good situation.


     The initramfs is a live OS and you can make it a friendly debugging 
environment to help understand what is going on. As Laurent mentionned 
some time ago, it is not even necessary to pivot-root; you could keep 
/bin and /sbin  in ramfs and just mount the rest. Of course upgrading 
the files in /bin and /sbin would involve re-creating the whole initramfs.


     A ramfs or tmpfs is not exactly like the old initrd. The Linux VFS 
keeps data in buffers and filesystems periodically swap the data in 
these buffers with hardware backup stores, that is disks. A ramdisk is 
when the backup store is in some fixed location in ram. The ramfs is a 
filesystem simply *without* a backing store - very nice idea which 
emerged around 10 years ago I think, which shows that simplicity is not 
given, it is an achievement. tmpfs is like ramfs, except it can expand 
to the swapping area. I think that ramfs and tmpfs have been completely 
merged a few years ago.


     Hope this helps and there are no errors :-)


     Didier