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.
174 lines
6.4 KiB
174 lines
6.4 KiB
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright 2010-2015 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 sys
|
|
from os import path
|
|
|
|
from calculate.lib.cl_lang import setLocalTranslate
|
|
|
|
setLocalTranslate('cl_install3', sys.modules[__name__])
|
|
|
|
|
|
class FileSystemManager(object):
|
|
"""Convert dict install option"""
|
|
|
|
defaultOpt = ['noatime']
|
|
defaultBindOpts = ['bind']
|
|
supportFS = {
|
|
'ext2': {'defaultopt': defaultOpt,
|
|
'format': '/sbin/mkfs.ext2',
|
|
'formatparam': '{labelparam} {device}',
|
|
'gpt': '8300',
|
|
'label': '-L {labelname}',
|
|
'ssd': [],
|
|
'msdos': '83',
|
|
'type': ['hdd', 'usb-hdd']},
|
|
'ext3': {'defaultopt': defaultOpt,
|
|
'format': '/sbin/mkfs.ext3',
|
|
'formatparam': '{labelparam} {device}',
|
|
'gpt': '8300',
|
|
'label': '-L {labelname}',
|
|
'ssd': [],
|
|
'msdos': '83',
|
|
'type': ['hdd', 'usb-hdd']},
|
|
'ext4': {'defaultopt': defaultOpt,
|
|
'format': '/sbin/mkfs.ext4',
|
|
'formatparam': '{labelparam} {device}',
|
|
'gpt': '8300',
|
|
'label': '-L {labelname}',
|
|
'ssd': ['discard'],
|
|
'msdos': '83',
|
|
'type': ['hdd', 'usb-hdd']},
|
|
'reiserfs': {'defaultopt': defaultOpt,
|
|
'format': '/sbin/mkfs.reiserfs',
|
|
'formatparam': '{labelparam} -f {device}',
|
|
'gpt': '8300',
|
|
'label': '-l {labelname}',
|
|
'msdos': '83',
|
|
'ssd': [],
|
|
'type': ['hdd', 'usb-hdd']},
|
|
'btrfs': {'defaultopt': defaultOpt,
|
|
'format': '/sbin/mkfs.btrfs',
|
|
'formatparam': '{labelparam} -f {device}',
|
|
'gpt': '8300',
|
|
'label': '-L {labelname}',
|
|
'msdos': '83',
|
|
'ssd': ['ssd', 'discard', 'space_cache'],
|
|
'type': ['hdd', 'usb-hdd']},
|
|
'jfs': {'defaultopt': defaultOpt,
|
|
'format': '/sbin/mkfs.jfs',
|
|
'formatparam': '{labelparam} -f {device}',
|
|
'gpt': '8300',
|
|
'label': '-L {labelname}',
|
|
'msdos': '83',
|
|
'ssd': ['discard'],
|
|
'type': ['hdd', 'usb-hdd']},
|
|
'xfs': {'defaultopt': defaultOpt,
|
|
'format': '/sbin/mkfs.xfs',
|
|
'formatparam': '{labelparam} -f {device}',
|
|
'gpt': '8300',
|
|
'label': '-L {labelname}',
|
|
'msdos': '83',
|
|
'ssd': ['discard'],
|
|
'type': ['hdd', 'usb-hdd']},
|
|
'nilfs2': {'defaultopt': defaultOpt,
|
|
'format': '/sbin/mkfs.nilfs2',
|
|
'formatparam': '{labelparam} {device}',
|
|
'gpt': '8300',
|
|
'label': '-L {labelname}',
|
|
'msdos': '83',
|
|
'ssd': [],
|
|
'type': ['hdd', 'usb-hdd']},
|
|
'swap': {'defaultopt': ['sw'],
|
|
'format': '/sbin/mkswap',
|
|
'formatparam': '{device}',
|
|
'gpt': '8200',
|
|
'label': '',
|
|
'ssd': [],
|
|
'msdos': '82'},
|
|
'uefi': {'defaultopt': defaultOpt,
|
|
'format': '/usr/sbin/mkfs.vfat',
|
|
'formatparam': '{labelparam} -F 32 {device}',
|
|
'gpt': 'EF00',
|
|
'label': '-n {labelname}',
|
|
'msdos': '0b',
|
|
'ssd': [],
|
|
'type': ['hdd']},
|
|
'vfat': {'defaultopt': defaultOpt,
|
|
'format': '/usr/sbin/mkfs.vfat',
|
|
'formatparam': '{labelparam} -F 32 {device}',
|
|
'gpt': '0700',
|
|
'label': '-n {labelname}',
|
|
'msdos': '0b',
|
|
'ssd': ['discard'],
|
|
'type': ['flash']},
|
|
'ntfs': {'defaultopt': defaultOpt,
|
|
'format': '/usr/sbin/mkfs.ntfs',
|
|
'formatparam': '{labelparam} -FQ {device}',
|
|
'gpt': '8300',
|
|
'label': '-L {labelname}',
|
|
'msdos': '7',
|
|
'ssd': [],
|
|
'compatible': ['ntfs-3g']},
|
|
'ntfs-3g': {'defaultopt': defaultOpt,
|
|
'format': '/usr/sbin/mkfs.ntfs',
|
|
'formatparam': '{labelparam} -FQ {device}',
|
|
'gpt': '8300',
|
|
'label': '-L {labelname}',
|
|
'ssd': [],
|
|
'msdos': '7',
|
|
'compatible': ['ntfs']}}
|
|
|
|
default_param = {'defaultopt': defaultOpt,
|
|
'ssd': []}
|
|
|
|
@classmethod
|
|
def firstAvailable(cls, listFS):
|
|
for fs in listFS:
|
|
if path.exists(cls.supportFS['format']):
|
|
return fs
|
|
else:
|
|
return ""
|
|
|
|
defaultFS = {
|
|
'hdd': ("ext4"
|
|
if path.exists(supportFS['ext4']['format']) else
|
|
"reiserfs"
|
|
if path.exists(supportFS['reiserfs']['format']) else
|
|
"ext3"),
|
|
'flash': "vfat",
|
|
'usb-hdd': ("ext4"
|
|
if path.exists(supportFS['ext4']['format']) else
|
|
"reiserfs"
|
|
if path.exists(supportFS['reiserfs']['format']) else
|
|
"ext3")
|
|
}
|
|
|
|
@classmethod
|
|
def getDefaultOpt(cls, fs, ssd=False):
|
|
return ",".join(cls.supportFS.get(fs, cls.default_param)['defaultopt'] +
|
|
(cls.supportFS.get(fs, cls.default_param)['ssd']
|
|
if ssd else []))
|
|
|
|
@classmethod
|
|
def checkFSForTypeMount(cls, fs, roottype, mp):
|
|
if mp == '/boot/efi':
|
|
if fs not in ('uefi', 'vfat'):
|
|
return False
|
|
else:
|
|
return True
|
|
return roottype in cls.supportFS.get(fs, {}).get('type', [])
|