|
|
|
@ -124,11 +124,8 @@ class cl_install(color_print):
|
|
|
|
|
self.clVars.Get('os_clock_timezone'))
|
|
|
|
|
|
|
|
|
|
self.defaultPrint(_("Location\n"))
|
|
|
|
|
workingVol = filter(lambda x: x[1] == '/',
|
|
|
|
|
zip(self.clVars.Get('os_disk_dev'),
|
|
|
|
|
self.clVars.Get('os_disk_load'))) or [("unknown",)]
|
|
|
|
|
self.printSUCCESS(_("Working volume")+": %s"%
|
|
|
|
|
workingVol[0][0])
|
|
|
|
|
self.getDeviceByField("load",'/') or "unknown" )
|
|
|
|
|
self.printSUCCESS(_("Installation volume")+": %s"%
|
|
|
|
|
self.clVars.Get('os_root_dev'))
|
|
|
|
|
self.printSUCCESS(_("File system")+": %s"%
|
|
|
|
@ -146,7 +143,10 @@ class cl_install(color_print):
|
|
|
|
|
self.printSUCCESS(_("Authentification")+": %s"%
|
|
|
|
|
"<needed>")
|
|
|
|
|
|
|
|
|
|
self.printSUCCESS("Found update: %s"%self.clVars.Get('os_linux_name'))
|
|
|
|
|
self.printSUCCESS("Found update: %s %s %s"%
|
|
|
|
|
(self.clVars.Get('os_linux_name'),
|
|
|
|
|
self.clVars.Get('os_linux_subname'),
|
|
|
|
|
self.clVars.Get('os_linux_ver')))
|
|
|
|
|
|
|
|
|
|
def wait(self,sec=10):
|
|
|
|
|
self.printSUCCESS(_("Press %s to cancel")%"Ctrl+C"+"... %d"%sec, printBR=False)
|
|
|
|
@ -156,7 +156,7 @@ class cl_install(color_print):
|
|
|
|
|
self.defaultPrint("\b\b \n")
|
|
|
|
|
|
|
|
|
|
def prepareBoot(self,targetDistr):
|
|
|
|
|
targetDistr.installBootloader()
|
|
|
|
|
self.installBootloader(targetDistr)
|
|
|
|
|
|
|
|
|
|
def getTargetDistributive(self,disk,buildermode):
|
|
|
|
|
if buildermode:
|
|
|
|
@ -177,6 +177,63 @@ class cl_install(color_print):
|
|
|
|
|
else:
|
|
|
|
|
return dirsFiles
|
|
|
|
|
|
|
|
|
|
def setInstallDisk(self,disk):
|
|
|
|
|
if not disk in self.clVars.Get('os_disk_dev'):
|
|
|
|
|
raise InstallError(_("Wrong target drive name %s"%disk))
|
|
|
|
|
else:
|
|
|
|
|
osdiskload = \
|
|
|
|
|
filter(lambda x: (x[1] or x[2] == "extended") and x[0] == disk,
|
|
|
|
|
zip(self.clVars.Get('os_disk_dev'),
|
|
|
|
|
self.clVars.Get('os_disk_load'),
|
|
|
|
|
self.clVars.Get('os_disk_part')))
|
|
|
|
|
if len(osdiskload) > 0:
|
|
|
|
|
if osdiskload[0][2] == "extended":
|
|
|
|
|
raise InstallError(
|
|
|
|
|
_("Specified drive '%s' is extended"%disk))
|
|
|
|
|
else:
|
|
|
|
|
raise InstallError(
|
|
|
|
|
_("Specified drive '%s' mounted to '%s'")%
|
|
|
|
|
(disk,osdiskload[0][1]))
|
|
|
|
|
else:
|
|
|
|
|
self.clVars.Set('os_root_dev',disk,True)
|
|
|
|
|
|
|
|
|
|
def getDeviceByField(self,field,value):
|
|
|
|
|
"""Get device by fields (install load format uuid grub part name)"""
|
|
|
|
|
return self.getFieldByField('dev',field,value)
|
|
|
|
|
|
|
|
|
|
def getFieldByField(self,resfield,field,value):
|
|
|
|
|
res = filter(lambda x: x[1] == value,
|
|
|
|
|
zip(self.clVars.Get('os_disk_%s'%resfield),
|
|
|
|
|
self.clVars.Get('os_disk_%s'%field))) or [("","")]
|
|
|
|
|
return res[0][0]
|
|
|
|
|
|
|
|
|
|
def getFieldByDevice(self,field,device):
|
|
|
|
|
"""Get value of field by device"""
|
|
|
|
|
device_hash = self.clVars.Get('os_disk_hash')
|
|
|
|
|
if device in device_hash and field in device_hash[device]:
|
|
|
|
|
return device_hash[device][field]
|
|
|
|
|
else:
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
|
|
def installBootloader(self,target):
|
|
|
|
|
"""Install boot loader
|
|
|
|
|
|
|
|
|
|
Perform grub installation to disk, which has root partition
|
|
|
|
|
"""
|
|
|
|
|
pipe = Popen(["/sbin/grub",
|
|
|
|
|
"--device-map=%s/boot/grub/device.map"%target.getDirectory(),
|
|
|
|
|
"--batch"], stdin=PIPE,stdout=PIPE)
|
|
|
|
|
pipe.stdin.write("root (hd%s)\n"%
|
|
|
|
|
self.getFieldByField("grub","install","/"))
|
|
|
|
|
# TODO: change hd0 for bootloader install to other disks
|
|
|
|
|
# may be another parameters
|
|
|
|
|
pipe.stdin.write("setup (hd0)\n")
|
|
|
|
|
pipe.stdin.write("quit\n")
|
|
|
|
|
pipe.stdin.close()
|
|
|
|
|
# TODO: break if command is hang (KeyboardInterrupt is supported)
|
|
|
|
|
if pipe.wait() != 0:
|
|
|
|
|
raise DistributiveError("Cann't install bootloader")
|
|
|
|
|
|
|
|
|
|
def installSystem(self,buildermode=False):
|
|
|
|
|
"""install System by current variable enviroment"""
|
|
|
|
|
sourceDistr = None
|
|
|
|
@ -199,7 +256,8 @@ class cl_install(color_print):
|
|
|
|
|
self.wait(waittime)
|
|
|
|
|
# format partition if needed
|
|
|
|
|
self.printSUCCESS(_("Formating partition"))
|
|
|
|
|
targetDistr.formatPartition("reiserfs")
|
|
|
|
|
targetDistr.formatPartition(
|
|
|
|
|
self.getFieldByField("format","install","/") or "reiserfs")
|
|
|
|
|
# install distributive
|
|
|
|
|
self.printSUCCESS(_("Unpacking system image into target"))
|
|
|
|
|
targetDistr.installFrom(sourceDistr)
|
|
|
|
|