diff options
Diffstat (limited to 'scripts/lib/wic/utils/partitionedfs.py')
-rw-r--r-- | scripts/lib/wic/utils/partitionedfs.py | 154 |
1 files changed, 77 insertions, 77 deletions
diff --git a/scripts/lib/wic/utils/partitionedfs.py b/scripts/lib/wic/utils/partitionedfs.py index 2f884a3cb8..5a103bbc7e 100644 --- a/scripts/lib/wic/utils/partitionedfs.py +++ b/scripts/lib/wic/utils/partitionedfs.py | |||
@@ -129,14 +129,14 @@ class Image(object): | |||
129 | self._partitions_layed_out = True | 129 | self._partitions_layed_out = True |
130 | 130 | ||
131 | # Go through partitions in the order they are added in .ks file | 131 | # Go through partitions in the order they are added in .ks file |
132 | for n in range(len(self.partitions)): | 132 | for num in range(len(self.partitions)): |
133 | p = self.partitions[n] | 133 | part = self.partitions[num] |
134 | 134 | ||
135 | if not self.disks.has_key(p['disk_name']): | 135 | if not self.disks.has_key(part['disk_name']): |
136 | raise ImageError("No disk %s for partition %s" \ | 136 | raise ImageError("No disk %s for partition %s" \ |
137 | % (p['disk_name'], p['mountpoint'])) | 137 | % (part['disk_name'], part['mountpoint'])) |
138 | 138 | ||
139 | if ptable_format == 'msdos' and p['part_type']: | 139 | if ptable_format == 'msdos' and part['part_type']: |
140 | # The --part-type can also be implemented for MBR partitions, | 140 | # The --part-type can also be implemented for MBR partitions, |
141 | # in which case it would map to the 1-byte "partition type" | 141 | # in which case it would map to the 1-byte "partition type" |
142 | # filed at offset 3 of the partition entry. | 142 | # filed at offset 3 of the partition entry. |
@@ -144,79 +144,79 @@ class Image(object): | |||
144 | "implemented for msdos partitions") | 144 | "implemented for msdos partitions") |
145 | 145 | ||
146 | # Get the disk where the partition is located | 146 | # Get the disk where the partition is located |
147 | d = self.disks[p['disk_name']] | 147 | disk = self.disks[part['disk_name']] |
148 | d['numpart'] += 1 | 148 | disk['numpart'] += 1 |
149 | if not p['no_table']: | 149 | if not part['no_table']: |
150 | d['realpart'] += 1 | 150 | disk['realpart'] += 1 |
151 | d['ptable_format'] = ptable_format | 151 | disk['ptable_format'] = ptable_format |
152 | 152 | ||
153 | if d['numpart'] == 1: | 153 | if disk['numpart'] == 1: |
154 | if ptable_format == "msdos": | 154 | if ptable_format == "msdos": |
155 | overhead = MBR_OVERHEAD | 155 | overhead = MBR_OVERHEAD |
156 | elif ptable_format == "gpt": | 156 | elif ptable_format == "gpt": |
157 | overhead = GPT_OVERHEAD | 157 | overhead = GPT_OVERHEAD |
158 | 158 | ||
159 | # Skip one sector required for the partitioning scheme overhead | 159 | # Skip one sector required for the partitioning scheme overhead |
160 | d['offset'] += overhead | 160 | disk['offset'] += overhead |
161 | 161 | ||
162 | if d['realpart'] > 3: | 162 | if disk['realpart'] > 3: |
163 | # Reserve a sector for EBR for every logical partition | 163 | # Reserve a sector for EBR for every logical partition |
164 | # before alignment is performed. | 164 | # before alignment is performed. |
165 | if ptable_format == "msdos": | 165 | if ptable_format == "msdos": |
166 | d['offset'] += 1 | 166 | disk['offset'] += 1 |
167 | 167 | ||
168 | 168 | ||
169 | if p['align']: | 169 | if part['align']: |
170 | # If not first partition and we do have alignment set we need | 170 | # If not first partition and we do have alignment set we need |
171 | # to align the partition. | 171 | # to align the partition. |
172 | # FIXME: This leaves a empty spaces to the disk. To fill the | 172 | # FIXME: This leaves a empty spaces to the disk. To fill the |
173 | # gaps we could enlargea the previous partition? | 173 | # gaps we could enlargea the previous partition? |
174 | 174 | ||
175 | # Calc how much the alignment is off. | 175 | # Calc how much the alignment is off. |
176 | align_sectors = d['offset'] % (p['align'] * 1024 / self.sector_size) | 176 | align_sectors = disk['offset'] % (part['align'] * 1024 / self.sector_size) |
177 | 177 | ||
178 | if align_sectors: | 178 | if align_sectors: |
179 | # If partition is not aligned as required, we need | 179 | # If partition is not aligned as required, we need |
180 | # to move forward to the next alignment point | 180 | # to move forward to the next alignment point |
181 | align_sectors = (p['align'] * 1024 / self.sector_size) - align_sectors | 181 | align_sectors = (part['align'] * 1024 / self.sector_size) - align_sectors |
182 | 182 | ||
183 | msger.debug("Realignment for %s%s with %s sectors, original" | 183 | msger.debug("Realignment for %s%s with %s sectors, original" |
184 | " offset %s, target alignment is %sK." % | 184 | " offset %s, target alignment is %sK." % |
185 | (p['disk_name'], d['numpart'], align_sectors, | 185 | (part['disk_name'], disk['numpart'], align_sectors, |
186 | d['offset'], p['align'])) | 186 | disk['offset'], part['align'])) |
187 | 187 | ||
188 | # increase the offset so we actually start the partition on right alignment | 188 | # increase the offset so we actually start the partition on right alignment |
189 | d['offset'] += align_sectors | 189 | disk['offset'] += align_sectors |
190 | 190 | ||
191 | p['start'] = d['offset'] | 191 | part['start'] = disk['offset'] |
192 | d['offset'] += p['size'] | 192 | disk['offset'] += part['size'] |
193 | 193 | ||
194 | p['type'] = 'primary' | 194 | part['type'] = 'primary' |
195 | if not p['no_table']: | 195 | if not part['no_table']: |
196 | p['num'] = d['realpart'] | 196 | part['num'] = disk['realpart'] |
197 | else: | 197 | else: |
198 | p['num'] = 0 | 198 | part['num'] = 0 |
199 | 199 | ||
200 | if d['ptable_format'] == "msdos": | 200 | if disk['ptable_format'] == "msdos": |
201 | if d['realpart'] > 3: | 201 | if disk['realpart'] > 3: |
202 | p['type'] = 'logical' | 202 | part['type'] = 'logical' |
203 | p['num'] = d['realpart'] + 1 | 203 | part['num'] = disk['realpart'] + 1 |
204 | 204 | ||
205 | d['partitions'].append(n) | 205 | disk['partitions'].append(num) |
206 | msger.debug("Assigned %s to %s%d, sectors range %d-%d size %d " | 206 | msger.debug("Assigned %s to %s%d, sectors range %d-%d size %d " |
207 | "sectors (%d bytes)." \ | 207 | "sectors (%d bytes)." \ |
208 | % (p['mountpoint'], p['disk_name'], p['num'], | 208 | % (part['mountpoint'], part['disk_name'], part['num'], |
209 | p['start'], p['start'] + p['size'] - 1, | 209 | part['start'], part['start'] + part['size'] - 1, |
210 | p['size'], p['size'] * self.sector_size)) | 210 | part['size'], part['size'] * self.sector_size)) |
211 | 211 | ||
212 | # Once all the partitions have been layed out, we can calculate the | 212 | # Once all the partitions have been layed out, we can calculate the |
213 | # minumim disk sizes. | 213 | # minumim disk sizes. |
214 | for d in self.disks.values(): | 214 | for disk in self.disks.values(): |
215 | d['min_size'] = d['offset'] | 215 | disk['min_size'] = disk['offset'] |
216 | if d['ptable_format'] == "gpt": | 216 | if disk['ptable_format'] == "gpt": |
217 | d['min_size'] += GPT_OVERHEAD | 217 | disk['min_size'] += GPT_OVERHEAD |
218 | 218 | ||
219 | d['min_size'] *= self.sector_size | 219 | disk['min_size'] *= self.sector_size |
220 | 220 | ||
221 | def __create_partition(self, device, parttype, fstype, start, size): | 221 | def __create_partition(self, device, parttype, fstype, start, size): |
222 | """ Create a partition on an image described by the 'device' object. """ | 222 | """ Create a partition on an image described by the 'device' object. """ |
@@ -237,21 +237,21 @@ class Image(object): | |||
237 | self.layout_partitions() | 237 | self.layout_partitions() |
238 | 238 | ||
239 | for dev in self.disks.keys(): | 239 | for dev in self.disks.keys(): |
240 | d = self.disks[dev] | 240 | disk = self.disks[dev] |
241 | msger.debug("Initializing partition table for %s" % \ | 241 | msger.debug("Initializing partition table for %s" % \ |
242 | (d['disk'].device)) | 242 | (disk['disk'].device)) |
243 | exec_native_cmd("parted -s %s mklabel %s" % \ | 243 | exec_native_cmd("parted -s %s mklabel %s" % \ |
244 | (d['disk'].device, d['ptable_format']), | 244 | (disk['disk'].device, disk['ptable_format']), |
245 | self.native_sysroot) | 245 | self.native_sysroot) |
246 | 246 | ||
247 | msger.debug("Creating partitions") | 247 | msger.debug("Creating partitions") |
248 | 248 | ||
249 | for p in self.partitions: | 249 | for part in self.partitions: |
250 | if p['num'] == 0: | 250 | if part['num'] == 0: |
251 | continue | 251 | continue |
252 | 252 | ||
253 | d = self.disks[p['disk_name']] | 253 | disk = self.disks[part['disk_name']] |
254 | if d['ptable_format'] == "msdos" and p['num'] == 5: | 254 | if disk['ptable_format'] == "msdos" and part['num'] == 5: |
255 | # Create an extended partition (note: extended | 255 | # Create an extended partition (note: extended |
256 | # partition is described in MBR and contains all | 256 | # partition is described in MBR and contains all |
257 | # logical partitions). The logical partitions save a | 257 | # logical partitions). The logical partitions save a |
@@ -263,17 +263,17 @@ class Image(object): | |||
263 | # starts a sector before the first logical partition, | 263 | # starts a sector before the first logical partition, |
264 | # add a sector at the back, so that there is enough | 264 | # add a sector at the back, so that there is enough |
265 | # room for all logical partitions. | 265 | # room for all logical partitions. |
266 | self.__create_partition(d['disk'].device, "extended", | 266 | self.__create_partition(disk['disk'].device, "extended", |
267 | None, p['start'] - 1, | 267 | None, part['start'] - 1, |
268 | d['offset'] - p['start'] + 1) | 268 | disk['offset'] - part['start'] + 1) |
269 | 269 | ||
270 | if p['fstype'] == "swap": | 270 | if part['fstype'] == "swap": |
271 | parted_fs_type = "linux-swap" | 271 | parted_fs_type = "linux-swap" |
272 | elif p['fstype'] == "vfat": | 272 | elif part['fstype'] == "vfat": |
273 | parted_fs_type = "fat32" | 273 | parted_fs_type = "fat32" |
274 | elif p['fstype'] == "msdos": | 274 | elif part['fstype'] == "msdos": |
275 | parted_fs_type = "fat16" | 275 | parted_fs_type = "fat16" |
276 | elif p['fstype'] == "ontrackdm6aux3": | 276 | elif part['fstype'] == "ontrackdm6aux3": |
277 | parted_fs_type = "ontrackdm6aux3" | 277 | parted_fs_type = "ontrackdm6aux3" |
278 | else: | 278 | else: |
279 | # Type for ext2/ext3/ext4/btrfs | 279 | # Type for ext2/ext3/ext4/btrfs |
@@ -281,55 +281,55 @@ class Image(object): | |||
281 | 281 | ||
282 | # Boot ROM of OMAP boards require vfat boot partition to have an | 282 | # Boot ROM of OMAP boards require vfat boot partition to have an |
283 | # even number of sectors. | 283 | # even number of sectors. |
284 | if p['mountpoint'] == "/boot" and p['fstype'] in ["vfat", "msdos"] \ | 284 | if part['mountpoint'] == "/boot" and part['fstype'] in ["vfat", "msdos"] \ |
285 | and p['size'] % 2: | 285 | and part['size'] % 2: |
286 | msger.debug("Substracting one sector from '%s' partition to " \ | 286 | msger.debug("Substracting one sector from '%s' partition to " \ |
287 | "get even number of sectors for the partition" % \ | 287 | "get even number of sectors for the partition" % \ |
288 | p['mountpoint']) | 288 | part['mountpoint']) |
289 | p['size'] -= 1 | 289 | part['size'] -= 1 |
290 | 290 | ||
291 | self.__create_partition(d['disk'].device, p['type'], | 291 | self.__create_partition(disk['disk'].device, part['type'], |
292 | parted_fs_type, p['start'], p['size']) | 292 | parted_fs_type, part['start'], part['size']) |
293 | 293 | ||
294 | if p['part_type']: | 294 | if part['part_type']: |
295 | msger.debug("partition %d: set type UID to %s" % \ | 295 | msger.debug("partition %d: set type UID to %s" % \ |
296 | (p['num'], p['part_type'])) | 296 | (part['num'], part['part_type'])) |
297 | exec_native_cmd("sgdisk --typecode=%d:%s %s" % \ | 297 | exec_native_cmd("sgdisk --typecode=%d:%s %s" % \ |
298 | (p['num'], p['part_type'], | 298 | (part['num'], part['part_type'], |
299 | d['disk'].device), self.native_sysroot) | 299 | disk['disk'].device), self.native_sysroot) |
300 | 300 | ||
301 | if p['uuid']: | 301 | if part['uuid']: |
302 | msger.debug("partition %d: set UUID to %s" % \ | 302 | msger.debug("partition %d: set UUID to %s" % \ |
303 | (p['num'], p['uuid'])) | 303 | (part['num'], part['uuid'])) |
304 | exec_native_cmd("sgdisk --partition-guid=%d:%s %s" % \ | 304 | exec_native_cmd("sgdisk --partition-guid=%d:%s %s" % \ |
305 | (p['num'], p['uuid'], d['disk'].device), | 305 | (part['num'], part['uuid'], disk['disk'].device), |
306 | self.native_sysroot) | 306 | self.native_sysroot) |
307 | 307 | ||
308 | if p['boot']: | 308 | if part['boot']: |
309 | flag_name = "legacy_boot" if d['ptable_format'] == 'gpt' else "boot" | 309 | flag_name = "legacy_boot" if disk['ptable_format'] == 'gpt' else "boot" |
310 | msger.debug("Set '%s' flag for partition '%s' on disk '%s'" % \ | 310 | msger.debug("Set '%s' flag for partition '%s' on disk '%s'" % \ |
311 | (flag_name, p['num'], d['disk'].device)) | 311 | (flag_name, part['num'], disk['disk'].device)) |
312 | exec_native_cmd("parted -s %s set %d %s on" % \ | 312 | exec_native_cmd("parted -s %s set %d %s on" % \ |
313 | (d['disk'].device, p['num'], flag_name), | 313 | (disk['disk'].device, part['num'], flag_name), |
314 | self.native_sysroot) | 314 | self.native_sysroot) |
315 | 315 | ||
316 | # Parted defaults to enabling the lba flag for fat16 partitions, | 316 | # Parted defaults to enabling the lba flag for fat16 partitions, |
317 | # which causes compatibility issues with some firmware (and really | 317 | # which causes compatibility issues with some firmware (and really |
318 | # isn't necessary). | 318 | # isn't necessary). |
319 | if parted_fs_type == "fat16": | 319 | if parted_fs_type == "fat16": |
320 | if d['ptable_format'] == 'msdos': | 320 | if disk['ptable_format'] == 'msdos': |
321 | msger.debug("Disable 'lba' flag for partition '%s' on disk '%s'" % \ | 321 | msger.debug("Disable 'lba' flag for partition '%s' on disk '%s'" % \ |
322 | (p['num'], d['disk'].device)) | 322 | (part['num'], disk['disk'].device)) |
323 | exec_native_cmd("parted -s %s set %d lba off" % \ | 323 | exec_native_cmd("parted -s %s set %d lba off" % \ |
324 | (d['disk'].device, p['num']), | 324 | (disk['disk'].device, part['num']), |
325 | self.native_sysroot) | 325 | self.native_sysroot) |
326 | 326 | ||
327 | def cleanup(self): | 327 | def cleanup(self): |
328 | if self.disks: | 328 | if self.disks: |
329 | for dev in self.disks: | 329 | for dev in self.disks: |
330 | d = self.disks[dev] | 330 | disk = self.disks[dev] |
331 | try: | 331 | try: |
332 | d['disk'].cleanup() | 332 | disk['disk'].cleanup() |
333 | except: | 333 | except: |
334 | pass | 334 | pass |
335 | 335 | ||
@@ -354,8 +354,8 @@ class Image(object): | |||
354 | 354 | ||
355 | def create(self): | 355 | def create(self): |
356 | for dev in self.disks.keys(): | 356 | for dev in self.disks.keys(): |
357 | d = self.disks[dev] | 357 | disk = self.disks[dev] |
358 | d['disk'].create() | 358 | disk['disk'].create() |
359 | 359 | ||
360 | self.__format_disks() | 360 | self.__format_disks() |
361 | 361 | ||