mirror of
https://github.com/fspc/gbootroot.git
synced 2025-02-23 17:13:22 -05:00
Things are working properly with insmod, will have to adjust the size of ramdisks
for something like rttbtt.
This commit is contained in:
parent
20fa0a6591
commit
8c0b394464
46
gbootroot
46
gbootroot
@ -76,7 +76,7 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
use lib "/usr/share/perl5";
|
||||||
use Gtk;
|
use Gtk;
|
||||||
use strict;
|
use strict;
|
||||||
use BootRoot::Yard;
|
use BootRoot::Yard;
|
||||||
@ -109,6 +109,8 @@ $main::makefs = "mke2fs -F -m0 -i8192";
|
|||||||
#
|
#
|
||||||
# 1.2.13 - 09/28/2001
|
# 1.2.13 - 09/28/2001
|
||||||
# * Renamed "lilo" Boot method to "2 disk compression."
|
# * Renamed "lilo" Boot method to "2 disk compression."
|
||||||
|
# * Add three new entry fields to manage kernel modules, and
|
||||||
|
# made important changes to the 2 disk compression code.
|
||||||
# * Advanced Section is now Advanced Boot Section (ABS).
|
# * Advanced Section is now Advanced Boot Section (ABS).
|
||||||
# * Advanced Root Section (ARS) added. Includes root device and
|
# * Advanced Root Section (ARS) added. Includes root device and
|
||||||
# size, root filesystem name with Save or Save As, filesystem
|
# size, root filesystem name with Save or Save As, filesystem
|
||||||
@ -2700,22 +2702,37 @@ sub initrd_size {
|
|||||||
$initrd_size = $initrd_size + ((stat($path))[12]/2);
|
$initrd_size = $initrd_size + ((stat($path))[12]/2);
|
||||||
unlink($path) if $value == 1;
|
unlink($path) if $value == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# The modules directory has to be removed here.
|
||||||
|
return if
|
||||||
|
errrm(sys("rmdir $tmp/initrd_mnt/lib/modules/$kernel_version")) == 2;
|
||||||
|
return if
|
||||||
|
errrm(sys("rmdir $tmp/initrd_mnt/lib/modules")) == 2;
|
||||||
|
return if
|
||||||
|
errrm(sys("rmdir $tmp/initrd_mnt/lib/")) == 2;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# This and libs should be user accessible
|
# This and libs should be user accessible
|
||||||
# add other executables here
|
# add other executables here
|
||||||
my @initrd_stuff = qw(ash gzip mount umount modprobe);
|
my @initrd_stuff = qw(ash gzip mount umount);
|
||||||
if (@modules) {
|
if (@modules) {
|
||||||
@initrd_stuff = qw(ash gzip mount umount modprobe);
|
@initrd_stuff = qw(ash gzip mount umount modprobe insmod);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@initrd_stuff = qw(ash gzip mount umount);
|
@initrd_stuff = qw(ash gzip mount umount);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (@initrd_stuff) {
|
foreach (@initrd_stuff) {
|
||||||
($path,$value) = stripper(find_file_in_path($_),"bin");
|
if ( !readlink($_) ) {
|
||||||
$initrd_size = $initrd_size + ((stat($path))[12]/2);
|
($path,$value) = stripper(find_file_in_path($_),"bin");
|
||||||
unlink($path) if $value == 1;
|
$initrd_size = $initrd_size + ((stat($path))[12]/2);
|
||||||
|
unlink($path) if $value == 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$initrd_size = $initrd_size +
|
||||||
|
length(readlink(find_file_in_path($_)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($compress eq "bzip2" && -e find_file_in_path($compress)) {
|
if ($compress eq "bzip2" && -e find_file_in_path($compress)) {
|
||||||
@ -2817,7 +2834,7 @@ sub initrd {
|
|||||||
pb($I,2);
|
pb($I,2);
|
||||||
# no need to enter y every time .. could use -F
|
# no need to enter y every time .. could use -F
|
||||||
my $error;
|
my $error;
|
||||||
open(T,"|mke2fs -m0 -i8192 $tmp/$initrd >/dev/null 2>&1") or
|
open(T,"|mke2fs -F -m0 -i8192 $tmp/$initrd >/dev/null 2>&1") or
|
||||||
($error = error("Can not make ext2 filesystem on initrd.\n"));
|
($error = error("Can not make ext2 filesystem on initrd.\n"));
|
||||||
return "ERROR" if $error && $error eq "ERROR";
|
return "ERROR" if $error && $error eq "ERROR";
|
||||||
print T "y\n"; close(T);
|
print T "y\n"; close(T);
|
||||||
@ -2862,7 +2879,7 @@ sub initrd {
|
|||||||
mkpath("$tmp/initrd_mnt/lib/modules/$kernel_version");
|
mkpath("$tmp/initrd_mnt/lib/modules/$kernel_version");
|
||||||
|
|
||||||
foreach my $stuff (@modules) {
|
foreach my $stuff (@modules) {
|
||||||
($path,$value) = stripper($stuff,"bin");
|
($path,$value) = stripper($stuff,"mod");
|
||||||
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
||||||
if (!$path) {
|
if (!$path) {
|
||||||
info(1,"gBootRoot Error: Couldn't find $stuff\n");
|
info(1,"gBootRoot Error: Couldn't find $stuff\n");
|
||||||
@ -2881,25 +2898,27 @@ sub initrd {
|
|||||||
info(0, ".. the bins\n");
|
info(0, ".. the bins\n");
|
||||||
my @initrd_stuff;
|
my @initrd_stuff;
|
||||||
if (@modules) {
|
if (@modules) {
|
||||||
@initrd_stuff = qw(ash gzip mount umount modprobe);
|
@initrd_stuff = qw(ash gzip mount umount modprobe insmod);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@initrd_stuff = qw(ash gzip mount umount);
|
@initrd_stuff = qw(ash gzip mount umount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Will put the stuff in sbin because the is where the kernel looks for
|
||||||
|
# modprobe.
|
||||||
foreach (@initrd_stuff) {
|
foreach (@initrd_stuff) {
|
||||||
($path,$value) = stripper(find_file_in_path($_),"bin");
|
($path,$value) = stripper(find_file_in_path($_),"bin");
|
||||||
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
||||||
if (!$path) {
|
if (!$path) {
|
||||||
info(1,"gBootRoot Error: Couldn't find $_\n");
|
info(1,"gBootRoot Error: Couldn't find $_\n");
|
||||||
}
|
}
|
||||||
return if errcp(sys("$tool $path $tmp/initrd_mnt/bin")) == 2;
|
return if errcp(sys("$tool $path $tmp/initrd_mnt/sbin")) == 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($compress eq "bzip2" && -e find_file_in_path($compress)) {
|
if ($compress eq "bzip2" && -e find_file_in_path($compress)) {
|
||||||
($path,$value) = stripper(find_file_in_path($compress),"bin");
|
($path,$value) = stripper(find_file_in_path($compress),"bin");
|
||||||
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
||||||
return if errcp(sys("$tool $path $tmp/initrd_mnt/bin")) == 2;
|
return if errcp(sys("$tool $path $tmp/initrd_mnt/sbin")) == 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Testing if init is sufficient for grabbing the correct libraries for the
|
# Testing if init is sufficient for grabbing the correct libraries for the
|
||||||
@ -3187,7 +3206,8 @@ mtab_window($dialog,$error,$count) if $error == 0;
|
|||||||
# Keep asking until they are.
|
# Keep asking until they are.
|
||||||
if ($error == 1) {
|
if ($error == 1) {
|
||||||
destroy $mtab;
|
destroy $mtab;
|
||||||
sys("mke2fs -m0 -i8192 $entry_advanced[0] $size");
|
# $size has to be determined by boot disk or root disk
|
||||||
|
sys("mke2fs -F -m0 -i8192 $entry_advanced[0] $size");
|
||||||
if ($? != 0) {
|
if ($? != 0) {
|
||||||
$dialog = "gBootRoot: ERROR: You need to insert a disk\n";
|
$dialog = "gBootRoot: ERROR: You need to insert a disk\n";
|
||||||
mtab_window($dialog,$error,$count);
|
mtab_window($dialog,$error,$count);
|
||||||
@ -3212,7 +3232,7 @@ sub initrd_heredoc {
|
|||||||
# Here's where the initrd is put together using a loop device
|
# Here's where the initrd is put together using a loop device
|
||||||
# HEREDOC
|
# HEREDOC
|
||||||
my $initrd_exec = << "INITRD";
|
my $initrd_exec = << "INITRD";
|
||||||
#!/bin/ash
|
#!/sbin/ash
|
||||||
|
|
||||||
export PATH=/bin:/sbin:/usr/bin:
|
export PATH=/bin:/sbin:/usr/bin:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user