You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calculate-overlay/profiles/templates/3.6/3_ac_install_live/1-merge/sys-boot/grub/splash/create_hostonly

79 lines
2.5 KiB

# Calculate exec=/bin/bash ac_install_disk==off&&ac_install_unmerge==off&&pkg(sys-kernel/dracut)!=&&os_install_root_type!=livecd cl_setup!=themes||cl_splash_image_update_set==on
#!/bin/bash
# the recreating of inird is performed for binary kernel only (mark .calculate in kernel sources)
source /usr/share/grub/grub-mkconfig_lib
get_latest_kernel() {
version_find_latest /boot/vmlinuz-*
}
get_safemode_name() {
local kernel=$1
#echo ${kernel/-calculate/-SafeMode}
[[ $kernel =~ ^([^-]+-[^-]+)-(.+)$ ]] && echo "${BASH_REMATCH[1]}-SafeMode-${BASH_REMATCH[2]}" || echo ${kernel}
}
get_kernel_version() {
local kernel=$1
file -L $kernel | sed -r 's/.*version (\S+)\s+.*/\1/'
}
get_kernel_initramfs() {
local kernel=$1
echo ${kernel/vmlinuz-/initramfs-}.img
}
is_calculate_kernel() {
local kernel=$1
local kernel_version=$(get_kernel_version $kernel)
[[ -f /usr/src/linux-${kernel_version}/.calculate ]]
}
die() {
echo $@ 1>&2
exit 1
}
create_hostonly_initramfs() {
local kernel_safemode=$(get_safemode_name $kernel)
local initrd=$(get_kernel_initramfs $kernel)
local initrd_tmp=$(get_kernel_initramfs $kernel).tmp
local initrd_safemode=$(get_safemode_name $initrd)
[[ -e $kernel_safemode ]] || (rm -f $kernel_safemode;ln -s $kernel $kernel_safemode &>/dev/null) ||
die "Failed to create kernel for safemode"
if ! [[ -e $initrd_safemode ]]
then
cp $initrd $initrd_safemode &>/dev/null || die "Failed to create initramfs safemode backup"
fi
if [[ -e $initrd_safemode ]]
then
local kernel_version=$(get_kernel_version $kernel)
[[ -n $kernel_version ]] || die "Failed to detect version"
echo "Creating Host-Only initramfs ..."
#?os_install_x11_video_drv==#-os_x11_video_drv-##
dracut -H --xz -f --kver $kernel_version $initrd_tmp &>/dev/null ||
die "Failed to create Host-Only initramfs"
#os_install_x11_video_drv#
#?os_install_x11_video_drv!=#-os_x11_video_drv-##
dracut -H --xz -f --add-drivers="i915 amdgpu uvesafb radeon nouveau" --kver $kernel_version $initrd_tmp &>/dev/null ||
die "Failed to create Host-Only initramfs"
#os_install_x11_video_drv#
mv $initrd_tmp $initrd &>/dev/null || die "Failed to rename initramfs"
echo "Host-Only initramfs has been created"
fi
}
kernel=$(get_latest_kernel)
if [[ -e $kernel ]] && [[ -e $(get_kernel_initramfs $kernel) ]]
then
is_calculate_kernel $kernel && create_hostonly_initramfs $kernel
else
echo "Creating Host-Only initramfs was skipped"
fi
exit 0