X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpython%2FComponents%2FHarddisk.py;h=7500c33daae832f8df47e318385fc52feede2828;hb=976241064bfb65e737bbfeeecfbd989c927be23f;hp=e5601300d5298e41c169a5886a17a7868e9f1418;hpb=50157b7b9211e46eade402871d7e35142eeb04eb;p=vuplus_dvbapp diff --git a/lib/python/Components/Harddisk.py b/lib/python/Components/Harddisk.py old mode 100644 new mode 100755 index e560130..7500c33 --- a/lib/python/Components/Harddisk.py +++ b/lib/python/Components/Harddisk.py @@ -203,9 +203,45 @@ class Harddisk: res = system(cmd) return (res >> 8) + def checkPartionPath(self, path): + import time, os + for i in range(1,10): + if os.path.exists(path): + return True + time.sleep(1) + return False + def createPartition(self): - cmd = 'printf "0,\n;\n;\n;\ny\n" | sfdisk -f ' + self.disk_path + def CheckPartedVer(): + cmd = 'parted --version' + lines = popen(cmd).readlines() + for l in lines: + if l.find("parted (GNU parted)") != -1: + ver = l.split()[3].strip() + break + try: + ver = float(ver) + except: + print "[CheckPartedVer] check parted version Failed!" + return 0 + return ver + + disk_size = self.diskSize() + + if disk_size > 2.2 * 1000 * 1000: # if 2.2 TB + setAlign = "" + partedVer = CheckPartedVer() + if partedVer >= 2.1: # align option is supported in version 2.1 or later + setAlign = "--align optimal" + cmd = 'parted %s %s --script mklabel gpt mkpart disk ext2 0%% 100%%' % ( setAlign, self.disk_path ) + + else: + cmd = 'printf "8,\n;0,0\n;0,0\n;0,0\ny\n" | sfdisk -f -uS ' + self.disk_path + res = system(cmd) + if not self.checkPartionPath(self.partitionPath("1")): + print "no exist : ", self.partitionPath("1") + return 1 return (res >> 8) def mkfs(self):