You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/manpage.md
+4
Original file line number
Diff line number
Diff line change
@@ -52,6 +52,8 @@ Booster advantages:
52
52
53
53
*`modules_force_load` list of module names that are forcibly loaded during the boot process before switching into user-space. Any module in this list automatically added to the image so there is no need to duplicate it at `modules` property.
54
54
55
+
*`append_all_modaliases` is a boolean flag that instructs booster to add all hosts's module aliases to the booster image. This flag is useful for debugging boot timeout issues when some important modules are missed from the image. Setting the flag to `true` will help to print module names for aliases that were requested by kernel but missed in the image.
56
+
55
57
*`compression` is a flag that specifies compression for the output initramfs file. Currently supported algorithms are "zstd", "gzip", "xz", "lz4", "none". If no option specified then "zstd" is used as a default compression.
56
58
57
59
*`mount_timeout` timeout for waiting for the root filesystem to appear. The field format is a decimal number and then unit number. Valid units are "s", "m", "h". If no value specified then default timeout (3 minutes) is used. To disable the timeout completely specify "0s".
@@ -204,6 +206,8 @@ Regenerate the initramfs and reboot. Once inside busybox, get the logs and send
204
206
205
207
The logs will be in `/srv/atftp` on the server.
206
208
209
+
### Boot timeout
210
+
If you got `booster: Timeout waiting for root filesystem` error please add `append_all_modaliases` config flag and rebuild the image. With this flag you'll get a list of modules that were requested by the kernel but absent in the booster image. Some of these modules might be required to boot your system.
207
211
208
212
## EXAMPLES
209
213
Create an initramfs file specific for the current kernel/host. The output file is booster.img:
MountTimeoutstring`yaml:"mount_timeout,omitempty"`// timeout for waiting for the rootfs mounted
32
-
ExtraFilesstring`yaml:"extra_files,omitempty"`// comma-separated list of files to add to image
33
-
StripBinariesbool`yaml:"strip,omitempty"`// if strip symbols from the binaries, shared libraries and kernel modules
34
-
EnableVirtualConsolebool`yaml:"vconsole,omitempty"`// configure virtual console at boot time using config from https://www.freedesktop.org/software/systemd/man/vconsole.conf.html
MountTimeoutstring`yaml:"mount_timeout,omitempty"`// timeout for waiting for the rootfs mounted
33
+
ExtraFilesstring`yaml:"extra_files,omitempty"`// comma-separated list of files to add to image
34
+
StripBinariesbool`yaml:"strip,omitempty"`// if strip symbols from the binaries, shared libraries and kernel modules
35
+
EnableVirtualConsolebool`yaml:"vconsole,omitempty"`// configure virtual console at boot time using config from https://www.freedesktop.org/software/systemd/man/vconsole.conf.html
returnfmt.Errorf("Timeout waiting for root filesystem")
863
+
returnerrRootMountTimeout
862
864
}
863
865
} else {
864
866
// wait for mount forever
@@ -991,6 +993,22 @@ func reboot() {
991
993
_=unix.Reboot(unix.LINUX_REBOOT_CMD_RESTART)
992
994
}
993
995
996
+
funcprintMissingModules() {
997
+
missingModulesMutex.Lock()
998
+
defermissingModulesMutex.Unlock()
999
+
1000
+
iflen(missingModules) ==0 {
1001
+
return
1002
+
}
1003
+
1004
+
mods:=make([]string, 0, len(missingModules))
1005
+
fork:=rangemissingModules {
1006
+
mods=append(mods, k)
1007
+
}
1008
+
1009
+
warning("Following modules were requested by kernel but not present in the image: [%s]. Please check the list and see if any of the modules required to detect your root filesystem.", strings.Join(mods, " "))
1010
+
}
1011
+
994
1012
funcmain() {
995
1013
readStartTime()
996
1014
@@ -1002,6 +1020,10 @@ func main() {
1002
1020
iferr:=boost(); err!=nil {
1003
1021
// if it does then it indicates some problem
1004
1022
severe("%v", err)
1023
+
iferrors.Is(err, errRootMountTimeout) {
1024
+
// if we fail to detect the root filesystem maybe we are missing some kernel modules needed for storage devices?
0 commit comments