Changeset 701


Ignore:
Timestamp:
Apr 18, 2008, 10:13:36 AM (12 years ago)
Author:
fasma
Message:

Draklive was using nash wich doesn't work in CM12

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/draklive/trunk/draklive

    r660 r701  
    3333use Pod::Usage;
    3434use File::Temp;
    35 use IPC::Open3;
    36 use IO::Select;
    37 use IO::Handle;
    3835
    3936my $dir_distrib_sqfs = {
     
    165162                grep { $_ } get_media_setting($media, 'mount_options'),
    166163            );
    167             'nash-mount' . if_(@mount_options, " -o " . join(",", @mount_options)) . " -t " . get_media_setting($media, 'fs') .
     164            'mount' . if_(@mount_options, " -o " . join(",", @mount_options)) . " -t " . get_media_setting($media, 'fs') .
    168165              " " . get_media_source_for_nash($media) . " $live->{prefix}{live}{mnt}$live->{prefix}{media}{mnt}";
    169166        },
     
    264261            (
    265262                "/bin/losetup $dir->{loop} $live->{prefix}{live}{mnt}$live->{prefix}{media}{mnt}${media_loopbacks}$dir->{path}",
    266                 "nash-mount -o ro -t squashfs $dir->{loop} $live->{prefix}{live}{mnt}$dir->{mountpoint}",
     263                "mount -o ro -t squashfs $dir->{loop} $live->{prefix}{live}{mnt}$dir->{mountpoint}",
    267264            );
    268265        },
     
    296293                "losetup $dir->{loop} $live->{prefix}{live}{mnt}$live->{prefix}{media}{mnt}${media_loopbacks}$dir->{path}",
    297294                qq(sh -c "$fsck -a || $fsck -y"),
    298                 "nash-mount -t $dir->{fs} $dir->{loop} $live->{prefix}{live}{mnt}$dir->{mountpoint}",
     295                "mount -t $dir->{fs} $dir->{loop} $live->{prefix}{live}{mnt}$dir->{mountpoint}",
    299296            );
    300297        },
     
    308305            (
    309306             qq(sh -c 'dev=`blkid -l -t $dir->{path} -o device`; [ -z "\$dev" ] || $fsck -a \$dev || $fsck -y \$dev'),
    310              "nash-mount -t $dir->{fs} $dir->{path} $live->{prefix}{live}{mnt}$dir->{mountpoint}",
     307             "mount -t $dir->{fs} $dir->{path} $live->{prefix}{live}{mnt}$dir->{mountpoint}",
    311308            );
    312309        },
     
    316313            my ($live, $dir) = @_;
    317314            my $mnt = $live->{prefix}{live}{mnt} . $dir->{mountpoint};
    318             my $cmd = "nash-mount -t tmpfs $mnt $mnt";
     315            my $cmd = "mount -t tmpfs none $mnt";
    319316            $dir->{fallback} ? qq(sh -c 'if ! grep -q " $mnt " /proc/mounts; then $cmd; fi') : $cmd;
    320317        },
     
    361358    my ($foreach, @command) = @_;
    362359    print STDERR "running " . join(' ', @command) . "\n";
    363     my $pid = open3(my $cmd_in, my $cmd_out, undef, @command);
    364     my $selector = IO::Select->new($cmd_out);
    365     while (my @ready = $selector->can_read) {
    366         foreach my $fh (@ready) {
    367             local $_ = scalar<$fh>;
    368             return if /^open3:/;
    369             $foreach->();
    370             $selector->remove($fh) if eof($fh);
    371         }
    372     }
    373     close($cmd_out);
    374     close($cmd_in);
    375     waitpid($pid, 0) > 0;
     360    open(my $OUTPUT, '-|', @command);
     361    local $_; #- avoid outside $_ to be overwritten
     362    $foreach->() while <$OUTPUT>;
     363    close $OUTPUT;
    376364}
    377365
     
    444432
    445433    mkdir_p($initrd_tree . $_) foreach
    446       qw(/bin /dev /proc /sys /tmp),
     434      qw(/bin /dev /modules /proc /sys /tmp),
    447435      map { $live->{prefix}{live}{mnt} . $_ }
    448436        $live->{prefix}{media}{mnt},
     
    503491      ($live->{mount}{overlay} ? @{$overlay{$live->{mount}{overlay}}{modules} || []} : ());
    504492
     493    my @additional_modules = map { m!([^/]+)\.ko! } @{$live->{system}{additional_modules}};
     494
    505495    my @missing = sort(difference2($extra_missing, \@additional_modules));
    506496    @missing and die "missing mandatory modules:\n" . join("\n", @missing, '');
    507497
    508     my @additional_modules = map { m!([^/]+)\.ko! } @{$live->{system}{additional_modules}};
    509     @$extra_modules = difference2($extra_modules, \@additional_modules);
    510     if (@{$live->{system}{exclude_modules} || []}) {
     498    if ($live->{system}{exclude_modules}) {
    511499        print STDERR "excluding modules: " . join(' ', @{$live->{system}{exclude_modules}}) . "\n";
    512500        @$_ = difference2($_, $live->{system}{exclude_modules}) foreach $storage_modules, $extra_modules;
    513501    }
    514502
    515     mkdir_p($initrd_tree . $kernel_root . "/kernel");
    516503    my @modules = (@$storage_modules, @$extra_modules);
    517     my @modules_closure = uniq(map { list_modules::dependencies_closure($_) } @modules);
    518     foreach my $m (@modules_closure) {
     504    my @module_deps = uniq(map { list_modules::dependencies_closure($_) } @modules);
     505    foreach my $m (@module_deps, @modules) {
    519506        my $full = list_modules::modname2path($m);
    520         mkdir_p(dirname($initrd_tree . $full));
    521         cp_f(get_system_root($live) . $full, $initrd_tree . $full);
    522     }
    523     foreach my $f (@{$live->{system}{additional_modules}}) {
    524         my $m = basename($f);
    525         run_program::run('gzip', '>', $initrd_tree . $kernel_root . "/kernel/$m.gz", '-c', $live->{settings}{config_root} . '/' . $f);
    526     }
    527     run_('depmod', '-b', $initrd_tree, $kernel);
    528 
    529     mkdir_p($initrd_tree . "/etc/blkid"); #- for nash and showlabels cache
     507        my $f = list_modules::modname2filename($m);
     508        run_program::run('gzip', '>', $initrd_tree . "/modules/$f.ko", '-dc', get_system_root($live) . $full);
     509        #- gzopen transparently opens uncompressed files
     510        symlink($f . ".ko", $initrd_tree . "/modules/$f.ko.gz");
     511    }
     512    cp_f((map { $live->{settings}{config_root} . '/' . $_ } @{$live->{system}{additional_modules}}), $initrd_tree . "/modules/");
     513
     514    cp_f(get_system_root($live) . $kernel_root . "/" . $_, $initrd_tree . "/modules/")
     515      foreach qw(modules.alias modules.dep modules.description);
     516    substInFile { s![^ ]*/!!g; s!\.ko!!g; s!\.gz!!g } $initrd_tree . "/modules/modules.dep";
     517
    530518    mkdir_p($initrd_tree . "/lib/module-init-tools");
    531519    cp_f(get_system_root($live) . "/lib/module-init-tools/ldetect-lst-modules.alias", $initrd_tree . "/lib/module-init-tools");
     
    538526
    539527    my @extra_modules_closure = map { list_modules::modname2filename($_) }
    540       uniq(map { list_modules::dependencies_closure($_) }  @$extra_modules);
     528      map { list_modules::dependencies_closure($_) }  @$extra_modules;
    541529    create_initrd_scriptlet($live, $media, @extra_modules_closure, @additional_modules);
    542530    compress_initrd_tree($live, $media);
     
    558546                          "#!/bin/nash",
    559547                          #- required for labels and ps
    560                           "nash-mount -t proc /proc /proc",
     548                          "mount -t proc none /proc",
    561549                          #- required for cdrom labels
    562                           "nash-mount -t sysfs /sys /sys",
    563                           (map { join(" ", "probe-modules", list_modules::filename2modname($_), grep { $_ } $live->{system}{module_options}{$_}) } @modules),
    564                           "probe-modules --$media->{storage}",
     550                          "mount -t sysfs none /sys",
     551                          (map { join(" ", "insmod", "/modules/$_.ko", grep { $_ } $live->{system}{module_options}{$_}) } @modules),
     552                          "probe-modules $media->{storage}",
    565553                          if_($rrpt_dev,
    566554                              "echo *** Waiting for new partitions on device ${rrpt_dev} ***",
     
    569557                          if_($pre, deref_array($pre)),
    570558                          "mkdevices /dev",
    571                           "showlabels --removable",
    572559                          $storage_fs{exists $storage_fs{$fs}{mount} ? $fs : 'generic'}{mount}->($live, $media),
    573560                          (map { $loop{$_->{type}}{mount}->($live, $_) } @$mount_first, @$mount_last),
     
    575562                          "echo 0x0100 > /proc/sys/kernel/real-root-dev",
    576563                          "umount /sys",
    577                           "sh -c 'umount /proc/bus/usb 2>/dev/null'",
    578564                          "umount /proc",
    579565                          "pivot_root $target $target/initrd",
     
    589575
    590576    my $initrd_tree = get_builddir($live) . $live->{prefix}{build}{initrd} . '/' . $media->{storage};
    591     my $size = chomp_(run_program::get_stdout("du -ks $initrd_tree | awk '{print \$1}'"));
    592     my $inodes = chomp_(run_program::get_stdout("find $initrd_tree | wc -l")) + 100;
    593     my $initrd_size = $size + 350 + int($inodes / 10); #- 10 inodes needs 1K
     577    my $size = run_program::get_stdout("du -ks $initrd_tree | awk '{print \$1}'") + 250;
     578    my $inodes = run_program::get_stdout("find $initrd_tree | wc -l") + 1250;
     579    $size = int($size + $inodes / 10) + 1; #- 10 inodes needs 1K
    594580    my $initrd = get_builddir($live) . $live->{prefix}{build}{boot} . get_initrd_path($media);
    595581    $initrd =~ s/.gz$//;
    596582
    597583    mkdir_p(dirname($initrd));
    598     run_('dd', 'if=/dev/zero', "of=$initrd", 'bs=1k', "count=$initrd_size");
     584    run_('dd', 'if=/dev/zero', "of=$initrd", 'bs=1k', "count=$size");
    599585    run_('mke2fs', '-q', '-m', 0, '-F', '-N', $inodes, '-s', 1, $initrd);
    600586    mkdir_p($live->{mnt});
     
    602588    cp_af(glob("$initrd_tree/*"), $live->{mnt});
    603589    rm_rf($live->{mnt} . "/lost+found");
    604     my $left = chomp_(run_program::get_stdout("df -Pk $live->{mnt} | tail -n 1 | awk '{ print \$4 }'"));
    605590    run_('umount', $live->{mnt});
    606     $left < 200 and die "not enough room to create initrd (only ${left}K left)\n";
    607591    run_('gzip', '-f', '-9', $initrd);
    608592}
     
    627611    my ($live) = @_;
    628612    join(' ',
     613         'fastboot', #- needed to avoid fsck
    629614         if_($live->{system}{vga_mode},
    630615             'splash=silent',
     
    10831068        mkdir_p(dirname($dest));
    10841069    }
    1085     my $progress = progress_start(100, time());
    1086     my $in_progress;
    1087     autoflush STDOUT 1;
    1088     run_foreach(sub {
    1089                     if (/^\s*([0-9.]+)%\s*done,/) {
    1090                         $progress->{current} = int($1);
    1091                         progress_show($progress, time());
    1092                         $in_progress = 1;
    1093                     } else {
    1094                         print "\n" if $in_progress;
    1095                         print $_;
    1096                         $in_progress = 0;
    1097                     }
    1098                 },
    1099          'genisoimage', '-pad', '-l', '-R', '-J',
     1070    run_('genisoimage', '-pad', '-l', '-R', '-J',
    11001071         '-V', $label, #'-A', $application, '-p', $preparer, '-P', $publisher,
    11011072         '-b', 'isolinux/isolinux.bin',
     
    11221093         ),
    11231094    ) or die "unable to run genisoimage\n";
    1124     autoflush STDOUT 0;
    1125     progress_end();
    11261095    if ($dest) {
    11271096        my $dir = dirname($dest);
    11281097        my $filename = basename($dest);
    1129         run_('mkcd', '>', '/dev/null', '2>', '/dev/null', '--addmd5', $dest);
    11301098        run_({ chdir => $dir }, 'md5sum', '>', $dest . '.md5', $filename);
    11311099        run_({ chdir => $dir }, 'sha1sum', '>', $dest . '.sha1', $filename);
     1100        run_('mkcd', '--addmd5', $dest);
    11321101    }
    11331102}
     
    15891558my @all = qw(install boot loop master);
    15901559
    1591 die "you must be root to run this program\n" if $>;
     1560require_root_capability();
    15921561
    15931562my (%live, %opts);
Note: See TracChangeset for help on using the changeset viewer.