/* * hook called after upgrade() or install() has finished setting * up the target disk but immediately before the user is given the * ``disks are now set up'' message. * * On pmax, we take this opportuinty to update the bootblocks. */ int md_post_newfs(void) { char *bootxx; int error; /* XXX boot blocks ... */ if (target_already_root()) { /* /usr is empty and we must already have bootblocks? */ return 0; } msg_display(MSG_dobootblks, diskdev); cp_to_target("/usr/mdec/boot.pmax", "/boot.pmax"); bootxx = bootxx_name(); if (bootxx != NULL) { error = run_program(RUN_DISPLAY | RUN_NO_CLEAR, "/usr/sbin/installboot /dev/r%sc %s", diskdev, bootxx); free(bootxx); } else error = -1; if (error != 0) process_menu(MENU_ok, deconst("Warning: disk is probably not bootable")); return 0; }
/* * hook called after upgrade() or install() has finished setting * up the target disk but immediately before the user is given the * ``disks are now set up'' message. * * On mipsco, we take this opportuinty to update the bootblocks. */ int md_post_newfs(void) { /* XXX boot blocks ... */ if (target_already_root()) { /* /usr is empty and we must already have bootblocks?*/ return 0; } printf(msg_string(MSG_dobootblks), diskdev); cp_to_target("/usr/mdec/boot", "/boot"); if (run_program(RUN_DISPLAY | RUN_NO_CLEAR, "/usr/mdec/installboot /dev/r%sc /usr/mdec/bootxx_ffs", diskdev)) process_menu(MENU_ok, deconst("Warning: disk is probably not bootable")); return 0; }
static void get_rootsh(void) { static char *buf = NULL; if (buf != NULL) free(buf); if (target_already_root()) collect(T_OUTPUT, &buf, "/usr/bin/awk -F: '$1==\"root\" { print $NF; exit }'" " /etc/passwd"); else collect(T_OUTPUT, &buf, "chroot %s /usr/bin/awk -F: '$1==\"root\" { print $NF; exit }'" " /etc/passwd",target_prefix()); config_list[CONFIGOPT_ROOTSH].setting = (const char *)buf; }
static int check_root_password(void) { char *buf; int rval; if (target_already_root()) collect(T_OUTPUT, &buf, "getent passwd root | cut -d: -f2"); else collect(T_OUTPUT, &buf, "chroot %s getent passwd root | " "chroot %s cut -d: -f2", target_prefix(), target_prefix()); if (logfp) fprintf(logfp,"buf %s strlen(buf) %zu\n", buf, strlen(buf)); if (strlen(buf) <= 1) /* newline */ rval = 0; else rval = 1; free(buf); return rval; }