|
|
|
@ -333,6 +333,7 @@ sub getarg{
|
|
|
|
|
"video_resolution",
|
|
|
|
|
"lang",
|
|
|
|
|
"timezone",
|
|
|
|
|
"type",
|
|
|
|
|
"clock",
|
|
|
|
|
"composite",
|
|
|
|
|
"system",
|
|
|
|
@ -493,7 +494,7 @@ sub getarg{
|
|
|
|
|
printmes(gettext('Similarly for optional arguments').".\n\n");
|
|
|
|
|
|
|
|
|
|
printmes(gettext('Location').":\n");
|
|
|
|
|
printmes(" -s, --os=[CLD|CLDX|CLSG|CDS] "); printmes(gettext('select operation system')); printmes(" (Calculate Linux Desktop KDE, Calculate Linux Desktop XFCE, Calculate Linux Scratch GNOME, Calculate Directory Server)\n");
|
|
|
|
|
printmes(" -s, --os=[CLD|CLDX|CLS|CDS] "); printmes(gettext('select operation system')); printmes(" (Calculate Linux Desktop KDE, Calculate Linux Desktop XFCE, Calculate Linux Scratch, Calculate Directory Server)\n");
|
|
|
|
|
|
|
|
|
|
printmes(" -d, --disk=DISK\t"); printmes(gettext('installation or building system volume')."\n");
|
|
|
|
|
printmes(" -f, --force\t\t"); printmes(gettext('do not prompt before overwriting')."\n");
|
|
|
|
@ -594,6 +595,13 @@ sub checkerrors{
|
|
|
|
|
# флаг запущенного демона hald
|
|
|
|
|
$data{hal} = ""; if(!system "lshal &>/dev/null"){$data{hal} = "on";}
|
|
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
# Определим тип носителя
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
if(!$data{'type'}){
|
|
|
|
|
$data{type} = check_removable();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
# Предопределим диск для установки
|
|
|
|
|
# инициируем: $data{data_install_set}, $data{partitions_dev}, $data{partitions_fdisk}
|
|
|
|
@ -614,7 +622,7 @@ sub checkerrors{
|
|
|
|
|
beep(); return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(check_removable() ne "flash"){
|
|
|
|
|
if($data{type} ne "flash"){
|
|
|
|
|
#проверим размер диска
|
|
|
|
|
my $disk = $data{arg}{'disk'};
|
|
|
|
|
$disk =~m/\/([^\/]+)$/;
|
|
|
|
@ -706,7 +714,7 @@ sub checkerrors{
|
|
|
|
|
beep(); return "";
|
|
|
|
|
} }
|
|
|
|
|
|
|
|
|
|
if(check_removable() eq "flash" && !$data{partitions_dev}){
|
|
|
|
|
if($data{type} eq "flash" && !$data{partitions_dev}){
|
|
|
|
|
printmes(gettext('To install on USB-Flash, specify the device, not partition. For example "calculate -d /dev/sdb"')); printmes(".\n");
|
|
|
|
|
beep(); return "";
|
|
|
|
|
}
|
|
|
|
@ -728,13 +736,12 @@ sub welcome{
|
|
|
|
|
%{$data{ver}} = (
|
|
|
|
|
CLD => "Calculate Linux Desktop",
|
|
|
|
|
CLDX => "Calculate Linux Desktop",
|
|
|
|
|
CLSG => "Calculate Linux Scratch",
|
|
|
|
|
CLS => "Calculate Linux Scratch",
|
|
|
|
|
CDS => "Calculate Directory Server",
|
|
|
|
|
);
|
|
|
|
|
%{$data{ver_desktop}} = (
|
|
|
|
|
CLD => "KDE",
|
|
|
|
|
CLDX => "XFCE",
|
|
|
|
|
CLSG => "GNOME",
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
#если передан параметр выбора системы, установим значения
|
|
|
|
@ -1051,9 +1058,6 @@ sub checksystem{
|
|
|
|
|
'en_US' => ["en_US.UTF-8", "us", "", "LatArCyrHeb-16", "", "us",
|
|
|
|
|
"", "us", "us", "en_US", "en_US"],
|
|
|
|
|
);
|
|
|
|
|
#поддержка языков в приложениях
|
|
|
|
|
#$data{linguas} = "be be_BY da de en en_GB es fr it nb nn pl pt_BR ru se sv uk";
|
|
|
|
|
$data{linguas} = "en de es fr it pl pt_BR ru uk";
|
|
|
|
|
|
|
|
|
|
@{$data{other}}{lang} = ["en_US", "de_DE", "es_ES", "fr_FR", "it_IT", "pl_PL", "pt_BR", "ru_RU", "uk_UA"];
|
|
|
|
|
|
|
|
|
@ -1070,6 +1074,17 @@ sub checksystem{
|
|
|
|
|
#проверим на корректность введенного значения и на наличие поддержки
|
|
|
|
|
if(!$lang{$data{lang}}){$data{lang}="en_US";}
|
|
|
|
|
|
|
|
|
|
#поддержка языков в приложениях
|
|
|
|
|
if($data{pass} eq 'builder'){
|
|
|
|
|
#$data{linguas} = "be be_BY da de en en_GB es fr it nb nn pl pt_BR ru se sv uk";
|
|
|
|
|
$data{linguas} = "en de es fr it pl pt_BR ru uk";
|
|
|
|
|
}else{
|
|
|
|
|
foreach(keys %lang){
|
|
|
|
|
if($_ eq $data{'lang'}){
|
|
|
|
|
$data{linguas} = "en ".$lang{$_}[9];
|
|
|
|
|
last;
|
|
|
|
|
} } }
|
|
|
|
|
|
|
|
|
|
#установим раскладку
|
|
|
|
|
my $changekb;
|
|
|
|
|
if($data{boot}{keybd}){$changekb = $data{boot}{keybd};}
|
|
|
|
@ -1473,7 +1488,7 @@ sub checksystem{
|
|
|
|
|
my $find = "\/".lc($data{'calculate'})."\-.*\-$data{march}\.";
|
|
|
|
|
my $ver = lc($data{'calculate'})."-\([^-]+)-$data{march}"; #шаблон сравнения
|
|
|
|
|
my $mask;
|
|
|
|
|
if(check_removable() eq 'flash'){
|
|
|
|
|
if($data{type} eq 'flash'){
|
|
|
|
|
$mask = "iso";
|
|
|
|
|
}elsif(defined $data{arg}{iso}){
|
|
|
|
|
$mask = "tar\.7z|tar\.lzma|tar\.bz2";
|
|
|
|
@ -1901,9 +1916,9 @@ sub checksystem{
|
|
|
|
|
# USB устройства
|
|
|
|
|
# $data{'removableinstall'}, $data{grub_delay}
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
if(check_removable()){
|
|
|
|
|
if($data{type} ne 'hdd'){
|
|
|
|
|
$data{'removableinstall'} = 'on';
|
|
|
|
|
if(check_removable() eq 'flash'){
|
|
|
|
|
if($data{type} eq 'flash'){
|
|
|
|
|
printmes(" (USB-Flash)");
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" (USB-HDD)");
|
|
|
|
@ -2037,7 +2052,7 @@ sub checksystem{
|
|
|
|
|
elsif($format =~m/reiserfs/){$data{'format'} = 'reiserfs';}
|
|
|
|
|
# elsif($format =~m/reiser4/){$data{'format'} = 'reiser4';}
|
|
|
|
|
elsif($format =~m/xfs/){$data{'format'} = 'xfs';}
|
|
|
|
|
elsif(check_removable() eq "flash"){$data{'format'} = 'vfat';}
|
|
|
|
|
elsif($data{type} eq "flash"){$data{'format'} = 'vfat';}
|
|
|
|
|
else{$data{'format'} = 'reiserfs';}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2777,8 +2792,8 @@ sub checkready{
|
|
|
|
|
(($data{calculate} eq "CLD" &&
|
|
|
|
|
number_ver($data{linuxver}) > number_ver('9.7.9')) ||
|
|
|
|
|
($data{calculate} eq "CLDX" &&
|
|
|
|
|
number_ver($data{linuxver}) > number_ver('9.6.9')) ||
|
|
|
|
|
($data{calculate} eq "CLSG" &&
|
|
|
|
|
number_ver($data{linuxver}) > number_ver('9.7.9')) ||
|
|
|
|
|
($data{calculate} eq "CLS" &&
|
|
|
|
|
number_ver($data{linuxver}) > number_ver('9.6.9')) ||
|
|
|
|
|
($data{calculate} eq "CDS" &&
|
|
|
|
|
number_ver($data{linuxver}) > number_ver('9.7.9'))
|
|
|
|
@ -2898,7 +2913,7 @@ sub extract{
|
|
|
|
|
printmes(gettext('Prepare installation volume')); printmes("\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($data{partitions_dev} && check_removable() ne "flash"){
|
|
|
|
|
if($data{partitions_dev} && $data{type} ne "flash"){
|
|
|
|
|
printmes(" ".gettext('Perform hard disk partition')); printmes("... ");
|
|
|
|
|
#выполним разбиение диска
|
|
|
|
|
if(system("$data{path} cat /usr/calculate/install/config/fdisk.$data{calculate} | fdisk $data{partitions_dev} &>/dev/null")){
|
|
|
|
@ -2945,7 +2960,7 @@ sub extract{
|
|
|
|
|
}else{
|
|
|
|
|
$data{data_install_set} = "$data{partitions_dev}5";
|
|
|
|
|
}
|
|
|
|
|
}elsif($data{partitions_dev} && check_removable() eq "flash"){
|
|
|
|
|
}elsif($data{partitions_dev} && $data{type} eq "flash"){
|
|
|
|
|
printmes(" ".gettext('Perform hard disk partition')); printmes("... ");
|
|
|
|
|
#выполним разбиение диска
|
|
|
|
|
if(system("$data{path} cat /usr/calculate/install/config/fdisk.flash | fdisk $data{partitions_dev} &>/dev/null")){
|
|
|
|
@ -3002,7 +3017,7 @@ sub extract{
|
|
|
|
|
if(!$data{builder}){
|
|
|
|
|
if($data{load} ne "ram" && $data{linux} !~m/iso$/){printmes(" ");}
|
|
|
|
|
printmes(gettext('Unpacking system image into new volume'));
|
|
|
|
|
if(($data{load} eq "ram" || $data{linux} =~m/iso$/) && check_removable() ne "flash"){
|
|
|
|
|
if(($data{load} eq "ram" || $data{linux} =~m/iso$/) && $data{type} ne "flash"){
|
|
|
|
|
print("\n");
|
|
|
|
|
}else{ printmes("... ");}
|
|
|
|
|
if($data{linux} =~m/7z$/){$unpack = "7za x -so $data{linuxdir}/$data{linux} 2>/dev/null | tar xf - -C $data{mount}";}
|
|
|
|
@ -3019,12 +3034,12 @@ sub extract{
|
|
|
|
|
#установка с ISO на жесткий диск
|
|
|
|
|
(($data{load} eq "ram" || $data{linux} =~m/iso$/) &&
|
|
|
|
|
-e "/mnt/cdrom/livecd.squashfs" &&
|
|
|
|
|
check_removable() ne "flash" &&
|
|
|
|
|
$data{type} ne "flash" &&
|
|
|
|
|
system("$data{path} unsquashfs -d $data{mount} -f /mnt/cdrom/livecd.squashfs")) ||
|
|
|
|
|
#установка с ISO на флешку
|
|
|
|
|
(($data{load} eq "ram" || $data{linux} =~m/iso$/) &&
|
|
|
|
|
-e "/mnt/cdrom/livecd.squashfs" &&
|
|
|
|
|
check_removable() eq "flash" &&
|
|
|
|
|
$data{type} eq "flash" &&
|
|
|
|
|
system("$data{path} rsync -a /mnt/cdrom/ $data{mount}")) ||
|
|
|
|
|
#установка с DVD при загрузке в память системы
|
|
|
|
|
(($data{load} eq "ram" || $data{linux} =~m/iso$/) &&
|
|
|
|
@ -3052,7 +3067,7 @@ sub extract{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
if(($data{load} ne "ram" && $data{linux} !~m/iso$/) || check_removable() eq "flash"){
|
|
|
|
|
if(($data{load} ne "ram" && $data{linux} !~m/iso$/) || $data{type} eq "flash"){
|
|
|
|
|
printmes(gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -3087,7 +3102,7 @@ sub extract{
|
|
|
|
|
#
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
|
sub profiles{
|
|
|
|
|
if(check_removable() ne "flash"){
|
|
|
|
|
if($data{type} ne "flash"){
|
|
|
|
|
printmes(gettext('Update config')."\n");
|
|
|
|
|
foreach(@{$data{profile_install}}, @{$data{profile_share}}){
|
|
|
|
|
profile($_);
|
|
|
|
@ -3105,7 +3120,7 @@ sub setup{
|
|
|
|
|
printmes(gettext('System setup')."\n");
|
|
|
|
|
|
|
|
|
|
#подготовим флешку к загрузке
|
|
|
|
|
if(check_removable() eq "flash"){
|
|
|
|
|
if($data{type} eq "flash"){
|
|
|
|
|
printmes(" ".gettext('Setting')); printmes(" syslinux...");
|
|
|
|
|
system "$data{path} mv $data{'chroot'}/isolinux $data{'chroot'}/syslinux";
|
|
|
|
|
system "$data{path} mv $data{'chroot'}/syslinux/isolinux.cfg $data{'chroot'}/syslinux/syslinux.cfg";
|
|
|
|
@ -3243,7 +3258,7 @@ sub loader{
|
|
|
|
|
if($data{mbr} eq "on"){
|
|
|
|
|
printmes(" ".gettext('Change boot record')); printmes("...");
|
|
|
|
|
|
|
|
|
|
if(check_removable() ne "flash"){
|
|
|
|
|
if($data{type} ne "flash"){
|
|
|
|
|
if(system "$data{path} chroot $data{'chroot'} /sbin/grub --device-map=/boot/grub/device.map --batch <<EOF &>/dev/null\n".
|
|
|
|
|
"root ($data{grubinstall})\n".
|
|
|
|
|
"setup (hd0)\n".
|
|
|
|
@ -3271,7 +3286,7 @@ sub loader{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#пропишем syslinux в автозагрузку
|
|
|
|
|
if(check_removable() eq "flash"){
|
|
|
|
|
if($data{type} eq "flash"){
|
|
|
|
|
printmes(" ".gettext('Create a boot partition')); printmes("...");
|
|
|
|
|
if(system "$data{path} syslinux $data{rootinstall}"){
|
|
|
|
|
printmes(" ".gettext('error').".\n");
|
|
|
|
@ -3290,7 +3305,7 @@ sub loader{
|
|
|
|
|
#
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
|
sub reboot{
|
|
|
|
|
if(check_removable() ne "flash"){
|
|
|
|
|
if($data{type} ne "flash"){
|
|
|
|
|
printmes(" ".gettext('Detect logged in users')); printmes("... "); printmes(gettext('done').".\n");
|
|
|
|
|
if(`$data{path} w -hs` || $data{load} eq "ram"){
|
|
|
|
|
printmes("\n".gettext('To apply changes you have to reboot').".\n");
|
|
|
|
@ -6487,7 +6502,7 @@ sub beep{
|
|
|
|
|
# Соберем бинарные пакеты дополнений (nVideo драйвера)
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
|
sub makepkg{
|
|
|
|
|
if($data{system} eq "server" || $data{calculate} eq "CLDX" || $data{calculate} eq "CLSG"){return 1;}
|
|
|
|
|
if($data{system} eq "server" || $data{calculate} eq "CLDX" || $data{calculate} eq "CLS"){return 1;}
|
|
|
|
|
|
|
|
|
|
printmes(gettext('Make nvidia drivers')."\n");
|
|
|
|
|
|
|
|
|
@ -6567,7 +6582,7 @@ sub swapon{
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
|
sub check_removable{
|
|
|
|
|
my $dev = $data{arg}{'disk'};
|
|
|
|
|
if(!$dev || !$data{hal}){return "";}
|
|
|
|
|
if(!$dev || !$data{hal}){return "hdd";}
|
|
|
|
|
$dev =~m#^(/dev/[^\/0-9]+)[0-9]?[0-9]?$#;
|
|
|
|
|
my $disk = $1;
|
|
|
|
|
|
|
|
|
@ -6579,7 +6594,7 @@ sub check_removable{
|
|
|
|
|
if( $isflash eq "true" ) { return "flash"; }
|
|
|
|
|
else { return "usb-hdd"; }
|
|
|
|
|
}
|
|
|
|
|
return "";
|
|
|
|
|
return "hdd";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
|