init/initramfs: Add dump_initrd command line option
Add a dump_initrd option to allow dumping /initrd.image after successful unpack. Require BLK_DEV_RAM=y. Change-Id: I77a41867afa7b4a51604a5153792a49efbab6189 Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
This commit is contained in:
parent
76897edeb8
commit
e0302dc306
1 changed files with 17 additions and 1 deletions
|
|
@ -513,6 +513,17 @@ static int __init retain_initrd_param(char *str)
|
|||
}
|
||||
__setup("retain_initrd", retain_initrd_param);
|
||||
|
||||
static int __initdata do_dump_initrd;
|
||||
|
||||
static int __init dump_initrd_param(char *str)
|
||||
{
|
||||
if (*str)
|
||||
return 0;
|
||||
do_dump_initrd = 1;
|
||||
return 1;
|
||||
}
|
||||
__setup("dump_initrd", dump_initrd_param);
|
||||
|
||||
extern char __initramfs_start[];
|
||||
extern unsigned long __initramfs_size;
|
||||
#include <linux/initrd.h>
|
||||
|
|
@ -612,14 +623,19 @@ static int __init populate_rootfs(void)
|
|||
printk(KERN_INFO "Trying to unpack rootfs image as initramfs...\n");
|
||||
err = unpack_to_rootfs((char *)initrd_start,
|
||||
initrd_end - initrd_start);
|
||||
if (!err)
|
||||
if (!err) {
|
||||
if (do_dump_initrd)
|
||||
goto dump;
|
||||
|
||||
goto done;
|
||||
}
|
||||
|
||||
clean_rootfs();
|
||||
unpack_to_rootfs(__initramfs_start, __initramfs_size);
|
||||
|
||||
printk(KERN_INFO "rootfs image is not initramfs (%s)"
|
||||
"; looks like an initrd\n", err);
|
||||
dump:
|
||||
fd = ksys_open("/initrd.image",
|
||||
O_WRONLY|O_CREAT, 0700);
|
||||
if (fd >= 0) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue