mirror of
https://github.com/fspc/gbootroot.git
synced 2025-04-04 07:43:22 -04:00
Had to add more changes to expect_uml and UML so that there will be an
established PATH, and so that uml_mconsole's system command won't be issued until the last line is actually come to via a new method.
This commit is contained in:
parent
be33092ac2
commit
3f7df32e64
@ -9,7 +9,8 @@
|
|||||||
# 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
|
# 02/18/2003 Now login isn't mandatory which allows login-free
|
||||||
# inits like /bin/bash.
|
# inits like /bin/bash. Added a new method so that
|
||||||
|
# the last line can be discerned before halting.
|
||||||
|
|
||||||
package BootRoot::UML;
|
package BootRoot::UML;
|
||||||
|
|
||||||
@ -179,6 +180,14 @@ sub halt {
|
|||||||
$me->{expect_handle}->expect(undef);
|
$me->{expect_handle}->expect(undef);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub close_no_init {
|
||||||
|
my $me = shift;
|
||||||
|
|
||||||
|
$me->{expect_handle}->print("Shutting down\s\s\n");
|
||||||
|
$me->{expect_handle}->expect(undef, "-re", "Shutting down");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
sub kill {
|
sub kill {
|
||||||
my $me = shift;
|
my $me = shift;
|
||||||
|
|
||||||
|
31
expect_uml
31
expect_uml
@ -84,21 +84,6 @@ for ( 6 .. $#ARGV ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=pod
|
|
||||||
my $uml =
|
|
||||||
BootRoot::UML->new( login_prompt => "bootroot login: ",
|
|
||||||
kernel => $uml_kernel,
|
|
||||||
arguments => $arguments,
|
|
||||||
login => "root",
|
|
||||||
password_prompt => "Password: ",
|
|
||||||
password => "",
|
|
||||||
prompt => "bootroot:.*# ",
|
|
||||||
halt => "shutdown -h now"
|
|
||||||
);
|
|
||||||
=cut
|
|
||||||
|
|
||||||
|
|
||||||
my $uml =
|
my $uml =
|
||||||
BootRoot::UML->new( login_prompt => "",
|
BootRoot::UML->new( login_prompt => "",
|
||||||
kernel => $uml_kernel,
|
kernel => $uml_kernel,
|
||||||
@ -107,10 +92,16 @@ my $uml =
|
|||||||
password_prompt => "Password: ",
|
password_prompt => "Password: ",
|
||||||
password => "",
|
password => "",
|
||||||
prompt => ".*# ",
|
prompt => ".*# ",
|
||||||
halt => "shutdown -h now"
|
halt => "exit"
|
||||||
);
|
);
|
||||||
|
|
||||||
$uml->boot();
|
$uml->boot();
|
||||||
|
|
||||||
|
# Establish PATH, some compilations of bash ignore some important paths
|
||||||
|
$uml->command("PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:.");
|
||||||
|
|
||||||
|
$uml->command("mount -t proc proc /proc");
|
||||||
|
|
||||||
# Make the GID/UID 0 FS
|
# Make the GID/UID 0 FS
|
||||||
if ( $filesystem =~ /^mkcramfs/ || $filesystem =~ /^genromfs/ ||
|
if ( $filesystem =~ /^mkcramfs/ || $filesystem =~ /^genromfs/ ||
|
||||||
$filesystem =~ /^mkfs\.jffs/ ) {
|
$filesystem =~ /^mkfs\.jffs/ ) {
|
||||||
@ -173,7 +164,9 @@ 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
|
# Fall through
|
||||||
$uml->halt()
|
$uml->close_no_init();
|
||||||
|
|
||||||
|
# Wait until the last line
|
||||||
|
system "uml_mconsole $umid halt";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user