Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:wenbowang
grub
0003-Allow-passing-multiple-image-files-to-the-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0003-Allow-passing-multiple-image-files-to-the-initrd-com.patch of Package grub
From 4d0a7b6087a228c60cd85d9360bb47f62773fefd Mon Sep 17 00:00:00 2001 From: Jeff Layton <jlayton@redhat.com> Date: Sun, 11 Jan 2009 11:56:35 +0100 Subject: [PATCH] Allow passing multiple image files to the initrd command This patch allows you to pass multiple image files to the kernel by adding more than one filename to the initrd parameter. i.e.: initrd /initramfs-image1.gz /initramfs-image2.gz Bug Report: https://bugzilla.redhat.com/show_bug.cgi?id=179127 --- stage2/boot.c | 30 +++++++++++++++++++----------- 1 files changed, 19 insertions(+), 11 deletions(-) diff --git a/stage2/boot.c b/stage2/boot.c index ec25acf..eee8bb1 100644 --- a/stage2/boot.c +++ b/stage2/boot.c @@ -814,7 +814,8 @@ load_initrd (char *initrd) #endif return grub_load_initrd (initrd); #else - int len; + int len, next_addr; + char *singleimage, *pos; unsigned long moveto; unsigned long max_addr; struct linux_kernel_header *lh @@ -823,16 +824,24 @@ load_initrd (char *initrd) #ifndef NO_DECOMPRESSION no_decompression = 1; #endif - - if (! grub_open (initrd)) - goto fail; + len = 0; + next_addr = cur_addr; - len = grub_read ((char *) cur_addr, -1); - if (! len) - { - grub_close (); - goto fail; - } + /* loop over all initrd images and concatenate them in memory */ + singleimage = strtok_r(initrd," \t",&pos); + while (singleimage) { + if (! grub_open (singleimage)) + continue; + + len += grub_read ((char *) next_addr, -1); + grub_close (); + + next_addr = cur_addr + len; + singleimage = strtok_r(NULL," \t",&pos); + } + + if (!len) + goto fail; if (linux_mem_size) moveto = linux_mem_size; @@ -862,7 +871,6 @@ load_initrd (char *initrd) lh->ramdisk_image = RAW_ADDR (moveto); lh->ramdisk_size = len; - grub_close (); fail: -- 1.5.5.6
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor