diff --git a/BootRoot/Yard.pm b/BootRoot/Yard.pm index 02af272..f2ffaad 100644 --- a/BootRoot/Yard.pm +++ b/BootRoot/Yard.pm @@ -1418,20 +1418,21 @@ sub create_filesystem { while (Gtk->events_pending) { Gtk->main_iteration; } } - if ( $fs_type eq "mkcramfs" ) { + if ( $fs_type eq "mkcramfs" || $fs_type eq "genromfs" ) { # Will just keep appending _cramfs .. leaving it to the # user to realize this is happening, that way the user # has control over the dd file. - $device = $device . "_cramfs"; - my $cramfs_name = basename($device); + $fs_type eq "mkcramfs" ? ($device = $device . "_cramfs") : + ($device = $device . "_romfs"); + my $cramfs_name = basename($device); # If somebody closes ARS, this won't get updated, # but that is a minor matter. - $ear2->set_text($cramfs_name) if $ear2; + $ear2->set_text($cramfs_name) if $ear2; $mount_point = dirname($device); } - - } + + } elsif ( sys("/usr/lib/bootroot/$main::makefs -b $fs_size -d $mount_point -D $device_table $device") !~ /^0$/ ) { diff --git a/expect_uml b/expect_uml index bbad948..906af77 100755 --- a/expect_uml +++ b/expect_uml @@ -47,9 +47,12 @@ my $uml = $uml->boot(); # Make the GID/UID 0 FS -if ( $filesystem =~ /^mkcramfs/ ) { +if ( $filesystem =~ /^mkcramfs/ || $filesystem =~ /^genromfs/ ) { $uml->command("mke2fs -m0 /dev/ubd/1"); } +elsif ( $filesysem =~ /^genromfs/ ) { + $uml->command("$filesystem"); +} else { $uml->command("$filesystem /dev/ubd/1"); } @@ -67,6 +70,14 @@ if ( $filesystem =~ /^mkcramfs/ ) { $uml->command("mount -t hostfs none -o $cram_dir /mnt2"); $uml->command("mkcramfs /mnt1 /mnt2/$cramfs_name"); } +if ( $filesystem =~ /^genromfs/ ) { + my $romfs_dir = dirname($mount_point); + my $root_fs_name = basename($ARGV[1]); + my $romfs_name = "$root_fs_name" . "_romfs"; + $uml->command("umount /mnt2"); + $uml->command("mount -t hostfs none -o $romfs_dir /mnt2"); + $uml->command("genromfs -d /mnt1 -f /mnt2/$romfs_name"); +} $uml->command("umount /mnt1; umount /mnt2"); $uml->halt();