- run linuxrc in linemode on s390
[opensuse:installation-images.git] / bin / mk_root
1 #! /usr/bin/perl
2
3 # Create a root image that can be used on a bootable CD.
4 #
5 # Source files and the file list are taken from data/root; the final
6 # image is stored in images/root.
7 #
8 # Usage:        mk_root
9
10 =head1 mk_root
11
12 C<mk_root> creates a C<root> image (not compressed).
13 This image is intended to go onto a bootable CD.
14
15 The files to go into the root image are taken from
16 C<data/root/root.file_list>.
17
18 The final image is stored as C<images/root>.
19
20 =cut
21
22
23 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
24 # the usual fuss...
25
26 BEGIN { unshift @INC, ( $0 =~ /(.*?)((?<![^\/])bin\/)?[^\/]+$/ )[0] . "lib" }
27 use ReadConfig;
28 use MakeExt2Image;
29 use AddFiles;
30 use Conv2Image;
31
32 die "usage: $Script\n" if @ARGV;
33
34
35 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
36 # some config data
37
38 $srcdir = "${DataPath}root";
39 $tmpdir = "${BasePath}tmp/root";
40 # $tmpinitrd = "${BasePath}tmp/initrd";
41 $image = "${ImagePath}root";
42
43 # leave that much space
44 $extra_size = 500;              # kbyte
45 $extra_inodes = 100;
46
47 # just make them large enough
48 $start_size = 150000;             # kbyte
49 $start_inodes = 5000;
50
51 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
52 # now we really start...
53
54 $debug = exists($ENV{'debug'}) ?  $ENV{'debug'} : "";
55 $use_cramfs = exists($ENV{'use_cramfs'}) ? $ENV{'use_cramfs'} : 1;
56 $uncompressed_root = exists($ENV{'uncompressed_root'}) ? $ENV{'uncompressed_root'} : "";
57
58
59 if($ENV{'keeproot'} != 1) {
60   # clean up
61   if(-d($tmpdir)) {
62     SUSystem "rm -rf $tmpdir" and die "$Script: failed to remove old $tmpdir";
63   }
64
65   mkdir $tmpdir || die "$Script: failed to create $tmpdir";
66
67   AddFiles $tmpdir, "${srcdir}/root.file_list", $srcdir or
68     die "$Script: failed to setup root image";
69
70   print "fix locale...\n";
71   SUSystem "fix_locale $tmpdir";
72   print "fix permissions of directories...\n";
73   SUSystem "fix_perms $tmpdir";
74   print "strip everything...\n";
75   SUSystem "strip_dir $tmpdir";
76
77   print "running ldconfig...";
78   SUSystem "ldconfig -r $tmpdir";
79   die "$Script: failed to run ldconfig" unless -f "$tmpdir/etc/ld.so.cache";
80
81   if($debug =~ /\bignore\b/ || $debug =~ /\bignorelibs\b/) {
82     system "check_libs $tmpdir" and
83       warn "$Script: error in shared lib config, please fix\n";
84   }
85   else {
86     system "check_libs $tmpdir" and
87       die "$Script: error in shared lib config, please fix\n";
88   }
89
90 #  if(!exists($ENV{'with_yast2'}) || $ENV{'with_yast2'} ne 'no') {
91 #    if($debug =~ /\bignore\b/) {
92 #      system "yast2-deps" and
93 #        warn "$Script: error in yast2 package list, please fix\n";
94 #    }
95 #    else {
96 #      system "yast2-deps" and
97 #        die "$Script: error in yast2 package list, please fix\n";
98 #    }
99 #  }
100
101 }
102
103 if($use_cramfs) {
104   Conv2Image $image, $tmpdir, 'cramfs';
105   die "$Script: $!" unless rename $image, "$image.cramfs";
106   $i = -s "$image.cramfs";
107   print "$Script: created \"$image.cramfs\" ($i bytes)\n";
108 }
109
110 if($uncompressed_root) {
111   Conv2Image $image, $tmpdir, 'ext2', $start_size, $start_inodes, $extra_size, $extra_inodes;
112 }
113