1
0
mirror of https://github.com/fspc/gbootroot.git synced 2025-02-23 00:53:23 -05:00

Makes a more effecient root_fs_helper by not making logon mandatory,

and using uml_mconsole halt for a quick halt rather than shutdown -h
now.
This commit is contained in:
freesource 2003-02-18 18:14:43 +00:00
parent 584ff4c566
commit 806baff56e
5 changed files with 46 additions and 4 deletions

View File

@ -7,6 +7,9 @@
# Changes: # Changes:
# 12/15/2001 Changed UML to BootRoot::UML # 12/15/2001 Changed UML to BootRoot::UML
# Can now set password to "" to allow no password. # Can now set password to "" to allow no password.
#
# 02/18/2003 Now login isn't mandatory which allows login-free
# inits like /bin/bash.
package BootRoot::UML; package BootRoot::UML;
@ -76,8 +79,11 @@ sub boot {
$log = $me->open_log($log_file); $log = $me->open_log($log_file);
$me->{expect_handle}->log_stdout(0); $me->{expect_handle}->log_stdout(0);
} }
$me->{expect_handle}->expect(undef, "$me->{login_prompt}");
$me->{expect_handle}->print("$me->{login}\n"); if ( $me->{login_prompt} ne "" ) {
$me->{expect_handle}->expect(undef, "$me->{login_prompt}");
$me->{expect_handle}->print("$me->{login}\n");
}
# It's o.k. not to have a password .. password_prompt will be ignored. # It's o.k. not to have a password .. password_prompt will be ignored.
# --freesource # --freesource
@ -86,7 +92,11 @@ sub boot {
$me->{expect_handle}->print("$me->{password}\n"); $me->{expect_handle}->print("$me->{password}\n");
} }
$me->{expect_handle}->expect(undef, "-re", "$me->{prompt}"); $me->{expect_handle}->expect(undef, "-re", "$me->{prompt}");
$me->{expect_handle}->print("echo Let's make you're root_fs!\r");
$me->{expect_handle}->print("\r");
return($log); return($log);
} }

View File

@ -1925,10 +1925,11 @@ sub create_expect_uml {
if ( !$option{template} ) { if ( !$option{template} ) {
$options = "root=/dev/ubd0 " . "mode=" . $options = "root=/dev/ubd0 " . "mode=" .
BootRoot::BootRoot::skas_or_tt() . " " . BootRoot::BootRoot::skas_or_tt() . " " .
$option{"uml-options"}; $option{"uml-options"} . " umid=root_fs_helper init=/bin/bash";
} }
else { else {
$options = "root=/dev/ubd0 " . $option{"uml-options"}; $options = "root=/dev/ubd0 " . $option{"uml-options"} .
" umid=root_fs_helper init=/bin/bash";
} }
my $filesystem; my $filesystem;
if ( $fs_type eq "genext2fs" ) { if ( $fs_type eq "genext2fs" ) {

View File

@ -56,6 +56,8 @@ if ( !$ARGV[0] ) {
} }
my $arguments = "$ARGV[0] $ARGV[1] $ARGV[2]"; my $arguments = "$ARGV[0] $ARGV[1] $ARGV[2]";
$ARGV[2] =~ /umid=([\w_]+)\s*/;
my $umid = $1;
my $mount_point = "$ARGV[3]"; my $mount_point = "$ARGV[3]";
my $preserve_ownership = "$ARGV[4]"; my $preserve_ownership = "$ARGV[4]";
my $uml_kernel = "$ARGV[5]"; my $uml_kernel = "$ARGV[5]";
@ -81,6 +83,9 @@ for ( 6 .. $#ARGV ) {
} }
} }
=pod
my $uml = my $uml =
BootRoot::UML->new( login_prompt => "bootroot login: ", BootRoot::UML->new( login_prompt => "bootroot login: ",
kernel => $uml_kernel, kernel => $uml_kernel,
@ -91,6 +96,19 @@ my $uml =
prompt => "bootroot:.*# ", prompt => "bootroot:.*# ",
halt => "shutdown -h now" halt => "shutdown -h now"
); );
=cut
my $uml =
BootRoot::UML->new( login_prompt => "",
kernel => $uml_kernel,
arguments => $arguments,
login => "root",
password_prompt => "Password: ",
password => "",
prompt => ".*# ",
halt => "shutdown -h now"
);
$uml->boot(); $uml->boot();
# Make the GID/UID 0 FS # Make the GID/UID 0 FS
@ -155,4 +173,7 @@ elsif ( $filesystem =~ /^mkfs\.jffs/ ) {
} }
$uml->command("umount /mnt1; umount /mnt2"); $uml->command("umount /mnt1; umount /mnt2");
# The fast way
system "uml_mconsole $umid halt";
# Fall through
$uml->halt() $uml->halt()

View File

@ -87,6 +87,11 @@ Mandrake should use the mdk rpm. Distributions which require Gtk-Perl and
only require perl for perl such as Red Hat should use the rpm not marked only require perl for perl such as Red Hat should use the rpm not marked
as mdk. as mdk.
There are some variations on this theme. Suse is a Red Hat type of
distribution, however it prepends perl to Gtk-Perl, so if
perl-Gtk-Perl is installed on your system you can just add the
--nodeps option when doing an install.
%prep %prep
%setup -n gbootroot-%{version} %setup -n gbootroot-%{version}

View File

@ -85,6 +85,11 @@ Mandrake should use the mdk rpm. Distributions which require Gtk-Perl and
only require perl for perl such as Red Hat should use the rpm not marked only require perl for perl such as Red Hat should use the rpm not marked
as mdk. as mdk.
There are some variations on this theme. Suse is a Red Hat type of
distribution, however it prepends perl to Gtk-Perl, so if
perl-Gtk-Perl is installed on your system you can just add the
--nodeps option when doing an install.
%prep %prep
%setup -n gbootroot-%{version} %setup -n gbootroot-%{version}