mirror of
https://github.com/fspc/gbootroot.git
synced 2025-03-12 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.
|
||||
#
|
||||
# 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;
|
||||
|
||||
@ -179,6 +180,14 @@ sub halt {
|
||||
$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 {
|
||||
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 =
|
||||
BootRoot::UML->new( login_prompt => "",
|
||||
kernel => $uml_kernel,
|
||||
@ -107,10 +92,16 @@ my $uml =
|
||||
password_prompt => "Password: ",
|
||||
password => "",
|
||||
prompt => ".*# ",
|
||||
halt => "shutdown -h now"
|
||||
halt => "exit"
|
||||
);
|
||||
|
||||
$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
|
||||
if ( $filesystem =~ /^mkcramfs/ || $filesystem =~ /^genromfs/ ||
|
||||
$filesystem =~ /^mkfs\.jffs/ ) {
|
||||
@ -173,7 +164,9 @@ elsif ( $filesystem =~ /^mkfs\.jffs/ ) {
|
||||
}
|
||||
|
||||
$uml->command("umount /mnt1; umount /mnt2");
|
||||
# The fast way
|
||||
system "uml_mconsole $umid halt";
|
||||
|
||||
# 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