The first disk of the system will automatically be used and
a standard installation will be done. After that is done, the
system will reboot into the freshly installed system and execute
setup.
ENDTEXT
KERNEL vmlinuz
INITRD instroot
ENDTEXT
KERNEL vmlinuz
INITRD instroot
+ APPEND installer.unattended
MENU END
MENU BEGIN tools
MENU END
MENU BEGIN tools
+struct hw_disk** hw_select_first_disk(const struct hw_disk** disks) {
+ struct hw_disk** ret = hw_create_disks();
+ struct hw_disk** selected_disks = ret;
+
+ unsigned int num_disks = hw_count_disks(disks);
+ assert(num_disks > 0);
+
+ for (unsigned int i = 0; i < num_disks; i++) {
+ struct hw_disk *disk = disks[i];
+ disk->ref++;
+
+ *selected_disks++ = disk;
+ break;
+ }
+
+ // Set sentinel
+ *selected_disks = NULL;
+
+ return ret;
+}
+
static unsigned long long hw_swap_size(struct hw_destination* dest) {
unsigned long long memory = hw_memory();
static unsigned long long hw_swap_size(struct hw_destination* dest) {
unsigned long long memory = hw_memory();
void hw_free_disks(struct hw_disk** disks);
unsigned int hw_count_disks(struct hw_disk** disks);
struct hw_disk** hw_select_disks(struct hw_disk** disks, int* selection);
void hw_free_disks(struct hw_disk** disks);
unsigned int hw_count_disks(struct hw_disk** disks);
struct hw_disk** hw_select_disks(struct hw_disk** disks, int* selection);
+struct hw_disk** hw_select_first_disk(const struct hw_disk** disks);
struct hw_destination* hw_make_destination(int part_type, struct hw_disk** disks);
struct hw_destination* hw_make_destination(int part_type, struct hw_disk** disks);
snprintf(title, sizeof(title), "%s - %s", NAME, SLOGAN);
snprintf(title, sizeof(title), "%s - %s", NAME, SLOGAN);
- if (! (cmdfile = fopen("/proc/cmdline", "r")))
- {
+ if (! (cmdfile = fopen("/proc/cmdline", "r"))) {
fprintf(flog, "Couldn't open commandline: /proc/cmdline\n");
} else {
fgets(line, STRING_SIZE, cmdfile);
fprintf(flog, "Couldn't open commandline: /proc/cmdline\n");
} else {
fgets(line, STRING_SIZE, cmdfile);
// check if we have to make an unattended install
// check if we have to make an unattended install
- if (strstr (line, "unattended") != NULL) {
+ if (strstr(line, "installer.unattended") != NULL) {
+ splashWindow(title, _("Warning: Unattended installation will start in 10 seconds..."), 10);
- runcommandwithstatus("/bin/sleep 10", title, "WARNING: Unattended installation will start in 10 seconds...", NULL);
- }
// check if we have to patch for serial console
if (strstr (line, "console=ttyS0") != NULL) {
serialconsole = 1;
// check if we have to patch for serial console
if (strstr (line, "console=ttyS0") != NULL) {
serialconsole = 1;
}
langnames[NUM_LANGS] = NULL;
}
langnames[NUM_LANGS] = NULL;
- rc = newtWinMenu(_("Language selection"), _("Select the language you wish to use for the installation."),
+ rc = newtWinMenu(_("Language selection"), _("Select the language you wish to use for the installation."),
50, 5, 5, 8, langnames, &choice, _("OK"), NULL);
assert(choice <= NUM_LANGS);
50, 5, 5, 8, langnames, &choice, _("OK"), NULL);
assert(choice <= NUM_LANGS);
goto EXIT;
// exactly one disk has been found
goto EXIT;
// exactly one disk has been found
- } else if (num_disks == 1) {
- selected_disks = hw_select_disks(disks, NULL);
+ // or if we are running in unattended mode, we will select
+ // the first disk and go with that one
+ } else if ((num_disks == 1) || (unattended && num_disks >= 1)) {
+ selected_disks = hw_select_first_disk(disks);
// more than one usable disk has been found and
// the user needs to choose what to do with them
// more than one usable disk has been found and
// the user needs to choose what to do with them
+ // Don't print the auto-selected harddisk setup in
+ // unattended mode.
+ if (unattended)
+ break;
+
num_selected_disks = hw_count_disks(selected_disks);
if (num_selected_disks == 1) {
num_selected_disks = hw_count_disks(selected_disks);
if (num_selected_disks == 1) {
int lines, char *text, ...);
int runcommandwithstatus(const char *command, const char* title, const char *message, const char* output);
int runhiddencommandwithstatus(const char *command, const char* title, const char *message, const char* output);
int lines, char *text, ...);
int runcommandwithstatus(const char *command, const char* title, const char *message, const char* output);
int runhiddencommandwithstatus(const char *command, const char* title, const char *message, const char* output);
+int splashWindow(const char* title, const char* message, unsigned int timeout);
int checkformodule(const char *module);
int replace(char filename1[], char *from, char *to);
char* get_version(void);
int checkformodule(const char *module);
int replace(char filename1[], char *from, char *to);
char* get_version(void);
+int splashWindow(const char* title, const char* message, unsigned int timeout) {
+ statuswindow(60, 4, title, message);
+
+ // Wait so the user can read this message
+ sleep(timeout);
+ newtPopWindow();
+
+ return 0;
+}
+
/* This one borrowed from redhat installer. */
int runcommandwithprogress(int width, int height, const char *title, const char *command,
int lines, char *text, ...) {
/* This one borrowed from redhat installer. */
int runcommandwithprogress(int width, int height, const char *title, const char *command,
int lines, char *text, ...) {