[Bug #4900] 42系统集成uefi功能
修改: new_partition/interface_partition.py 新文件: operation/finish_install/99exec_install_efi.sh 修改: text/ri_newt.py Signed-off-by: zhang <dpzhang@linx-info.com>
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
from snack import *
|
||||
import sys
|
||||
import re
|
||||
import logging
|
||||
sys.path.append('../interface/')
|
||||
sys.path.append('../new_partition/')
|
||||
|
||||
@@ -9,6 +10,14 @@ import ri_data
|
||||
import partition_data as p_d
|
||||
import interface_partition
|
||||
|
||||
import os
|
||||
|
||||
logger=logging.getLogger('debuglog')
|
||||
logger.setLevel(logging.DEBUG)
|
||||
fh=logging.FileHandler('/tmp/test.log')
|
||||
fh.setLevel(logging.DEBUG)
|
||||
logger.addHandler(fh)
|
||||
|
||||
config_xml = "../xml/install_cfg.xml"
|
||||
|
||||
class Screen:
|
||||
@@ -478,6 +487,7 @@ class MountPoint(Screen):
|
||||
self.mds.sort()
|
||||
|
||||
def check_mountpoint(self,flag='one'):
|
||||
eficheck=0
|
||||
nonmount_dir = ['/dev','/etc','/lib64','/lib','/bin','/sbin','/proc','/sys']
|
||||
if flag == 'one':
|
||||
mountpoint = Screen.entry.value()
|
||||
@@ -497,6 +507,21 @@ class MountPoint(Screen):
|
||||
return False
|
||||
return True
|
||||
elif flag == 'all':
|
||||
if os.path.exists("/sys/firmware/efi"):
|
||||
for ddisk in self.disks:
|
||||
efidict={}
|
||||
efidevs=p_d.Partition.dict[ddisk]['partition'].keys()
|
||||
for ddev in efidevs:
|
||||
if ddev.startswith(ddisk) and ddev.endswith('1'):
|
||||
logger.info('efi maybe ' + ddev)
|
||||
logger.info('mountpoint is' +str(p_d.Partition.dict[ddisk]['partition'][ddev]['mount_point']))
|
||||
logger.info('filesystem is' +str(p_d.Partition.dict[ddisk]['partition'][ddev]['filesystem']))
|
||||
efidict['dev']=ddev
|
||||
efidict['mountpoint']=str(p_d.Partition.dict[ddisk]['partition'][ddev]['mount_point'])
|
||||
efidict['filesystem']=str(p_d.Partition.dict[ddisk]['partition'][ddev]['filesystem'])
|
||||
if (efidict['mountpoint']=='/boot/efi' or efidict['mountpoint']=='/boot/efi/') and (efidict['filesystem'] == 'vfat'):
|
||||
eficheck=1
|
||||
break
|
||||
list_mountpoint = []
|
||||
for m in ri_data.Raid.dict.keys():
|
||||
R = ri_data.Raid.dict[m]
|
||||
@@ -511,9 +536,10 @@ class MountPoint(Screen):
|
||||
list_mountpoint.append(p_d.Partition.dict[d]['partition'][p]['mount_point'])
|
||||
if len(list_mountpoint) != len(list(set(list_mountpoint))) or '/' not in list_mountpoint:
|
||||
return False
|
||||
elif os.path.exists("/sys/firmware/efi") and eficheck != 1:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def set_mountpoint(self, device):
|
||||
disk = device.split(':')[0]
|
||||
dev = device.split(':')[1]
|
||||
@@ -524,7 +550,7 @@ class MountPoint(Screen):
|
||||
Screen.label_mp = Label('mountpoint : ')
|
||||
Screen.label_fs = Label('File System Type : ')
|
||||
Screen.widget_label('')
|
||||
fs_list = ['ext2','ext3', 'ext4', 'linux-swap', 'reiserfs', 'xfs', 'jfs']
|
||||
fs_list = ['ext2','ext3', 'ext4', 'linux-swap', 'reiserfs', 'xfs', 'jfs','vfat']
|
||||
Screen.widget_listbox(3, *fs_list)
|
||||
Screen.widget_checkbox('Format the partition')
|
||||
Screen.listbox.setCurrent('ext3')
|
||||
@@ -551,8 +577,12 @@ class MountPoint(Screen):
|
||||
s = Screen.yesno(self.title, 1, 8, 'TextboxReflowed', 'eLabel', 'Grid_Complex', 'eLabel', 'Checkbox','eLabel','ButtonBar')
|
||||
if s == 0:
|
||||
if not self.check_mountpoint(flag='one'):
|
||||
Screen.pop_window('Invalid mount point','The mount point you entered is invalid.\nMount point must start with "/".They cannot contain spaces.\nMount point cannot be "/dev","/etc","/lib","lib64","/bin","/sbin","/proc","/sys".\nAnd when formatted linux-swap filesystem, the partition can not be mounted.', 50)
|
||||
continue
|
||||
if os.path.exists("/sys/firmware/efi"):
|
||||
Screen.pop_window('Invalid mount point','The mount point you entered is invalid.\nMount point must start with "/boot/efi".They cannot contain spaces.\nMount point cannot be "/dev","/etc","/lib","lib64","/bin","/sbin","/proc","/sys".\nAnd when formatted linux-swap filesystem, the partition can not be mounted.', 50)
|
||||
continue
|
||||
else:
|
||||
Screen.pop_window('Invalid mount point','The mount point you entered is invalid.\nMount point must start with "/".They cannot contain spaces.\nMount point cannot be "/dev","/etc","/lib","lib64","/bin","/sbin","/proc","/sys".\nAnd when formatted linux-swap filesystem, the partition can not be mounted.', 50)
|
||||
continue
|
||||
if MD:
|
||||
if Screen.entry.value() != '' or Screen.checkbox.value() == 1:
|
||||
ri_data.Raid.dict[disk].fmt = 'yes'
|
||||
@@ -561,7 +591,6 @@ class MountPoint(Screen):
|
||||
ri_data.Raid.dict[disk].filesystem = Screen.listbox.current()
|
||||
ri_data.Raid.dict[disk].mp = Screen.entry.value()
|
||||
break
|
||||
#p_d.Partition.dict[disk]['partition'][dev]['format'] = 'yes'
|
||||
else:
|
||||
if Screen.entry.value() != '' or Screen.checkbox.value() == 1:
|
||||
p_d.Partition.dict[disk]['partition'][dev]['format'] = 'yes'
|
||||
@@ -629,8 +658,12 @@ class MountPoint(Screen):
|
||||
break
|
||||
else:
|
||||
if not self.check_mountpoint(flag='all'):
|
||||
Screen.pop_window('Invalid mount point','Two file systems must not be assigned the same mount point.\nA root file system is needed.\nPlease correct this by changing mount points.', 50)
|
||||
continue
|
||||
if os.path.exists("/sys/firmware/efi"):
|
||||
Screen.pop_window('Invalid mount point','Two file systems must not be assigned the same mount point.\nA root file system is needed.\nIn efi install mod the first partition mountpoint must be /boot/efi/ and filesystem must be vfat.\nPlease correct this by changing mount points.', 50)
|
||||
continue
|
||||
else:
|
||||
Screen.pop_window('Invalid mount point','Two file systems must not be assigned the same mount point.\nA root file system is needed.\nPlease correct this by changing mount points.', 50)
|
||||
continue
|
||||
break
|
||||
return (s == 'help' and '0' or s)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user