# "mkinitramfs" command # # Copyright (C) 2016 Patrick "P. J." McDermott # # This file is part of the ProteanOS Development Kit. # # The ProteanOS Development Kit is free software: you can redistribute # it and/or modify it under the terms of the GNU General Public License # as published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # The ProteanOS Development Kit is distributed in the hope that it # will be useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with the ProteanOS Development Kit. If not, see # . cmd_mkinitramfs_optstring='l:i:' cmd_mkinitramfs_main() { local linux_output= local initramfs_output= local root= local dev= if ! get_options "${@}"; then print_cmd_usage 'mkinitramfs' >&2 exit 1 fi shift $(($OPTIND - 1)) if [ "x${cmd_mkinitramfs_opt_l-}" = 'x' ]; then print_cmd_usage 'mkinitramfs' >&2 exit 1 fi if [ "x${cmd_mkinitramfs_opt_i-}" = 'x' ]; then print_cmd_usage 'mkinitramfs' >&2 exit 1 fi if [ ${#} -lt 1 ]; then print_cmd_usage 'mkinitramfs' >&2 exit 1 fi linux_output="${cmd_mkinitramfs_opt_l}" initramfs_output="${cmd_mkinitramfs_opt_i}" root="${1}" shift 1 dev='' if is_block "${root}"; then dev="${root}" root="$(block_mount "${dev}")" fi profile_detect "${root}" arch="$(cat "${root}/etc/proteanos_arch")" plat="$(cat "${root}/etc/proteanos_plat")" if ! img="$(profile_find_kernel "${root}" "${arch}" "${plat}")"; then [ "x${dev}" != 'x' ] && block_umount "${root}" error 2 "$(get_msg 'cmd_mkinitramfs_kernel_not_found')" fi cp -p "${root}/${img}" "${linux_output}" (cd "${root}" && profile_make_initramfs "${arch}" "${plat}") \ >"${initramfs_output}" [ "x${dev}" != 'x' ] && block_umount "${root}" } cmd_mkinitramfs_register() { register_cmd 'mkinitramfs' } __init cmd_mkinitramfs_register