# "installer-pc" command # # Copyright (C) 2014 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 # . use getopt use profile use block use install use session cmd_installer_pc_optstring='a:p:m:' cmd_installer_pc_main() { local suite= local dev= local profile= local root= local b4= local b3= local b2= local b1= if ! get_options "${@}"; then print_cmd_usage 'installer-pc' >&2 exit 1 fi shift $(($OPTIND - 1)) if [ ${#} -ne 2 ]; then print_cmd_usage 'installer-pc' >&2 exit 1 fi suite="${1}" dev="${2}" check_block "${dev}" if [ "x${suite%%:*}" != "x${suite}" ]; then profile="${suite%%:*}" suite="${suite#*:}" else profile='proteanos' fi profile_set "${profile}" suite="$(profile_normalize_suite "${suite}")" cmd_installer_pc_make_partition_and_fs "${dev}" root="$(block_mount "${dev}1")" install_system "${cmd_installer_pc_opt_m-}" "${suite}" \ "${cmd_installer_pc_opt_a-}" "${cmd_installer_pc_opt_p-}" \ "${root}" false if [ -f "${root}/sbin/lilo" ]; then read b4 b3 b2 b1 <<-EOF $(od -An -tx1 -v -j 440 -N 4 "${dev}") EOF # This ln command won't be needed once lilo 24.1-1 is uploaded. ln "${root}/boot/vmlinuz" "${root}/boot/vmlinuz.old" session_begin "${root}" . : false session_exec install-lilo \ "${dev}" "PARTUUID=${b1}${b2}${b3}${b4}-01" session_end fi block_umount "${root}" } cmd_installer_pc_make_partition_and_fs() { local dev="${1}" dd if=/dev/zero of="${dev}" bs=512 count=1 printf 'n\np\n1\n\n\nt\n83\na\n1\nw\n' | fdisk "${dev}" mke2fs -t ext4 "${dev}1" }