mirror of
				https://github.com/fspc/gbootroot.git
				synced 2025-10-30 23:25:36 -04: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 $lilo_conf = "/etc/lilo.conf"; | ||||
| my $home = "$ENV{HOME}/.gbootroot"; | ||||
| my $uml_xterm = "xterm -e"; | ||||
| 
 | ||||
| # CHANGES | ||||
| # | ||||
| @ -154,8 +155,10 @@ my ($hbox_advanced); | ||||
| my $separator_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 ($eab1,$eab2,$eab3); # entry advanced uml | ||||
| my $uml_window; | ||||
| my $table_advanced; | ||||
| my $table_advanced_root; | ||||
| my ($spinner_advanced,$spinner_size); | ||||
| @ -764,7 +767,7 @@ sub advanced_root_section { | ||||
|                           "" ); | ||||
|        # $order is important because it is put in $container[$order] | ||||
|        button_fileselect_advanced(2,3,0,1,"Selection",$ear1,"Selection",12, | ||||
|                                   "/dev/fd0"); | ||||
|                                   $table_advanced_root,"/dev/fd0"); | ||||
| 
 | ||||
|        #_______________________________________  | ||||
|        # Root Device Size | ||||
| @ -888,6 +891,7 @@ sub advanced_root_section { | ||||
|        $tooltips->set_tip( $compression_off,  | ||||
|                            "Turn Compression off.", "" ); | ||||
|        $hbox_between->pack_start( $compression_off, $true, $false, 0 ); | ||||
|        $compression_off->set_active($true); | ||||
|        $compression_off->show(); | ||||
|         | ||||
|        #_______________________________________  | ||||
| @ -901,7 +905,8 @@ sub advanced_root_section { | ||||
|                           " the Kernel's location," . | ||||
|                           " 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 | ||||
| @ -977,15 +982,15 @@ sub advanced_root_section { | ||||
|        # The Generation process is determined by the method chosen.  Yard - | ||||
|        #  asks the user if they want to modify the template, and/or save a  | ||||
|        #  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); | ||||
|        $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 {  | ||||
| 	   print "$entry_advanced[5]\n";  | ||||
|        }); | ||||
|        $UML_b->signal_connect("clicked", \¨_box); | ||||
|        $tooltips->set_tip( $UML_b, "Test Filesystem with User Mode Linux.",  | ||||
|                             "" ); | ||||
| 
 | ||||
| 	# UML kernel doesn't look like a normal kernel | ||||
| 	##if (!-d $entry_advanced[5] && -f $entry_advanced[5]) { | ||||
| @ -995,68 +1000,10 @@ sub advanced_root_section { | ||||
| 	##error_window("Kernel Selection required"); | ||||
|         ##return; } | ||||
| 
 | ||||
|        $tooltips->set_tip( $UML_b, "Test Filesystem with User Mode Linux.",  | ||||
|                             "" ); | ||||
| 
 | ||||
|        # Will check to make sure that Filesystem fits device. | ||||
|        # Method determines whether or not compression is used. | ||||
|        my $accept_b = button_advanced(2,3,8,9,"Accept"); | ||||
|        $accept_b->signal_connect("clicked", sub {  | ||||
| 	   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"); | ||||
| 	   } | ||||
|        }); | ||||
|        my $accept_b = button_advanced(2,3,8,9,"Accept",$table_advanced_root); | ||||
|        $accept_b->signal_connect("clicked", \&accept_button, $ear2_save);  | ||||
|        $tooltips->set_tip( $accept_b, "Accept Filesystem.", "" ); | ||||
| 
 | ||||
| 
 | ||||
| @ -1072,6 +1019,151 @@ 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  | ||||
| # /usr/src/linux*  Possible integration with other Projects .. modules | ||||
| # will be in the logical place.  Before ABS. | ||||
| @ -1096,6 +1188,9 @@ sub Generate { | ||||
|     # 5 = UML Kernel | ||||
|     $method = $entry_advanced[6];         # 6 = Method | ||||
|     # 7 = Template | ||||
|     # 8 = UML xterm | ||||
|     # 9 = UML options | ||||
|     # 10 = UML root_fs | ||||
|     # $root_device_size; | ||||
|     # $filesystem_size; | ||||
| 
 | ||||
| @ -1147,7 +1242,7 @@ sub button_advanced { | ||||
|     my ($left_attach,$right_attach,$top_attach, | ||||
|                      $bottom_attach,$text,$widget) = @_; | ||||
|     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,  | ||||
|                             ['shrink','fill','expand'],['fill','shrink'],2,2); | ||||
|     show $button; | ||||
| @ -1160,10 +1255,10 @@ sub button_fileselect_advanced { | ||||
|     # cretzu should like this | ||||
|     # $order does matter because it fills in $container[$order]. | ||||
|     my ($left_attach,$right_attach,$top_attach,$bottom_attach,$text,$ent, | ||||
|         $name,$order,$device) = @_; | ||||
|         $name,$order,$widget,$device) = @_; | ||||
| 
 | ||||
|     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,  | ||||
|                             ['shrink','fill','expand'],['fill','shrink'],2,2); | ||||
| 
 | ||||
| @ -1174,6 +1269,10 @@ sub button_fileselect_advanced { | ||||
|     elsif ($order == 13) { | ||||
|       $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->show(); | ||||
| @ -1409,7 +1508,12 @@ sub file_ok_sel { | ||||
| 
 | ||||
|     my( $widget, $file_selection,$entry,$order) = @_; | ||||
|     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; | ||||
|     if ($order == 1) { | ||||
| 	$ars->{kernel} = $container[$order]; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user