Created
August 25, 2011 14:45
-
-
Save LadyNamedLaura/1170823 to your computer and use it in GitHub Desktop.
Idea for a Linux distibution
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I have been thinking a lot about making my own custom Linux distribution | |
(current working name is "BurgieOS" but this is just because of lack of inspiration) | |
BASICS | |
- User and admin focused | |
- Focus on | |
- Use new techniques (systemd, btrfs, ...) | |
- cut the (legacy) crap (compat layers are available in separate packages) | |
- Dare to be different (in a way it still works) | |
- Easy usable for both for large network installations as for local desktop/laptop use | |
(means a decent level of flexibility) | |
- Fast! (both at boot up and while running) | |
IDEAS TO ACHIEVE THIS | |
- initramfs = root | |
This means that we do not nuke and overmount the initramfs, instead | |
all other trees are mounted onto it. | |
This way we can optimize boot process by eliminating things that get done | |
twice (detecting HW etc.) | |
Moving essential stuff/binaries into initramfs will work as a kind of | |
readahead (once the initramfs is loaded most things are available from ram | |
Initramfs and boot partition work as a kind of recovery system | |
No more shell in the initrd, we launch systemd from the begining | |
- clean up root tree | |
to make the system easier to understand by non-techies and new users, | |
we could try to clean up the root of the file-system | |
(this breaks FHS unless the compat layers/symlinks are installed) | |
move /root to /home/root | |
since /root is the home directory for the root user, | |
why not move it to /home | |
create /kernel hierarchy | |
this hierarchy will contain most kernel filesystems(except for /dev maybe) | |
there should also be a symbolic link /kernel/modules to | |
/lib/modules/´uname -r´ (or since only the modules for the current kernel | |
are loaded into the initramfs put them inside this directory) | |
mount sysfs, proc, securityfs, debugfs, selinuxfs, binfmt_misc into /kernel | |
This is just an example of some filesystems that should be moved into the | |
/kernel hierarchy | |
(there could also be a place for the cgroup hierarchy at /kernel/cgroup) | |
Eventually i like the filesystem to look like this: ( ->> means mountpoint ) | |
/ | |
|-- bin | |
|-- boot ->> boot partition (since grub cant boot from btrfs, | |
| otherwise "boot" subvolume on btrfs partition) | |
|-- dev ->> devtmpfs | |
|-- etc ->> partialy on initramfs, gets overmounted by "config" subvolume | |
|-- home | |
| |-- 'user' ->> "home/'user'" subvolume (or netfs), gets mounted on login | |
| | unmounted on logout | |
| |-- public ->> "home/public" subvolume, public data, for nfs export etc. | |
| | `-- 'user' (public data of 'user', chmod 755) | |
| `-- root ->> "home/root" subvolume | |
|-- kernel | |
| |-- binfmt_misc ->> binfmt_misc | |
| |-- cgroup ->> tmpfs | |
| |-- debug ->> debugfs | |
| |-- modules | |
| |-- proc ->> proc | |
| |-- security ->> securityfs | |
| |-- selinux ->> selinuxfs | |
| `-- sys ->> sysfs | |
|-- lib | |
|-- media | |
|-- run ->> tmpfs | |
|-- sbin | |
|-- tmp ->> "temp" subvolume or tmpfs | |
|-- usr ->> "usr" subvolume or netfs | |
`-- var ->> "var" subvolume | |
/opt and /srv are supported but not used by default | |
(activate them trough some kind of system control utility) | |
we went from 19 to 13 directories in / by default! no more pollution!! | |
(this is not finished, there are still directories i want gone somehow) | |
- keep all packages inside /usr | |
the package-manager and mkinitramfs should take care of the rest. | |
for remote /usr there will be a file /usr/initramfs.stamp with a timestamp | |
of the last update affecting the initramfs, if it is found tat this is | |
later than the creation date of the initramfs, the initramfs is rebuild. | |
- save default config files in /usr/etc | |
software should auto detect whether a /etc version is available | |
and give that one priority | |
(like systemd does with /lib/systemd and /etc/systemd) | |
- use configuration files as mentioned by Lennart at: | |
http://0pointer.de/blog/projects/the-new-configuration-files.html | |
http://0pointer.de/blog/projects/on-etc-sysinit.html | |
- updates happen on a snapshot of /usr which then replaces the real /usr, | |
the old ones are kept a bit afterward to serve as a backup | |
(something like "last working state") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment