Apache/2.4.7 (Ubuntu) Linux sman1baleendah 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) safemode : OFF MySQL: ON | Perl: ON | cURL: OFF | WGet: ON > / usr / bin / | server ip : 172.67.156.115 your ip : 172.71.254.223 H O M E |
Filename | /usr/bin/gen-preseed |
Size | 2.51 kb |
Permission | rwxr-xr-x |
Owner | root : root |
Create time | 27-Apr-2025 09:53 |
Last modified | 12-Dec-2013 06:17 |
Last accessed | 05-Jul-2025 16:42 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
#!/usr/bin/perl
=head1 NAME
gen-preseed -- output preseed based on installation debconf DB
=head1 SYNOPSIS
gen-preseed
=head1 DESCRIPTION
Output a preseed file based on the installation debconf DB.
This requires /var/log/installer/cdebconf to exist.
=cut
use strict;
use warnings;
use Debconf::Db;
use Debconf::Template;
use Debconf::Question;
# A bit of a hack..
my $di_path;
if (-d "/var/log/installer") {
$di_path="/var/log/installer/cdebconf";
} else {
$di_path="/var/log/debian-installer/cdebconf";
}
if (! -f "$di_path") {
print("Unable to find debconf database: $di_path\n");
exit(1);
}
Debconf::Db->load(readonly => "true");
$Debconf::Db::config=Debconf::Db->makedriver(
driver => "File",
name => "di_questions",
filename => "$di_path/questions.dat",
readonly => "true",
);
$Debconf::Db::templates=Debconf::Db->makedriver(
driver => "File",
name => "di_templates",
filename => "$di_path/templates.dat",
readonly => "true",
);
my $defaultowner="d-i";
my @blacklist = (
# No partitioning preseeding at this point
"partman-",
# d-i state
"clock-setup/system-time-changed",
"debian-installer/main-menu",
# Value depends on hardware
"netcfg/choose_interface",
# Value depends on install media
"base-installer/kernel/image",
"base-installer/kernel/override-image",
"cdrom/codename",
"cdrom-detect/cdrom_device",
"hw-detect/select_modules",
"preseed/file",
);
my $qi = Debconf::Question->iterator;
my @keys = ();
while (my $q = $qi->iterate) {
my ($name, $type, $value, $default) = ($q->name, $q->type, $q->value, $q->default);
next if ($default eq $value);
next if (! length $type || $type eq 'text' || $type eq 'title');
my $skip = 0;
foreach (@blacklist) {
if ($name =~ m/^$_/) {
$skip = 1;
}
}
next if ($skip eq 1);
if ($q->owners) {
foreach my $owner (split ", ", $q->owners) {
push(@keys, "$owner\t$name\t$type\t$value\n");
}
}
else {
push(@keys, "$defaultowner\t$name\t$type\t$value\n");
}
}
foreach(sort(@keys)) {
print "$_";
}
=head1 AUTHOR
Written by:
Stéphane Graber <[email protected]>
Based on debconf-get-selections by:
Petter Reinholdtsen <[email protected]>
=cut
=head1 NAME
gen-preseed -- output preseed based on installation debconf DB
=head1 SYNOPSIS
gen-preseed
=head1 DESCRIPTION
Output a preseed file based on the installation debconf DB.
This requires /var/log/installer/cdebconf to exist.
=cut
use strict;
use warnings;
use Debconf::Db;
use Debconf::Template;
use Debconf::Question;
# A bit of a hack..
my $di_path;
if (-d "/var/log/installer") {
$di_path="/var/log/installer/cdebconf";
} else {
$di_path="/var/log/debian-installer/cdebconf";
}
if (! -f "$di_path") {
print("Unable to find debconf database: $di_path\n");
exit(1);
}
Debconf::Db->load(readonly => "true");
$Debconf::Db::config=Debconf::Db->makedriver(
driver => "File",
name => "di_questions",
filename => "$di_path/questions.dat",
readonly => "true",
);
$Debconf::Db::templates=Debconf::Db->makedriver(
driver => "File",
name => "di_templates",
filename => "$di_path/templates.dat",
readonly => "true",
);
my $defaultowner="d-i";
my @blacklist = (
# No partitioning preseeding at this point
"partman-",
# d-i state
"clock-setup/system-time-changed",
"debian-installer/main-menu",
# Value depends on hardware
"netcfg/choose_interface",
# Value depends on install media
"base-installer/kernel/image",
"base-installer/kernel/override-image",
"cdrom/codename",
"cdrom-detect/cdrom_device",
"hw-detect/select_modules",
"preseed/file",
);
my $qi = Debconf::Question->iterator;
my @keys = ();
while (my $q = $qi->iterate) {
my ($name, $type, $value, $default) = ($q->name, $q->type, $q->value, $q->default);
next if ($default eq $value);
next if (! length $type || $type eq 'text' || $type eq 'title');
my $skip = 0;
foreach (@blacklist) {
if ($name =~ m/^$_/) {
$skip = 1;
}
}
next if ($skip eq 1);
if ($q->owners) {
foreach my $owner (split ", ", $q->owners) {
push(@keys, "$owner\t$name\t$type\t$value\n");
}
}
else {
push(@keys, "$defaultowner\t$name\t$type\t$value\n");
}
}
foreach(sort(@keys)) {
print "$_";
}
=head1 AUTHOR
Written by:
Stéphane Graber <[email protected]>
Based on debconf-get-selections by:
Petter Reinholdtsen <[email protected]>
=cut