mirror of https://github.com/fspc/gbootroot.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
5.2 KiB
177 lines
5.2 KiB
#!/usr/bin/perl
|
|
|
|
# You will need to get swim at http://www.sourceforge.net/projects/avd
|
|
my $home = "$ENV{HOME}/.gbootroot";
|
|
my $home_yard = "$home/yard";
|
|
my $template_dir = "$home_yard/templates/";
|
|
my $home_yard_replacements = "$home_yard/Replacements";
|
|
my $nodename = `uname -n`; chomp $nodename;
|
|
my $debian_yard = "Debian-$nodename.yard";
|
|
|
|
# You need file-rc, and you may add other extra stuff. These packages were
|
|
# chosen for woody, so you may need something different.
|
|
my @extra_packages = qw(file-rc swim nvi sysklogd netbase tcpd net-tools
|
|
portmap netkit-ping netkit-inetd less perl perl-modules);
|
|
|
|
# And tests will be ran here for file-rc and swim
|
|
# Options: to include or remove docs /usr/share/{doc,man,info}
|
|
|
|
system "swim --search \"Priority: required\" > /dev/null 2>&1";
|
|
my $swim_packages = "swim -qS|";
|
|
my $swim_list = "swim -qSl|";
|
|
$, = " ";
|
|
my $extra_files = "swim -ql @extra_packages|";
|
|
$, = "";
|
|
|
|
open(SWIM,$swim_packages) or die "Couldn't open $?\n";
|
|
my @required_packages = <SWIM>; chomp @required_packages;
|
|
close(SWIM);
|
|
|
|
open(SWIM,$swim_list) or die "Couldn't open $?\n";
|
|
my @required_files = <SWIM>; chomp @required_files;
|
|
close(SWIM);
|
|
|
|
open(SWIM,$extra_files) or die "Couldn't open $?\n";
|
|
my @extra_files = <SWIM>; chomp @extra_files;
|
|
close(SWIM);
|
|
|
|
push(@required_packages,@extra_packages);
|
|
push(@required_files,@extra_files);
|
|
|
|
open(DEBIAN,">$template_dir/$debian_yard")
|
|
or die "Couldn't open $?\n";
|
|
open(FILERC,"/etc/runlevel.conf") or die "No runlevel.conf: $?\n";
|
|
@filerc = <FILERC>;
|
|
close(FILERC);
|
|
|
|
print DEBIAN stuff();
|
|
|
|
my @file_rc;
|
|
foreach (@required_files) {
|
|
if (-e && !-d) {
|
|
if ($ARGV[0] eq "doc") {
|
|
print DEBIAN "$_\n";
|
|
}
|
|
else {
|
|
if (! m,/usr/share/info|/usr/share/man|/usr/share/doc,) {
|
|
print DEBIAN "$_\n";
|
|
}
|
|
}
|
|
if (m,/etc/init\.d,) {
|
|
foreach my $filerc (@filerc) {
|
|
push(@file_rc,$filerc) if $filerc =~ /$_/;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
close(DEBIAN);
|
|
|
|
|
|
# This creates a tweaked runlevel.conf which is easier then trying to figure
|
|
# out which symlinks to use in /etc/rc?d.
|
|
|
|
open(MY_FILERC,">$home_yard_replacements/etc/runlevel.conf")
|
|
or die "Couldn't open $home_yard_replacements/etc/runlevel.conf: $?\n";
|
|
my @sortedrc = map { $_->[1] }
|
|
sort { $a->[0] <=> $b->[0] }
|
|
map { [ (split(/\s/,$_))[0], $_ ] }
|
|
@file_rc;
|
|
print MY_FILERC @sortedrc;
|
|
close(MY_FILERC);
|
|
|
|
sub stuff {
|
|
|
|
$stuff = << "STUFF";
|
|
# This template creates a complete Debian system which is more streamlined
|
|
# than the base.tgz used for normal installations. Once everything is made,
|
|
# you can use user-mode-linux to tweak the system, as well as apt.
|
|
# Make-debian generates all the information you need, you will need swim and
|
|
# file-rc installed, and you will have to be running a Debian system to make
|
|
# this template. Make-debian ditches info, man, and doc files by default,
|
|
# use the "doc" option to make documentation.
|
|
#
|
|
# Characteristics: Uses devfs. user: root passwd: root
|
|
user: user passwd: user
|
|
#
|
|
# Note: Things slow down noticeably when the buffer gets too big in the
|
|
# verbosity box so consider closing it with the slider for faster generation.
|
|
|
|
# The STUFF NEEDED in order for init to work.
|
|
/etc/runlevel.conf <= Replacements/etc/runlevel.conf # made by make_debian
|
|
/etc/init.d/rc
|
|
/etc/init.d/rcS
|
|
/etc/inittab <= Replacements/etc/inittab.debian # specific to devfs
|
|
/etc/default/rcS
|
|
|
|
# Stuff to save to return init to old state prior to file-rc
|
|
/etc/init.d/rc.links
|
|
/etc/init.d/rcS.links
|
|
/usr/sbin/update-rc.d.links
|
|
|
|
# Login stuff
|
|
/etc/securetty <= Replacements/etc/securetty.debian # devfs needs this
|
|
/root/.bashrc <= Replacements/root/.bashrc.debian
|
|
/root/.profile <= Replacements/root/.profile.debian
|
|
/home/user/.bashrc <= Replacements/home/user/.bashrc.debian
|
|
/home/user/.bash_profile <= Replacements/home/user/.bash_profile.debian
|
|
/etc/hostname <= Replacements/etc/hostname
|
|
/etc/motd <= Replacements/etc/motd
|
|
|
|
# Important stuff .. you will need to edit this if you add packages
|
|
# which need other users/groups
|
|
#/etc/fstab <= Replacements/etc/fstab.new # Made from Yard Box menu
|
|
/etc/fstab <= Replacements/etc/fstab.debian # devfs specific
|
|
/etc/passwd <= Replacements/etc/passwd.debian
|
|
/etc/passwd- <= Replacements/etc/passwd-debian
|
|
/etc/group <= Replacements/etc/group.debian
|
|
/etc/group- <= Replacements/etc/group-debian
|
|
/etc/shadow <= Replacements/etc/shadow.debian
|
|
|
|
# The information needed so that dpkg can work.
|
|
/var/lib/dpkg/diversions <= Replacements/var/lib/dpkg/diversions
|
|
/var/lib/dpkg/cmethopt
|
|
/var/lib/dpkg/lock
|
|
/var/lib/dpkg/status <= Replacements/var/lib/dpkg/status
|
|
/var/lib/dpkg/methods/disk
|
|
/var/lib/dpkg/methods/floppy
|
|
/var/lib/dpkg/methods/mnt
|
|
/var/lib/dpkg/info
|
|
/var/lib/dpkg/updates
|
|
/var/lib/dpkg/alternatives
|
|
|
|
# Devices - optional stuff picked up by devfsd
|
|
/dev/MAKEDEV # a link
|
|
/dev/mem
|
|
/dev/kmem
|
|
/dev/null
|
|
/dev/zero
|
|
/dev/ram*
|
|
/dev/console
|
|
/dev/tty[0-9]
|
|
/dev/hd[abcd]*
|
|
/dev/ttyS[0-9]
|
|
/dev/fd0*
|
|
/dev/sd*
|
|
/dev/cdrom
|
|
/dev/modem
|
|
/dev/pts*
|
|
/dev/ptmx
|
|
/dev/initctl
|
|
/dev/urandom
|
|
/dev/ubd0 <= Replacements/dev/ubd0
|
|
|
|
# Empty directories
|
|
/mnt
|
|
/proc
|
|
/tmp
|
|
/var/tmp
|
|
/var/run
|
|
/var/lock
|
|
/var/log
|
|
|
|
## ALL the REQUIRED files generated by make-debian
|
|
STUFF
|
|
|
|
return $stuff;
|
|
} # end sub stuff
|
|
|
|
|