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.
calculate-utils-3-install/install/variables/kernel.py

132 lines
4.0 KiB

#-*- coding: utf-8 -*-
# Copyright 2008-2012 Calculate Ltd. http://www.calculate-linux.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
from os import path
from calculate.lib.datavars import Variable,VariableError,ReadonlyVariable
from calculate.lib.cl_lang import setLocalTranslate
setLocalTranslate('cl_install',sys.modules[__name__])
from calculate.lib.utils.files import readLinesFile
from calculate.lib.utils.common import getKernelUid
class VariableOsInstallKernelScheduler(Variable):
"""
Install scheduler opts (cfq,bfq,none,deadline)
"""
def get(self):
"""Get scheduler for install root device"""
root_dev = filter(lambda x: x[1] == '/',
zip(self.Get('os_install_disk_parent'),
self.Get('os_install_disk_mount')))
if root_dev:
pathScheduler = '/sys/block/%s/queue/scheduler'%root_dev
if os.access(pathScheduler,os.R_OK):
res = re.search("\[([^\]]+)\]",
open(pathScheduler).read(),re.S)
if res:
return res.groups()[0]
return "cfq"
class VariableOsInstallKernelAttr(Variable):
"""
Install kernel attributes
"""
def get(self):
# on usb-hdd install must be "delay=5"
attr = ""
if self.Get('os_install_root_type') == 'usb-hdd':
attr = " scandelay=5"
if self.Get('os_install_mdadm_set') == 'on':
attr += " domdadm"
if self.Get('os_install_lvm_set') == 'on':
attr += " dolvm"
return attr
class VariableOsInstallKernelResume(ReadonlyVariable):
"""
Install kernel resume
"""
def get(self):
"""install kernel resume parameter"""
for dev, install in zip(self.Get('os_install_disk_use'),
self.Get('os_install_disk_mount')):
if install == "swap":
return "real_resume=%s"%dev
return ""
class VariableOsInstallKernel(ReadonlyVariable):
"""
Kernel filename
"""
value = ""
class VariableOsInstallInitrd(ReadonlyVariable):
"""
Optimized initramfs filename
"""
value = ""
class VariableOsInstallInitrdInstall(ReadonlyVariable):
"""
Install initramfs filename
"""
value = ""
class VariableOsInstallKernelConfig(ReadonlyVariable):
"""
Install config kernel filename
"""
value = ""
class VariableOsInstallSystemMap(ReadonlyVariable):
"""
Install system map filename
"""
def get(self):
systemmapfile = self.Get('os_install_kernel').replace('vmlinuz',
'System.map')
if systemmapfile.startswith('System.map') and path.exists(
path.join(self.Get('cl_chroot_path'),'boot',systemmapfile)):
return systemmapfile
else:
return ""
class VariableOsInstallKernelCpufreq(ReadonlyVariable):
"""
Cpufreq modules
"""
def get(self):
"""Get cpufreq (and other from modules_3= param) from conf.d/modules"""
cpufreqmods = map(lambda x:x.partition('=')[2].strip("\n '\""),
filter(lambda x:x.startswith('modules_3'),
readLinesFile('/etc/conf.d/modules')))
if cpufreqmods:
return cpufreqmods[0]
else:
return ""
class VariableOsInstallKernelUid(ReadonlyVariable):
"""
Variable install kernel UID
"""
def get(self):
return getKernelUid(self.Get('os_install_root_dev'))