mirror of
https://github.com/fspc/gbootroot.git
synced 2025-02-22 16:43:23 -05:00
Added the uml box, just have to add tooltips, and a purge or kill button to
remove uncecessary kernel processes if the boot fails.
This commit is contained in:
parent
59cc147736
commit
ccd927c614
248
gBootRoot
248
gBootRoot
@ -53,6 +53,7 @@ set_locale Gtk;
|
|||||||
my $tmp1 = "/tmp"; # tmp should be default - Cristian
|
my $tmp1 = "/tmp"; # tmp should be default - Cristian
|
||||||
my $lilo_conf = "/etc/lilo.conf";
|
my $lilo_conf = "/etc/lilo.conf";
|
||||||
my $home = "$ENV{HOME}/.gbootroot";
|
my $home = "$ENV{HOME}/.gbootroot";
|
||||||
|
my $uml_xterm = "xterm -e";
|
||||||
|
|
||||||
# CHANGES
|
# CHANGES
|
||||||
#
|
#
|
||||||
@ -154,8 +155,10 @@ my ($hbox_advanced);
|
|||||||
my $separator_advanced;
|
my $separator_advanced;
|
||||||
my @entry_advanced;
|
my @entry_advanced;
|
||||||
my $entry_advanced;
|
my $entry_advanced;
|
||||||
my ($ea1,$ea2,$ea3);
|
my ($ea1,$ea2,$ea3); # entry advanced boot
|
||||||
my ($ear1,$ear2,$ear3,$ear4); # entry advanced root
|
my ($ear1,$ear2,$ear3,$ear4); # entry advanced root
|
||||||
|
my ($eab1,$eab2,$eab3); # entry advanced uml
|
||||||
|
my $uml_window;
|
||||||
my $table_advanced;
|
my $table_advanced;
|
||||||
my $table_advanced_root;
|
my $table_advanced_root;
|
||||||
my ($spinner_advanced,$spinner_size);
|
my ($spinner_advanced,$spinner_size);
|
||||||
@ -764,7 +767,7 @@ sub advanced_root_section {
|
|||||||
"" );
|
"" );
|
||||||
# $order is important because it is put in $container[$order]
|
# $order is important because it is put in $container[$order]
|
||||||
button_fileselect_advanced(2,3,0,1,"Selection",$ear1,"Selection",12,
|
button_fileselect_advanced(2,3,0,1,"Selection",$ear1,"Selection",12,
|
||||||
"/dev/fd0");
|
$table_advanced_root,"/dev/fd0");
|
||||||
|
|
||||||
#_______________________________________
|
#_______________________________________
|
||||||
# Root Device Size
|
# Root Device Size
|
||||||
@ -888,6 +891,7 @@ sub advanced_root_section {
|
|||||||
$tooltips->set_tip( $compression_off,
|
$tooltips->set_tip( $compression_off,
|
||||||
"Turn Compression off.", "" );
|
"Turn Compression off.", "" );
|
||||||
$hbox_between->pack_start( $compression_off, $true, $false, 0 );
|
$hbox_between->pack_start( $compression_off, $true, $false, 0 );
|
||||||
|
$compression_off->set_active($true);
|
||||||
$compression_off->show();
|
$compression_off->show();
|
||||||
|
|
||||||
#_______________________________________
|
#_______________________________________
|
||||||
@ -901,7 +905,8 @@ sub advanced_root_section {
|
|||||||
" the Kernel's location," .
|
" the Kernel's location," .
|
||||||
" and any Kernel options desired afterwards.",
|
" and any Kernel options desired afterwards.",
|
||||||
"" );
|
"" );
|
||||||
button_fileselect_advanced(2,3,5,6,"Selection",$ear3,"Selection",13);
|
button_fileselect_advanced(2,3,5,6,"Selection",$ear3,"Selection",13,
|
||||||
|
$table_advanced_root);
|
||||||
|
|
||||||
#_______________________________________
|
#_______________________________________
|
||||||
# Method
|
# Method
|
||||||
@ -977,15 +982,15 @@ sub advanced_root_section {
|
|||||||
# The Generation process is determined by the method chosen. Yard -
|
# The Generation process is determined by the method chosen. Yard -
|
||||||
# asks the user if they want to modify the template, and/or save a
|
# asks the user if they want to modify the template, and/or save a
|
||||||
# new template with modifications (to be added to Template menu).
|
# new template with modifications (to be added to Template menu).
|
||||||
my $generate_b = button_advanced(0,1,8,9,"Generate");
|
my $generate_b = button_advanced(0,1,8,9,"Generate",$table_advanced_root);
|
||||||
$generate_b->signal_connect("clicked",\&Generate);
|
$generate_b->signal_connect("clicked",\&Generate);
|
||||||
$tooltips->set_tip( $generate_b, "Generate Root Filesystem.", "" );
|
$tooltips->set_tip( $generate_b, "Generate Root Filesystem.", "" );
|
||||||
|
|
||||||
my $UML_b = button_advanced(1,2,8,9,"UML");
|
my $UML_b = button_advanced(1,2,8,9,"UML",$table_advanced_root);
|
||||||
|
|
||||||
$UML_b->signal_connect("clicked", sub {
|
$UML_b->signal_connect("clicked", \¨_box);
|
||||||
print "$entry_advanced[5]\n";
|
$tooltips->set_tip( $UML_b, "Test Filesystem with User Mode Linux.",
|
||||||
});
|
"" );
|
||||||
|
|
||||||
# UML kernel doesn't look like a normal kernel
|
# UML kernel doesn't look like a normal kernel
|
||||||
##if (!-d $entry_advanced[5] && -f $entry_advanced[5]) {
|
##if (!-d $entry_advanced[5] && -f $entry_advanced[5]) {
|
||||||
@ -995,68 +1000,10 @@ sub advanced_root_section {
|
|||||||
##error_window("Kernel Selection required");
|
##error_window("Kernel Selection required");
|
||||||
##return; }
|
##return; }
|
||||||
|
|
||||||
$tooltips->set_tip( $UML_b, "Test Filesystem with User Mode Linux.",
|
|
||||||
"" );
|
|
||||||
|
|
||||||
# Will check to make sure that Filesystem fits device.
|
# Will check to make sure that Filesystem fits device.
|
||||||
# Method determines whether or not compression is used.
|
# Method determines whether or not compression is used.
|
||||||
my $accept_b = button_advanced(2,3,8,9,"Accept");
|
my $accept_b = button_advanced(2,3,8,9,"Accept",$table_advanced_root);
|
||||||
$accept_b->signal_connect("clicked", sub {
|
$accept_b->signal_connect("clicked", \&accept_button, $ear2_save);
|
||||||
my($tool,$value);
|
|
||||||
if (-e "$tmp/$entry_advanced[4]" ) {
|
|
||||||
if (!$compression_off->active) {
|
|
||||||
if ($gz_toggle_root->active) {
|
|
||||||
$compress = "gzip";
|
|
||||||
open(F,"file $tmp/$entry_advanced[4] |");
|
|
||||||
while (<F>) {
|
|
||||||
if (/gzip/) {
|
|
||||||
info(0, "Already gzip compressed.\n");
|
|
||||||
}
|
|
||||||
elsif (/bzip2/) {
|
|
||||||
info(0, "Already bzip2 compressed.\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
system "$compress $tmp/$entry_advanced[4]";
|
|
||||||
$entry_advanced[4] = "$entry_advanced[4].gz";
|
|
||||||
$entry3->set_text("$tmp/$entry_advanced[4]");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($ear2_save->active) {
|
|
||||||
return if errcp(sys("cp -a $tmp/$entry_advanced[4] $home_rootfs")) == 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
elsif ($bz2_toggle_root->active) {
|
|
||||||
$compress = "bzip2";
|
|
||||||
open(F,"file $tmp/$entry_advanced[4] |");
|
|
||||||
while (<F>) {
|
|
||||||
if (/gzip/) {
|
|
||||||
info(0, "Already gzip compressed.\n");
|
|
||||||
}
|
|
||||||
elsif (/bzip2/) {
|
|
||||||
info(0, "Already bzip2 compressed.\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
system "$compress $tmp/$entry_advanced[4]";
|
|
||||||
$entry_advanced[4] = "$entry_advanced[4].bz2";
|
|
||||||
$entry3->set_text("$tmp/$entry_advanced[4]");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($ear2_save->active) {
|
|
||||||
return if errcp(sys("cp -a $tmp/$entry_advanced[4] $home_rootfs")) == 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else { # off
|
|
||||||
$entry3->set_text("$tmp/$entry_advanced[4]");
|
|
||||||
if ($ear2_save->active) {
|
|
||||||
return if errcp(sys("cp -a $tmp/$entry_advanced[4] $home_rootfs")) == 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
error("$entry_advanced[4] doesn't exist; create it first.\n");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$tooltips->set_tip( $accept_b, "Accept Filesystem.", "" );
|
$tooltips->set_tip( $accept_b, "Accept Filesystem.", "" );
|
||||||
|
|
||||||
|
|
||||||
@ -1072,6 +1019,151 @@ sub advanced_root_section {
|
|||||||
|
|
||||||
} # end sub advanced_root_section
|
} # end sub advanced_root_section
|
||||||
|
|
||||||
|
sub uml_box {
|
||||||
|
|
||||||
|
$uml_window = Gtk::Window->new("toplevel");
|
||||||
|
$uml_window->signal_connect("destroy", \&destroy_window,
|
||||||
|
\$uml_window);
|
||||||
|
$uml_window->signal_connect("delete_event", \&destroy_window,
|
||||||
|
\$uml_window);
|
||||||
|
#$uml_window->set_usize( 450, 175 ); # 500 600
|
||||||
|
$uml_window->set_policy( $true, $true, $false );
|
||||||
|
$uml_window->set_title( "Uml Box" );
|
||||||
|
$uml_window->border_width(1);
|
||||||
|
|
||||||
|
my $main_vbox = Gtk::VBox->new( $false, 0 );
|
||||||
|
$uml_window->add( $main_vbox );
|
||||||
|
$main_vbox->show();
|
||||||
|
|
||||||
|
my $table_uml = Gtk::Table->new( 4, 3, $true );
|
||||||
|
$main_vbox->pack_start( $table_uml, $true, $true, 0 );
|
||||||
|
$table_uml->show();
|
||||||
|
|
||||||
|
#_______________________________________
|
||||||
|
# Xterm and execute options
|
||||||
|
label_advanced("Xterm:",0,1,0,1,$table_uml);
|
||||||
|
$eab1 = entry_advanced(1,2,0,1,8,$table_uml);
|
||||||
|
$eab1->set_text($uml_xterm);
|
||||||
|
|
||||||
|
#_______________________________________
|
||||||
|
# UML options
|
||||||
|
label_advanced("Options:",0,1,1,2,$table_uml);
|
||||||
|
$eab2 = entry_advanced(1,3,1,2,9,$table_uml);
|
||||||
|
$eab2->set_text("root=/dev/ubd0");
|
||||||
|
|
||||||
|
#_______________________________________
|
||||||
|
# Root Filesystem defaults to generated one if found.
|
||||||
|
label_advanced("Root_Fs:",0,1,2,3,$table_uml);
|
||||||
|
$eab3 = entry_advanced(1,2,2,3,10,$table_uml);
|
||||||
|
button_fileselect_advanced(2,3,2,3,"Selection",$eab3,"Selection",14,
|
||||||
|
$table_uml,$home_rootfs);
|
||||||
|
$eab3->set_text("ubd0=$tmp/$entry_advanced[4]")
|
||||||
|
if -e "$tmp/$entry_advanced[4]";
|
||||||
|
|
||||||
|
$table_uml->set_row_spacing( 2, 4);
|
||||||
|
|
||||||
|
#_______________________________________
|
||||||
|
# Submit Button
|
||||||
|
my $submit_b = button_advanced(0,2,3,4,"Submit",$table_uml);
|
||||||
|
$submit_b->signal_connect("clicked",
|
||||||
|
sub {
|
||||||
|
# UML kernel = $entry_advanced[5]
|
||||||
|
# xterm -e linux ubd#=root_fs
|
||||||
|
# root=/dev/ubd#
|
||||||
|
sys("$entry_advanced[8] $entry_advanced[5] $entry_advanced[9] $entry_advanced[10]");
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
#_______________________________________
|
||||||
|
# Cancel button also kills UML kernel if still open
|
||||||
|
my $cancel_b = button_advanced(2,3,3,4,"Cancel",$table_uml);
|
||||||
|
$cancel_b->signal_connect("clicked",
|
||||||
|
sub {
|
||||||
|
# This has to be improved .. don't
|
||||||
|
# want other processes killed
|
||||||
|
# remove_matching_process("linux");
|
||||||
|
$uml_window->destroy();
|
||||||
|
} );
|
||||||
|
|
||||||
|
$uml_window->show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub remove_matching_process {
|
||||||
|
|
||||||
|
my ($match_word) = @_;
|
||||||
|
my $ps = "ps auxw|";
|
||||||
|
open(P,"$ps");
|
||||||
|
while(<P>) {
|
||||||
|
if (/$match_word/) {
|
||||||
|
my $process = (split(/\s+/,$_,))[1];
|
||||||
|
system "kill -9 $process";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} # end remove_matching_process
|
||||||
|
|
||||||
|
sub accept_button {
|
||||||
|
|
||||||
|
my ($widget,$ear2_save) = @_;
|
||||||
|
|
||||||
|
my($tool,$value);
|
||||||
|
if (-e "$tmp/$entry_advanced[4]" ) {
|
||||||
|
if (!$compression_off->active) {
|
||||||
|
if ($gz_toggle_root->active) {
|
||||||
|
$compress = "gzip";
|
||||||
|
open(F,"file $tmp/$entry_advanced[4] |");
|
||||||
|
while (<F>) {
|
||||||
|
if (/gzip/) {
|
||||||
|
info(0, "Already gzip compressed.\n");
|
||||||
|
}
|
||||||
|
elsif (/bzip2/) {
|
||||||
|
info(0, "Already bzip2 compressed.\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
system "$compress $tmp/$entry_advanced[4]";
|
||||||
|
$entry_advanced[4] = "$entry_advanced[4].gz";
|
||||||
|
$entry3->set_text("$tmp/$entry_advanced[4]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($ear2_save->active) {
|
||||||
|
return if errcp(sys("cp -a $tmp/$entry_advanced[4] $home_rootfs")) == 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ($bz2_toggle_root->active) {
|
||||||
|
$compress = "bzip2";
|
||||||
|
open(F,"file $tmp/$entry_advanced[4] |");
|
||||||
|
while (<F>) {
|
||||||
|
if (/gzip/) {
|
||||||
|
info(0, "Already gzip compressed.\n");
|
||||||
|
}
|
||||||
|
elsif (/bzip2/) {
|
||||||
|
info(0, "Already bzip2 compressed.\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
system "$compress $tmp/$entry_advanced[4]";
|
||||||
|
$entry_advanced[4] = "$entry_advanced[4].bz2";
|
||||||
|
$entry3->set_text("$tmp/$entry_advanced[4]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($ear2_save->active) {
|
||||||
|
return if errcp(sys("cp -a $tmp/$entry_advanced[4] $home_rootfs")) == 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else { # off
|
||||||
|
$entry3->set_text("$tmp/$entry_advanced[4]");
|
||||||
|
if ($ear2_save->active) {
|
||||||
|
return if errcp(sys("cp -a $tmp/$entry_advanced[4] $home_rootfs")) == 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
error("$entry_advanced[4] doesn't exist; create it first.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
} # end accept_button
|
||||||
|
|
||||||
# Coming - .config storage, auto-matic kernel locus, all stages
|
# Coming - .config storage, auto-matic kernel locus, all stages
|
||||||
# /usr/src/linux* Possible integration with other Projects .. modules
|
# /usr/src/linux* Possible integration with other Projects .. modules
|
||||||
# will be in the logical place. Before ABS.
|
# will be in the logical place. Before ABS.
|
||||||
@ -1096,6 +1188,9 @@ sub Generate {
|
|||||||
# 5 = UML Kernel
|
# 5 = UML Kernel
|
||||||
$method = $entry_advanced[6]; # 6 = Method
|
$method = $entry_advanced[6]; # 6 = Method
|
||||||
# 7 = Template
|
# 7 = Template
|
||||||
|
# 8 = UML xterm
|
||||||
|
# 9 = UML options
|
||||||
|
# 10 = UML root_fs
|
||||||
# $root_device_size;
|
# $root_device_size;
|
||||||
# $filesystem_size;
|
# $filesystem_size;
|
||||||
|
|
||||||
@ -1147,7 +1242,7 @@ sub button_advanced {
|
|||||||
my ($left_attach,$right_attach,$top_attach,
|
my ($left_attach,$right_attach,$top_attach,
|
||||||
$bottom_attach,$text,$widget) = @_;
|
$bottom_attach,$text,$widget) = @_;
|
||||||
my $button = Gtk::Button->new($text);
|
my $button = Gtk::Button->new($text);
|
||||||
$table_advanced_root->attach($button,$left_attach,$right_attach,
|
$widget->attach($button,$left_attach,$right_attach,
|
||||||
$top_attach,$bottom_attach,
|
$top_attach,$bottom_attach,
|
||||||
['shrink','fill','expand'],['fill','shrink'],2,2);
|
['shrink','fill','expand'],['fill','shrink'],2,2);
|
||||||
show $button;
|
show $button;
|
||||||
@ -1160,10 +1255,10 @@ sub button_fileselect_advanced {
|
|||||||
# cretzu should like this
|
# cretzu should like this
|
||||||
# $order does matter because it fills in $container[$order].
|
# $order does matter because it fills in $container[$order].
|
||||||
my ($left_attach,$right_attach,$top_attach,$bottom_attach,$text,$ent,
|
my ($left_attach,$right_attach,$top_attach,$bottom_attach,$text,$ent,
|
||||||
$name,$order,$device) = @_;
|
$name,$order,$widget,$device) = @_;
|
||||||
|
|
||||||
my $button = Gtk::Button->new($text);
|
my $button = Gtk::Button->new($text);
|
||||||
$table_advanced_root->attach($button,$left_attach,$right_attach,
|
$widget->attach($button,$left_attach,$right_attach,
|
||||||
$top_attach,$bottom_attach,
|
$top_attach,$bottom_attach,
|
||||||
['shrink','fill','expand'],['fill','shrink'],2,2);
|
['shrink','fill','expand'],['fill','shrink'],2,2);
|
||||||
|
|
||||||
@ -1174,6 +1269,10 @@ sub button_fileselect_advanced {
|
|||||||
elsif ($order == 13) {
|
elsif ($order == 13) {
|
||||||
$tooltips->set_tip( $button, "Select the UML Kernel.", "" );
|
$tooltips->set_tip( $button, "Select the UML Kernel.", "" );
|
||||||
}
|
}
|
||||||
|
elsif ($order == 14) {
|
||||||
|
$tooltips->set_tip( $button, "Select the Root Filesystem.", "" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$button->signal_connect( "clicked",\&fileselect,$ent,$name,$order,$device);
|
$button->signal_connect( "clicked",\&fileselect,$ent,$name,$order,$device);
|
||||||
$button->show();
|
$button->show();
|
||||||
@ -1409,7 +1508,12 @@ sub file_ok_sel {
|
|||||||
|
|
||||||
my( $widget, $file_selection,$entry,$order) = @_;
|
my( $widget, $file_selection,$entry,$order) = @_;
|
||||||
my $file = $file_selection->get_filename();
|
my $file = $file_selection->get_filename();
|
||||||
$entry->set_text($file);
|
if ($order != 14) {
|
||||||
|
$entry->set_text($file);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$entry->set_text("ubd0=$file");
|
||||||
|
}
|
||||||
$container[$order] = $file;
|
$container[$order] = $file;
|
||||||
if ($order == 1) {
|
if ($order == 1) {
|
||||||
$ars->{kernel} = $container[$order];
|
$ars->{kernel} = $container[$order];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user