diff options
-rw-r--r-- | globetrotter/README | 9 | ||||
-rw-r--r-- | globetrotter/doc/BUILD | 4 | ||||
-rw-r--r-- | globetrotter/hwprofile | 7 | ||||
-rwxr-xr-x | globetrotter/make_live | 89 | ||||
-rw-r--r-- | globetrotter/move.pm | 6 |
5 files changed, 84 insertions, 31 deletions
diff --git a/globetrotter/README b/globetrotter/README index 3c6509b36..7052212b3 100644 --- a/globetrotter/README +++ b/globetrotter/README @@ -16,15 +16,14 @@ updated from cooker: - misc bug fixes: o drakconf-10-13mdk - o {drakxtools,harddrake}*-10-34mdk - o mdkonline-1.0-7mdk + o {drakxtools,harddrake}*-10-34.2mdk + o mdkonline-1.1-2.1.100mdk o menudrake-0.7.4-8mdk - o netprofile-0.6.3-1.1mdk (for fixed profiles) o perl-Libconf*-0.33-2mdk - o rpmdrake-2.1.3-4mdk + o rpmdrake-2.1.3-5mdk o initscripts-7.06-49.1mdk: * usb starting when usb host drivers were loaded by initrd - * globetrotter support + * fix larsen on laptops - root=LABEL=foobar and boot from USB support: o mkinitrd-3.5.18-10mdk o bootloader-utils-1.7-1mdk diff --git a/globetrotter/doc/BUILD b/globetrotter/doc/BUILD index 5dbba396e..108c44650 100644 --- a/globetrotter/doc/BUILD +++ b/globetrotter/doc/BUILD @@ -19,6 +19,10 @@ lftp -u a,a ftp://kameha:/~/../nplanel/rpm/prop/RPMS/i586/ doble [A-Z] | xargs rm -f doble [a-g] | xargs rm -f doble [h-z] | xargs rm -f +- run "gendistrib --noclean /export" - plug the LaCie disk +- check out the whole gi cvs module +- run "C_DRAKX=1 make c" in gi/perl-install +- go into gi/globetrotter - run make_live --partition --format --install --post in order to prepare the disk diff --git a/globetrotter/hwprofile b/globetrotter/hwprofile index 32cb99efe..b22ff0c8b 100644 --- a/globetrotter/hwprofile +++ b/globetrotter/hwprofile @@ -28,7 +28,9 @@ use network::netconnect; my $id = "MDK" . md5_hex(join("", (map { (split)[1] } cat_("/proc/bus/pci/devices")))); my $netcnx = {}; -my $is_first_boot = !glob_("/etc/netprofile/profiles/MDK*"); + +# first boot wizard: +!glob_("/etc/netprofile/profiles/MDK*") and system('/usr/sbin/mdkmove'); # create hardware profile if needed: if (! -d "/etc/netprofile/profiles/$id") { @@ -40,8 +42,5 @@ if (! -d "/etc/netprofile/profiles/$id") { $netcnx->{PROFILE} = $id; eval { network::netconnect::set_profile($netcnx) }; -# first boot wizard: -$is_first_boot and system('/usr/sbin/mdkmove'); - # redo ldconfig cache for libGL (since we've both ATI and NVIDIA GLX packages): system("/sbin/ldconfig"); diff --git a/globetrotter/make_live b/globetrotter/make_live index 4f5a6e2ef..c488008b3 100755 --- a/globetrotter/make_live +++ b/globetrotter/make_live @@ -31,6 +31,13 @@ foreach (@ARGV) { } } +my $rescue; + +if ($0 =~ /restore_globetrotter/) { + %options = (install => 1, post => 1); + $rescue = 1; +} + @ARGV = @new_ARGV; my @suggestions = ( @@ -52,6 +59,7 @@ sub get_hds() { my $all_hds = fsedit::get_hds(); my $other; ($all_hds->{hds}, $other) = partition { $_->{usb_description} eq 'LaCie|LaCie Hard Drive USB' } @{$all_hds->{hds}}; + die "I did not found any LaCie disk\n" if !$all_hds->{hds}[0]; $all_hds, $all_hds->{hds}[0]; # $other } @@ -95,15 +103,29 @@ sub formatdisk { run_program::get_stdout('service', 'usb', 'start'); } +my $pkg_dev; +if ($rescue) { + system("mount -t tmpfs none /tmp"); + # let be able to see USB devices: + system("mount -t usbfs none /proc/bus/usb"); + system("modprobe usb-storage; modprobe sd_mod"); + # let be able to detect SCSI hds: + mkdir("/sys"); + system("mount -t sysfs none /sys"); -my $kernel_version = do { - #my @l = glob_('/export/Mandrake/RPMS/kernel-enterprise-2.6*'); - my @l = glob_('/export/Mandrake/RPMS/kernel-2.6*'); - @l >= 1 or die "can't find kernel"; - @l <= 1 or die "too many kernels"; - first(`rpm -qp --qf '%{name}' $l[0]` =~ /kernel-(.*)/); -}; + my ($all_hds, $hd, $other) = get_hds(); + print "Looking for the package partition\n"; + my @parts = partition_table::get_normal_parts($hd); + my $pkg_dev = find { member(fs::type2fs($_), qw(ext2 ext3)) && chomp_(`e2label /dev/$_->{device} 2>/dev/root`) eq "MDK-PKGS" } @parts; + die "I cannot find the package partition which is needed in order to restore the system!" if is_empty_hash_ref($pkg_dev) || !$pkg_dev->{device}; + my $root = find { member(fs::type2fs($_), qw(ext2 ext3)) && chomp_(`e2label /dev/$_->{device} 2>/dev/root`) eq "MDK-ROOT" } @parts; + $root = find { $_->{device} eq "sda1" } @parts if is_empty_hash_ref($root); + die "I cannot find any hard disk to restore!" if is_empty_hash_ref($root) || !$root->{device}; + print "Please wait, disk reinstallation is in progress, this can take quite some time\n"; + print "Formating $root->{device}\n"; + system("mkfs.ext2 -j /dev/$root->{device} > /dev/null\n"); +} sub installPackages() { local $::testing = undef; @@ -140,7 +162,15 @@ sub installPackages() { }; undef *c::kernel_version; - *c::kernel_version = sub { $kernel_version }; + *c::kernel_version = sub { + #my @l = glob_('/export/Mandrake/RPMS/kernel-enterprise-2.6*'); + my @l = glob_('/export/Mandrake/RPMS/kernel-2.6*'); + @l >= 1 or die "can't find kernel"; + @l <= 1 or die "too many kernels"; + first(`rpm -qp --qf '%{name}' $l[0]` =~ /kernel-(.*)/); + }; + + my $kernel_version = c::kernel_version(); print "INSTALLING\n"; install_any::setPackages(my $o = $::o = @@ -148,6 +178,8 @@ sub installPackages() { prefix => $::prefix, meta_class => 'desktop', default_packages => [ + #- for screenshots: + qw(fb2png), qw(XFree86-server XFree86-xfs XFree86-FBDev), qw(openssh-server), #- fred wants it qw(alsa-utils cdialog newt), @@ -156,6 +188,7 @@ sub installPackages() { qw(acpi acpid), #- so that removing acpi=ht will work qw(mountloop), #- crypted folders qw(mandrake-doc-en mandrake-doc-fr mandrake-doc-drakxtools-en mandrake-doc-drakxtools-fr), + qw(autologin), qw(synaptics), #- network conf: qw(wireless-tools pcmcia-cs), @@ -190,7 +223,7 @@ sub installPackages() { qw(devfsd dynamic harddrake hotplug magicdev mandrake-globetrotter netprofile), qw(gnome2), qw(alsa-utils), - qw(ipw2100 ipw2100_kernel), # ipw2100_kernel-$kernel_version, + qw(ipw2100 ipw2100_kernel ipw2100_kernel-2.6.3.13mdk), # ipw2100_kernel-$kernel_version, #- fonts: qw(XFree86-100dpi-fonts XFree86-75dpi-fonts), qw(fonts-bitmap-tscii fonts-hebrew-elmar), @@ -204,18 +237,21 @@ sub installPackages() { $compssUsersChoice{qq(LOCALES"$_")} = 1 foreach lang::langsLANGUAGE({ all => 1 }); pkgs::setSelectedFromCompssList($o->{packages}, \%compssUsersChoice, 4, 0); - use Data::Dumper; - output("/tmp/pkgs1", Dumper($o->{packages})); + + my $unselect = sub { + my ($pkg) = @_; + my $p = pkgs::packageByName($o->{packages}, $pkg); + pkgs::unselectPackage($o->{packages}, $p) if $p; + }; # unselect some packages whose services fsck up the box and whose services are not enabled by appropriate tools: # (shorewall must be deselected before iptables is) - foreach (qw(at hpoj shorewall iptables ntp tmdns zcip )) { - my $p = pkgs::packageByName($o->{packages}, $_); - pkgs::unselectPackage($o->{packages}, $p) if $p; - } + $unselect->($_) foreach qw(at hpoj shorewall iptables ntp tmdns zcip ); + + # unselect uim since uim IM break first time wizard when selecting english: + $unselect->($_) foreach qw(uim-applet uim libuim0); my @toInstall = pkgs::packagesToInstall($o->{packages}); - output("/tmp/pkgs2", Dumper([ map { $_->name } @toInstall ])); local $ENV{DURING_INSTALL} = 1; $ENV{LD_LIBRARY_PATH} = "/lib:/usr/lib:/usr/X11R6/lib:/usr/lib/qt3/lib"; pkgs::install($::prefix, 0, \@toInstall, $o->{packages}); @@ -268,6 +304,7 @@ my $fstab = [ fsedit::get_all_fstab($all_hds) ]; # we need to mount every fs we want to see into /etc/fstab !!! fs::mount_part($_, $::prefix) foreach sort { $a->{mntpoint} cmp $b->{mntpoint} } @$fstab; +symlink("$::prefix/mnt/packages", "/export") if $rescue; eval { print "Installing packages\n"; @@ -288,6 +325,19 @@ fs::write_fstab($all_hds, $::prefix); append_to_file("$::prefix/etc/fstab", "none /dev/pts devpts mode=0620 0 0"); doRootSubst("$::prefix/etc/fstab"); +my ($home) = grep { $_->{mntpoint} eq "/home" } @parts; +my ($mnt_pkgs) = grep { $_->{mntpoint} eq "/mnt/packages" } @parts; +run_program::run('tune2fs', '-L', "MDK-HOME", "/dev/$home->{device}") if $home; +run_program::run('tune2fs', '-L', "MDK-PKGS", "/dev/$mnt_pkgs->{device}") if $mnt_pkgs; + +substInFile { + s!defaults\s!defaults,ro ! if m!/mnt/packages!; + s!defaults\s!defaults,umask=0000 ! if m!/mnt/share!; + s!/dev/$home->{device}!LABEL=MDK-HOME!g; + s!/dev/$mnt_pkgs->{device}!LABEL=MDK-PKGS!g; +} "$::prefix/etc/fstab"; + + #------------------------------------------------------------------- #- Bootloader print "Configuring bootloader\n"; @@ -352,7 +402,7 @@ if ($options{post}) { push @files, (map { "/etc/X11/$_" } qw(XF86Config XF86Config-4)), (map { "/etc/sysconfig/$_" } qw(keyboard harddrake2/previous_hw harddisks)), (map { "/etc/$_" } qw(modprobe.conf modprobe.devfs modprobe.preload modules modules.conf modules.devfs)), - qw(/etc/asound.state /etc/fstab /etc/ld.so.conf/GL.conf); + qw(/etc/asound.state /etc/fstab /etc/ld.so.conf/GL.conf /etc/shorewall/); output($prof_cfg, join("\n", sort @files)); @@ -399,7 +449,7 @@ unlink $_ foreach glob("$::prefix/core.*"); # -system("rsync -rvltp /export/ $::prefix/mnt/packages/"); +system("rsync -rvltp /export/ $::prefix/mnt/packages/") if !$rescue; unlink $_ foreach glob("$::prefix/var/lib/urpmi/*"); run_program::rooted($::prefix, 'urpmi.addmedia', '-h', 'main', 'file:///mnt/packages/Mandrake/RPMS'); run_program::rooted($::prefix, 'urpmi.addmedia', '-h', 'contrib', 'file:///mnt/packages/Mandrake/RPMS2'); @@ -407,4 +457,5 @@ run_program::rooted($::prefix, 'urpmi.addmedia', '-h', 'contrib', 'file:///mnt/p # for fast test replaying: run_program::rooted($::prefix, 'tar', 'cfj', '/root/etc.tar.bz2', '/etc'); -fs::umount_all($fstab, $::prefix); +system("umount $::prefix/proc"); +eval { fs::umount_all($fstab, $::prefix) } or system("umount $::prefix"); diff --git a/globetrotter/move.pm b/globetrotter/move.pm index c61f3649b..dfd1e6352 100644 --- a/globetrotter/move.pm +++ b/globetrotter/move.pm @@ -1,6 +1,6 @@ package move; # $Id$ -#- Copyright (c) 2004 MandrakeSoft +#- Copyright (c) 2004 Mandrakesoft #- #- This program is free software; you can redistribute it and/or modify #- it under the terms of the GNU General Public License as published by @@ -126,7 +126,7 @@ after_autoconf: eval { &$f() }; $o->ask_warn(N("Error"), [ N("An error occurred, but I don't know how to handle it nicely. -Continue at your own risk."), formatError($@) ]) if $@; +Continue at your own risk."). formatError($@) || $@ ]) if $@; } } system("killall XFree86"); @@ -146,7 +146,7 @@ sub automatic_xconf { local $o->{mouse}{device} = 'mouse'; require Xconfig::default; - $o->{raw_X} = Xconfig::default::configure({ KEYBOARD => 'uk' }, $o->{mouse}); #- using uk instead of us for now to have less warnings + $o->{raw_X} = Xconfig::default::configure(class_discard->new, { KEYBOARD => 'uk' }, $o->{mouse}); #- using uk instead of us for now to have less warnings require Xconfig::main; require class_discard; |