summaryrefslogtreecommitdiff
path: root/init
AgeCommit message (Collapse)Author
2023-03-05Remove mount_fakeroot functionAaron Ball
This function was overly abstracted, as all it did was reorder arguments to call the mount function. Replaced the one call to this with the mount call. Also fixed one if statement syntax.
2023-03-05Remove clear and cat from output init ram fsAaron Ball
Both the clear and cat commands are not technically required, as they have bash builtin equivelants. This will shave off tens of kilobytes (very little unfortunately). This also changes the syntax of the parse_cmdline function to something more reasonable, also no longer using cat but using a bash builtin.
2023-03-05init:Remove cryptroot optionAaron Ball
This option existed previously to handle luks encrypted root volumes. However, recent changes allow the init process to detect at runtime encrypted root volumes that are set with the `root` option, so this option is no longer needed and effectively does nothing at this point besides break encrypted device detection when used next to `root`. It is required to only use `root` now.
2023-03-04Remove requirement for blkid and cut commandsAaron Ball
With the `/dev/disk` directory tree now filled out, we no longer need blkid and cut to determine device paths based on aliases such as partlabel or uuid. This also simplifies the code, using bash-native parameter expansion to cut substrings.
2023-03-04Copyright date update and delete one commentAaron Ball
2023-03-04Refactor to support udev block device loadingAaron Ball
Previously block device aliases did not load correctly, so the direct `/dev/nvme*` path for example was required as `/dev/disk/by-*` was not available at all for mounting by partlabel or uuid. This adds the udevadm and udevd binaries so the /dev/disk directory tree can be populated during init, allowing for block device aliases. This also does some cleanup and organization to improve the over code quality.
2023-03-04Support modular dm-cryptAaron Ball
Previously dm-crypt had to be statically compiled into the kernel, which is cumbersome, not well documented, and makes the kernel larger. This supports dm-crypt being an external module, adding rmmod and modprobe to the initramfs, and copying in the relevant kernel modules directory, stripping out graphics device support, bluetooth, sound, virtualization, and networking support modules. This also updates the copyright year.
2019-05-21init:Add support for subvol mount optionv1.1-rc8Aaron Ball
2019-03-31Add license header to init and clear unneeded whitespace in mkinitramfsAaron Ball
2019-03-31init:move screen_init further downAaron Ball
The screen_init function was dependent on the value of the QUIET variable, which previously was set after this function was called. Moving this down allows for the QUIET variable to be set before it is needed. Also removed the 'Parsing command line options' log message.
2019-03-31init:Add quiet support and better loggingAaron Ball
Previously all logs were printed, no matter what. Now we read the global variable QUIET (which is set by the presence of the kernel cmdline variable 'quiet') to determine if certain messages should be displayed. If quiet is enabled, info messages are not printed, but anything else is. If quiet is not enabled, all messages print.
2019-03-31init:Fix reboot on decrypt failureAaron Ball
Previously, we were calling `init 6` to perform a reboot on failed decryption operations. This caused the init script to call itself. Being an init script for an initramfs, it ignored runlevels when called, so this just restarted the boot process. Now we use the sysrq trigger to perform the reboot.
2019-03-31init: Update tmpfs mountsAaron Ball
2019-03-31init:Add debug shell and auto reboot on failure to decrypt rootAaron Ball
2019-03-31init:remove get_part_type functionAaron Ball
The cryptsetup utility contains a 'isLuks' command which makes this function uneeded. Updated call to this function with the cryptsetup directive.
2017-11-09init:added support for cryptroot directiveAaron Ball
The cryptroot directive allows the user to specify a new root that might appear post-decryption of the main root device. This allows users to have encrypted devices that contain a partition table with multiple partitions. Updated README to reflect these changes. Also updated it to be a bit more standard, added examples, reformatted directive descriptions, etc.
2017-11-07Add support for encrypted partition tablesAaron Ball
Previously, it was assumed that the encrypted device contained a single filesystem. Now we run a partprobe on decrypt to detect an existing partition table inside the container. Behavior with devices that just contain a single filesystem is unaffected. This adds the partprobe binary to the initramfs.
2017-04-27init:Made a bit more posix compatibleAaron Ball
There is still some distance to go to make this script almost or completely posix compliant. However, these changes will make the script a bit more portable, as this commit removes certain bash-specific functionalities. Also made a few changes to increase stability in edge cases. * Renamed "function name {...}" syntax to "name() {...}" * Changed all if statements from bash specific [[ ]] to [ ]. * Quoted conditional variables * Scoped a few function variables that were not previously
2017-04-27Added wait_dev supportAaron Ball
Previously, the device wait was hardcoded, regardless of device presence. Now we wait 10 seconds, but if the device is present early, the script can proceed before the threshold is reached. This should speed up boot time by a few seconds.
2017-02-04init:Additional breakpoints for easier debuggingAaron Ball
Added a sleep 2 before attempting to access the specified root device to allow for device settling (usb devices sometimes weren't ready yet and causes init to fail). This needs to be replaced later by a 'wait_for_dev' function. Added breakpoint to allow debugging for when the specified root device does not exist. Added a breakpoint for an init script not being detected in the destination root fs. Added breakpoint for failed switch_root. Added many more log messages.
2016-12-29Fixed interactive supportAaron Ball
Interactive was spelled wrong. Also, the bash call was relative, not absolute, which was causing kernel panics when interactive mode was requested.
2016-12-29Removed mount cleanupAaron Ball
2016-05-22Learned support for uuid and labelsAaron Ball
Now we support uuid specifications and labels through the use of blkid.
2016-05-22Added basic support for interractive modeAaron Ball
Drops the boot sequence into an interractive bash shell, just prior to mounting the new root fs (the first step where real issues may occur). This is mostly useful for debugging to see what the environment looks like, manually mount partitions, etc.
2016-05-17New documentation, one fix, and cleanupv1.1-rc1Aaron Ball
Removed unused get_bin_deps function Added function comments for all functions in mkinitramfs. Added GPLv3 LICENSE file Added GPLv3 licence header to mkinitramfs Miscellaneous other code comments. Added execute switch to mkinitramfs and init scripts
2016-01-31init:Various bugfixes and new featuresAaron Ball
Added screen_init to print /etc/msg if it exists Removed superfluous commented out code Added mount of /dev type devtmpfs and /run type tmpfs Added umount of /dev, /run, and /proc Added switch_root failure contingency code
2016-01-25More updates to init scriptv1.0Aaron Ball
Now has logging function that supports initdebug cmdline option. Renamed get_root_dev to parse_cmdline, since this function is used to parse cmdline arguments now. Added initdebug argument support to new parse_cmdline function Fixed syntax error on writing failure log message Changed to global variables. Now we have DEBUG and ROOTDEV, in lieu of local rootdev. This allows the parse_cmdline function to update variables to be used by other functions without storing all the parsing code in main.
2016-01-25Added support for dm-crypt/luks encrypted volumesAaron Ball
Also added checking for a kernel supporting dm-crypt in mkinitramfs. Warns if module is not statically compmiled in.

Generated by cgit