mirror of
https://github.com/fspc/gbootroot.git
synced 2025-02-23 17:13:22 -05:00
If the root_filesystem in bz2, then bzip2 will be used as the library check
in initrd_size and initrd, since it now has a separate dep.
This commit is contained in:
parent
9694c068b6
commit
c8f5c34cd5
81
gbootroot
81
gbootroot
@ -57,6 +57,8 @@
|
|||||||
# GNU/Linux
|
# GNU/Linux
|
||||||
# Linus Torvalds <torvalds@transmeta.com>
|
# Linus Torvalds <torvalds@transmeta.com>
|
||||||
#
|
#
|
||||||
|
# lsMode
|
||||||
|
# M-J. Dominus <mjd-perl-lsmode-id-i0k+gzzokd+@plover.com>
|
||||||
#
|
#
|
||||||
# http://gbootroot.sourceforge.net
|
# http://gbootroot.sourceforge.net
|
||||||
|
|
||||||
@ -2567,26 +2569,44 @@ sub initrd_size {
|
|||||||
unlink($path) if $value == 1;
|
unlink($path) if $value == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $lib_tester;
|
||||||
|
if ($bz2_toggle->active && -x find_file_in_path("bzip2") ) {
|
||||||
|
|
||||||
|
$lib_tester = find_file_in_path("bzip2");
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
$lib_tester = find_file_in_path("init");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
my $dir;
|
||||||
|
|
||||||
# lib sizes This is going to be improved later with library_dependencies
|
# lib sizes This is going to be improved later with library_dependencies
|
||||||
open(L,"ldd /sbin/init|") or die "Oops, no init could be found :)\n"; # safe to use ldd
|
open(L,"ldd $lib_tester|") or die "Oops, no init could be found :)\n"; # safe to use ldd
|
||||||
while (<L>) {
|
while (<L>) {
|
||||||
$lib = (split(/=>/,$_))[0];
|
my $place;
|
||||||
|
($lib,$place) = (split(/=>/,$_))[0,1];
|
||||||
|
$place = (split(" ",$place))[0];
|
||||||
$lib =~ s/\s+//;
|
$lib =~ s/\s+//;
|
||||||
$lib = basename($lib);
|
$lib = basename($lib);
|
||||||
$lib =~ s/\s+$//;
|
$lib =~ s/\s+$//;
|
||||||
open (SL,"ls -l /lib/$lib|") or die "humm: $!\n";
|
$dir = dirname($place);
|
||||||
|
|
||||||
|
open (SL,"ls -l $dir/$lib|") or die "humm: $!\n";
|
||||||
while (<SL>) {
|
while (<SL>) {
|
||||||
# symbolic link
|
# symbolic link
|
||||||
if (-l "/lib/$lib") {
|
if (-l "$dir/$lib") {
|
||||||
$what = (split(/\s+/,$_))[10];
|
$what = (split(/\s+/,$_))[10];
|
||||||
$initrd_size = $initrd_size + 1;
|
$initrd_size = $initrd_size + 1;
|
||||||
($path,$value) = stripper("/lib/$lib","lib");
|
($path,$value) = stripper("$dir/$lib","lib");
|
||||||
$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;
|
||||||
}
|
}
|
||||||
# no symbolic link
|
# no symbolic link
|
||||||
else {
|
else {
|
||||||
($path,$value) = stripper("/lib/$lib","lib");
|
($path,$value) = stripper("$dir/$lib","lib");
|
||||||
$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;
|
||||||
}
|
}
|
||||||
@ -2678,6 +2698,7 @@ sub initrd {
|
|||||||
# This and libs should be user accessible
|
# This and libs should be user accessible
|
||||||
info(0, ".. the bins\n");
|
info(0, ".. the bins\n");
|
||||||
my @initrd_stuff = qw(ash gzip mount umount);
|
my @initrd_stuff = qw(ash gzip mount umount);
|
||||||
|
|
||||||
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");
|
||||||
@ -2695,30 +2716,51 @@ sub initrd {
|
|||||||
|
|
||||||
# Testing if init is sufficient for grabbing the correct libraries for the
|
# Testing if init is sufficient for grabbing the correct libraries for the
|
||||||
# executables immediately above. This could be modified to test a
|
# executables immediately above. This could be modified to test a
|
||||||
# list of executables.
|
# list of executables. Now bzip2 uses libbz2.so.1.0, so if bzip2 is
|
||||||
|
# present on the system this will be the tester instead, and size
|
||||||
|
# has to be figured out differently.
|
||||||
info(0, ".. the libs\n");
|
info(0, ".. the libs\n");
|
||||||
open(L,"ldd /sbin/init|") or die "Oops, no init could be found :)\n"; # safe to use ldd, this is going to be fixed later with library_dependencies
|
|
||||||
|
my $lib_tester;
|
||||||
|
if ($bz2_toggle->active && -x find_file_in_path("bzip2") ) {
|
||||||
|
|
||||||
|
$lib_tester = find_file_in_path("bzip2");
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
$lib_tester = find_file_in_path("init");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
my $dir;
|
||||||
|
|
||||||
|
open(L,"ldd $lib_tester|") or die "Oops, no $lib_tester could be found :)\n"; # safe to use ldd, this is going to be fixed later with library_dependencies
|
||||||
while (<L>) {
|
while (<L>) {
|
||||||
$lib = (split(/=>/,$_))[0];
|
my $place;
|
||||||
|
($lib,$place) = (split(/=>/,$_))[0,1];
|
||||||
|
$place = (split(" ",$place))[0];
|
||||||
$lib =~ s/\s+//;
|
$lib =~ s/\s+//;
|
||||||
$lib = basename($lib);
|
$lib = basename($lib);
|
||||||
$lib =~ s/\s+$//;
|
$lib =~ s/\s+$//;
|
||||||
open (SL,"ls -l /lib/$lib|") or die "humm: $!\n";
|
$dir = dirname($place);
|
||||||
|
info(0,"$dir/$lib\n");
|
||||||
|
open (SL,"ls -l $dir/$lib|") or die "humm: $!\n";
|
||||||
while (<SL>) {
|
while (<SL>) {
|
||||||
# symbolic link
|
# symbolic link
|
||||||
if (-l "/lib/$lib") {
|
if (-l "$dir/$lib") {
|
||||||
$what = (split(/\s+/,$_))[10];
|
$what = (split(/\s+/,$_))[10];
|
||||||
($path,$value) = stripper("/lib/$lib","lib");
|
($path,$value) = stripper("$dir/$lib","lib");
|
||||||
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
||||||
return if errcp(sys("$tool $path $tmp/initrd_mnt/lib")) == 2;
|
return if errcp(sys("$tool $path $tmp/initrd_mnt$dir")) == 2;
|
||||||
($path,$value) = stripper("/lib/$what","lib");
|
($path,$value) = stripper("$dir/$what","lib");
|
||||||
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
||||||
return if errcp(sys("$tool $path $tmp/initrd_mnt/lib")) == 2;
|
return if errcp(sys("$tool $path $tmp/initrd_mnt$dir")) == 2;
|
||||||
}
|
}
|
||||||
# no symbolic link
|
# no symbolic link
|
||||||
else {
|
else {
|
||||||
($path,$value) = stripper("/lib/$lib","lib");
|
($path,$value) = stripper("$dir/$lib","lib");
|
||||||
return if errcp(sys("cp -a $path $tmp/initrd_mnt/lib")) == 2;
|
return if errcp(sys("cp -a $path $tmp/initrd_mnt$dir")) == 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3007,6 +3049,9 @@ echo -n Unmounting $device ...
|
|||||||
umount /mnt
|
umount /mnt
|
||||||
echo done.
|
echo done.
|
||||||
|
|
||||||
|
# Using change_root, eventually may change to pivot_root or
|
||||||
|
# give the user to choice.
|
||||||
|
|
||||||
echo Changing to the new root.
|
echo Changing to the new root.
|
||||||
echo 257 >/proc/sys/kernel/real-root-dev
|
echo 257 >/proc/sys/kernel/real-root-dev
|
||||||
|
|
||||||
@ -3041,7 +3086,7 @@ compact
|
|||||||
|
|
||||||
# bootdisk
|
# bootdisk
|
||||||
image = kernel
|
image = kernel
|
||||||
append = "load_ramdisk = 1 debug $entry_advanced[2]"
|
append = "load_ramdisk=1 debug"
|
||||||
initrd = $initrd
|
initrd = $initrd
|
||||||
root = $device
|
root = $device
|
||||||
label = bootdisk
|
label = bootdisk
|
||||||
|
Loading…
x
Reference in New Issue
Block a user