Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalwareutils.git;a=commitdiff;h=0db06c5b093cd331d4cc0d8e23f9f236b1ce8dbb
commit 0db06c5b093cd331d4cc0d8e23f9f236b1ce8dbb Author: James Buren <r...@frugalware.org> Date: Fri Sep 16 05:12:45 2011 -0500 grubconfig: add support for writing our initrd diff --git a/libfwgrubconfig/libfwgrubconfig.c b/libfwgrubconfig/libfwgrubconfig.c index e80a3bb..2263ae6 100644 --- a/libfwgrubconfig/libfwgrubconfig.c +++ b/libfwgrubconfig/libfwgrubconfig.c @@ -50,6 +50,7 @@ typedef struct mdu_version_s { struct fwgrub_entry_t { FILE *fp; char *title; + char *initrd; char *grubbootdev; char *bootstr; char *kernel; @@ -462,18 +463,22 @@ static int write_entry(struct fwgrub_entry_t *entry) if(entry->opts) { if(entry->rootdev && strlen(entry->rootdev)) - fprintf(entry->fp, "\tkernel %s%s%s root=%s %s\n\n", + fprintf(entry->fp, "\tkernel %s%s%s root=%s %s\n", entry->grubbootdev, entry->bootstr, entry->kernel, entry->rootdev, entry->opts); else // probably rootdev is already included in ->opts - fprintf(entry->fp, "\tkernel %s%s%s %s\n\n", + fprintf(entry->fp, "\tkernel %s%s%s %s\n", entry->grubbootdev, entry->bootstr, entry->kernel, entry->opts); } else { - fprintf(entry->fp, "\tkernel %s%s%s\n\n", + fprintf(entry->fp, "\tkernel %s%s%s\n", entry->grubbootdev, entry->bootstr, entry->kernel); } + if(entry->initrd) + fprintf(entry->fp,"\tinitrd %s%s%s\n", + entry->grubbootdev, entry->bootstr, entry->initrd); + putc('\n',entry->fp); } else if(!strcmp(entry->type, "chain")) { @@ -513,6 +518,8 @@ static void entry_free(struct fwgrub_entry_t *entry) free(entry->bootstr); if(entry->kernel) free(entry->kernel); + if(entry->initrd) + free(entry->initrd); if(entry->rootdev) free(entry->rootdev); if(entry->opts) @@ -617,6 +624,7 @@ static int os_prober(FILE *fp) break; *ptr='\0'; // initrd, maybe useful later + entry->initrd = NULL; while(*++ptr) if(*ptr==':') break; @@ -688,6 +696,7 @@ void fwgrub_create_menu(FILE *fp) if(!stat(path, &buf)) fprintf(fp, "gfxmenu %s%s/grub/message\n\n", entry.grubbootdev, entry.bootstr); entry.kernel = strdup("/vmlinuz"); + entry.initrd = strdup("/initrd.img.xz"); swapdev = get_swap_dev(); if (swapdev) entry.opts = g_strdup_printf("ro quiet splash resume=%s", swapdev); @@ -705,6 +714,8 @@ void fwgrub_create_menu(FILE *fp) entry.rootdev=NULL; free(entry.opts); entry.opts=NULL; + free(entry.initrd); + entry.initrd=NULL; write_entry(&entry); } entry_free(&entry); _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git