mirror of
https://github.com/fspc/gbootroot.git
synced 2025-02-23 17:13:22 -05:00
This sets up everything, and tests the new mtd interface, looks good.
This commit is contained in:
parent
d87f6a9cdd
commit
07694a9bf1
@ -1702,6 +1702,7 @@ sub uml_box {
|
|||||||
# erasure size $entry_advanced[15]
|
# erasure size $entry_advanced[15]
|
||||||
label_advanced("erasure size:",3,4,5,6,$table_uml);
|
label_advanced("erasure size:",3,4,5,6,$table_uml);
|
||||||
my $mtd_erasure = entry_advanced(4,5,5,6,15,$table_uml);
|
my $mtd_erasure = entry_advanced(4,5,5,6,15,$table_uml);
|
||||||
|
$mtd_erasure->set_text( $entry_advanced[15] ) if $entry_advanced[15];
|
||||||
$tooltips->set_tip( $mtd_erasure,
|
$tooltips->set_tip( $mtd_erasure,
|
||||||
"Choose the erasure size for the mtd device.",
|
"Choose the erasure size for the mtd device.",
|
||||||
"" );
|
"" );
|
||||||
@ -1728,12 +1729,12 @@ sub uml_box {
|
|||||||
|
|
||||||
#_______________________________________
|
#_______________________________________
|
||||||
# Submit Button
|
# Submit Button
|
||||||
my $submit_b = button_advanced(0,1,7,8,"Submit",$table_uml);
|
my $submit_b = button_advanced(0,1,7,8,"Submit",$table_uml);
|
||||||
$tooltips->set_tip( $submit_b,
|
$tooltips->set_tip( $submit_b,
|
||||||
"Start uml kernel processes.",
|
"Start uml kernel processes.",
|
||||||
"" );
|
"" );
|
||||||
$submit_b->signal_connect("clicked",
|
$submit_b->signal_connect("clicked",
|
||||||
sub {
|
sub {
|
||||||
# UML kernel = $entry_advanced[5]
|
# UML kernel = $entry_advanced[5]
|
||||||
# xterm -e linux ubd#=root_fs
|
# xterm -e linux ubd#=root_fs
|
||||||
# root=/dev/ubd#
|
# root=/dev/ubd#
|
||||||
@ -1745,8 +1746,10 @@ sub uml_box {
|
|||||||
my $pid;
|
my $pid;
|
||||||
if ($entry_advanced[8] &&
|
if ($entry_advanced[8] &&
|
||||||
$entry_advanced[10]) {
|
$entry_advanced[10]) {
|
||||||
|
|
||||||
# Check to see if it actually exists
|
# Check to see if it actually exists
|
||||||
my $executable = (split(/\s+/,$entry_advanced[8]))[0];
|
my $executable =
|
||||||
|
(split(/\s+/,$entry_advanced[8]))[0];
|
||||||
if (!find_file_in_path(basename($executable))) {
|
if (!find_file_in_path(basename($executable))) {
|
||||||
error_window("gBootRoot Error: " .
|
error_window("gBootRoot Error: " .
|
||||||
"Enter a valid xterm, and " .
|
"Enter a valid xterm, and " .
|
||||||
@ -1760,45 +1763,158 @@ sub uml_box {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# MTD?
|
||||||
|
if ( $mtd_check->get_active() ) {
|
||||||
|
|
||||||
unless ($pid = fork) {
|
# Check for the existence of root=/dev/ram0
|
||||||
unless (fork) {
|
for ( $entry_advanced[9],$entry_advanced[10] ) {
|
||||||
if ($pid == 0) {
|
info(0,"$_");
|
||||||
sys("$entry_advanced[8] $entry_advanced[5] $entry_advanced[9] $entry_advanced[10]");
|
|
||||||
Gtk->_exit($pid);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
unless ($pid = fork) {
|
||||||
waitpid($pid,0);
|
unless (fork) {
|
||||||
|
if ($pid == 0) {
|
||||||
|
sys("$entry_advanced[8] $entry_advanced[5] $entry_advanced[9] $entry_advanced[10]");
|
||||||
|
Gtk->_exit($pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
waitpid($pid,0);
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
|
|
||||||
|
# MTD? .. testing location
|
||||||
|
if ( $mtd_check->get_active() ) {
|
||||||
|
|
||||||
|
# Everything becomes an option for Initrd to parse
|
||||||
|
# and is put on the options[9] line
|
||||||
|
|
||||||
|
my ($initrd, $ram, $mem);
|
||||||
|
|
||||||
|
for ( $entry_advanced[10],$entry_advanced[9] ) {
|
||||||
|
|
||||||
|
|
||||||
|
# Check for the existence of root=/dev/ram0
|
||||||
|
if ( m,root=/dev/ram, ) {
|
||||||
|
$ram = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Check for the existence of initrd=
|
||||||
|
if ( m,initrd=, ) {
|
||||||
|
m,(initrd=[/\d\w-]+),;
|
||||||
|
$initrd = $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $mtd_radio_mtdram->get_active() ) {
|
||||||
|
|
||||||
|
# Check for the existence mem=
|
||||||
|
if ( m,mem=, ) {
|
||||||
|
$mem = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
my ($total_size, $fs_type, $erasure_size);
|
||||||
|
|
||||||
|
# total size
|
||||||
|
$total_size = $mtd_size->get_value_as_int();
|
||||||
|
|
||||||
|
# what type of fs.
|
||||||
|
$fs_type = $mtd_fs_type_combo->entry->get_text();
|
||||||
|
|
||||||
|
# Pass on erasure size if it exists
|
||||||
|
if ( $entry_advanced[15] ) {
|
||||||
|
$erasure_size = $entry_advanced[15]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set a ram block if necessary
|
||||||
|
|
||||||
|
if ( !$ram ) {
|
||||||
|
for ( $entry_advanced[10],$entry_advanced[9] ) {
|
||||||
|
if ( m,root=, ) {
|
||||||
|
s,(root=[/\d\w-]+),root=/dev/ram0,;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Will use this format
|
||||||
|
# initrd=Initrd mem=? mtd=type,fs_type,size,erasure
|
||||||
|
|
||||||
|
# Tell initrd whether it is mtdram or blkmtd, and
|
||||||
|
if ( $mtd_radio_mtdram->get_active() ) {
|
||||||
|
|
||||||
|
# default mem required by mtdram equaling total size
|
||||||
|
if ( !$mem ) {
|
||||||
|
|
||||||
|
$mem = "mem=$total_size" . "K";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
undef $mem;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !$initrd ) {
|
||||||
|
|
||||||
|
$initrd = "initrd=Initrd";
|
||||||
|
}
|
||||||
|
|
||||||
|
$entry_advanced[9] = "$initrd $mem " .
|
||||||
|
"mtd=mtdram,$fs_type,$total_size,$erasure_size " .
|
||||||
|
$entry_advanced[9];
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
if ( !$initrd ) {
|
||||||
|
|
||||||
|
$initrd = "initrd=Initrd";
|
||||||
|
}
|
||||||
|
|
||||||
|
$entry_advanced[9] = "$initrd " .
|
||||||
|
"mtd=blkmtd,$fs_type,$total_size,$erasure_size " .
|
||||||
|
$entry_advanced[9];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
info(0,"$entry_advanced[9]\n$entry_advanced[10]\n");
|
||||||
|
|
||||||
|
} # mtd preparations
|
||||||
|
|
||||||
if (!$entry_advanced[8]) {
|
if (!$entry_advanced[8]) {
|
||||||
error_window("gBootRoot Error: " .
|
error_window("gBootRoot Error: " .
|
||||||
"Enter an xterm, and executable " .
|
"Enter an xterm, and executable " .
|
||||||
"option.");
|
"option.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!$entry_advanced[10]) {
|
if (!$entry_advanced[10]) {
|
||||||
error_window("gBootRoot Error: " .
|
error_window("gBootRoot Error: " .
|
||||||
"Enter the ubd?=Root_Filesystem " .
|
"Enter the ubd?=Root_Filesystem " .
|
||||||
"and its location.");
|
"and its location.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|
||||||
#_______________________________________
|
#_______________________________________
|
||||||
# Abort Button
|
# Abort Button
|
||||||
# This is the hard kill when all else fails, it also cleans up
|
# This is the hard kill when all else fails, it also cleans up
|
||||||
# lingering processess, but is considered a last resort, and
|
# lingering processess, but is considered a last resort, and
|
||||||
# can be dangerous, it has even taken down a WM.
|
# can be dangerous, it has even taken down a WM.
|
||||||
my $abort_b = button_advanced(3,4,7,8,"Abort",$table_uml);
|
my $abort_b = button_advanced(3,4,7,8,"Abort",$table_uml);
|
||||||
$tooltips->set_tip( $abort_b,
|
$tooltips->set_tip( $abort_b,
|
||||||
"Abort uml kernel processes." .
|
"Abort uml kernel processes." .
|
||||||
"This serves three purposes:\n" .
|
"This serves three purposes:\n" .
|
||||||
|
Loading…
x
Reference in New Issue
Block a user