etcher-sdk 8.5.2 → 8.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -16,6 +16,16 @@ export declare const getPartitionBoundaries: (source: SourceDestination, partiti
|
|
|
16
16
|
start: number;
|
|
17
17
|
end: number | undefined;
|
|
18
18
|
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Calculate the size required for a partition to contain the contents of
|
|
21
|
+
* the provided source partition. On Windows, rounds up to nearest MB due to
|
|
22
|
+
* limitations of partitioning tools.
|
|
23
|
+
*
|
|
24
|
+
* @param {SourceDestination} source - Device containing requested partition
|
|
25
|
+
* @param {number} partitionIndex - 1-based index of requested partition
|
|
26
|
+
* @returns calculated size in bytes
|
|
27
|
+
*/
|
|
28
|
+
export declare const calcRequiredPartitionSize: (source: SourceDestination, partitionIndex?: number) => Promise<number>;
|
|
19
29
|
/**
|
|
20
30
|
* Copy a partition, referenced by index, from an image file to a block device,
|
|
21
31
|
* @param {File} source - source image for partition
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTargetBlockDevice = exports.copyPartitionFromImageToDevice = exports.getPartitionBoundaries = exports.findNewPartitions = void 0;
|
|
3
|
+
exports.getTargetBlockDevice = exports.copyPartitionFromImageToDevice = exports.calcRequiredPartitionSize = exports.getPartitionBoundaries = exports.findNewPartitions = void 0;
|
|
4
|
+
const process = require("process");
|
|
4
5
|
const drivelist = require("drivelist");
|
|
5
6
|
const source_destination_1 = require("../source-destination");
|
|
6
7
|
/**
|
|
@@ -41,6 +42,31 @@ const getPartitionBoundaries = async (source, partitionIndex = 1) => {
|
|
|
41
42
|
};
|
|
42
43
|
};
|
|
43
44
|
exports.getPartitionBoundaries = getPartitionBoundaries;
|
|
45
|
+
/**
|
|
46
|
+
* Calculate the size required for a partition to contain the contents of
|
|
47
|
+
* the provided source partition. On Windows, rounds up to nearest MB due to
|
|
48
|
+
* limitations of partitioning tools.
|
|
49
|
+
*
|
|
50
|
+
* @param {SourceDestination} source - Device containing requested partition
|
|
51
|
+
* @param {number} partitionIndex - 1-based index of requested partition
|
|
52
|
+
* @returns calculated size in bytes
|
|
53
|
+
*/
|
|
54
|
+
const calcRequiredPartitionSize = async (source, partitionIndex = 1) => {
|
|
55
|
+
const sourceBoundaries = await (0, exports.getPartitionBoundaries)(source, partitionIndex);
|
|
56
|
+
const sourcePartitionSize = sourceBoundaries.end - sourceBoundaries.start;
|
|
57
|
+
const alignmentBuffer = 4096;
|
|
58
|
+
if (isNaN(sourcePartitionSize)) {
|
|
59
|
+
throw Error("Not able to find source partition size.");
|
|
60
|
+
}
|
|
61
|
+
if (process.platform == 'win32') {
|
|
62
|
+
let sizeMB = Math.ceil((sourcePartitionSize + alignmentBuffer) / (1024 * 1024));
|
|
63
|
+
return sizeMB * 1024 * 1024;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return sourcePartitionSize + alignmentBuffer;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.calcRequiredPartitionSize = calcRequiredPartitionSize;
|
|
44
70
|
/**
|
|
45
71
|
* Copy a partition, referenced by index, from an image file to a block device,
|
|
46
72
|
* @param {File} source - source image for partition
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../lib/migrator/helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../lib/migrator/helpers.ts"],"names":[],"mappings":"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"}
|
package/build/migrator/index.js
CHANGED
|
@@ -12,6 +12,7 @@ const util_1 = require("util");
|
|
|
12
12
|
const child_process_1 = require("child_process");
|
|
13
13
|
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
14
14
|
const os_1 = require("os");
|
|
15
|
+
const fs_1 = require("fs");
|
|
15
16
|
/** Determine if running as administrator. */
|
|
16
17
|
async function isElevated() {
|
|
17
18
|
// `fltmc` is available on WinPE, XP, Vista, 7, 8, and 10
|
|
@@ -28,6 +29,9 @@ async function isElevated() {
|
|
|
28
29
|
}
|
|
29
30
|
return true;
|
|
30
31
|
}
|
|
32
|
+
function formatMB(bytes) {
|
|
33
|
+
return (bytes / (1024 * 1024)).toFixed(2);
|
|
34
|
+
}
|
|
31
35
|
/**
|
|
32
36
|
* @summary Sets up a UEFI based computer running Windows to switch to balenaOS, and then reboots to execute the switch.
|
|
33
37
|
* !!! WARNING !!! Running this function will OVERWRITE AND DESTROY the operating system running on this computer.
|
|
@@ -41,9 +45,8 @@ async function isElevated() {
|
|
|
41
45
|
const migrate = async (imagePath, windowsPartition = 'C', deviceName = '\\\\.\\PhysicalDrive0', efiLabel = 'M') => {
|
|
42
46
|
console.log(`Migrate ${deviceName} with image ${imagePath}`);
|
|
43
47
|
try {
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const ROOTA_PARTITION_SIZE_MB = 3850;
|
|
48
|
+
const BOOT_PARTITION_INDEX = 1;
|
|
49
|
+
const ROOTA_PARTITION_INDEX = 2;
|
|
47
50
|
const BOOT_FILES_SOURCE_PATH = '/EFI/BOOT';
|
|
48
51
|
const BOOT_FILES_TARGET_PATH = '/EFI/Boot';
|
|
49
52
|
const REBOOT_DELAY_SEC = 10;
|
|
@@ -54,27 +57,38 @@ const migrate = async (imagePath, windowsPartition = 'C', deviceName = '\\\\.\\P
|
|
|
54
57
|
if (!(await isElevated())) {
|
|
55
58
|
throw Error("User is not administrator");
|
|
56
59
|
}
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
if (!(0, fs_1.existsSync)(imagePath)) {
|
|
61
|
+
throw Error(`Image ${imagePath} not found`);
|
|
62
|
+
}
|
|
63
|
+
// Determine required partition sizes and free space. Calculations are in
|
|
64
|
+
// units of bytes. However, on Windows, required sizes are rounded up to
|
|
65
|
+
// the nearest MB due to tool limitations.
|
|
66
|
+
const source = new source_destination_1.File({ path: imagePath });
|
|
67
|
+
const requiredBootSize = await (0, helpers_1.calcRequiredPartitionSize)(source, BOOT_PARTITION_INDEX);
|
|
68
|
+
console.log(`Require ${requiredBootSize} (${formatMB(requiredBootSize)} MB) for boot partition`);
|
|
69
|
+
const requiredRootASize = await (0, helpers_1.calcRequiredPartitionSize)(source, ROOTA_PARTITION_INDEX);
|
|
70
|
+
console.log(`Require ${requiredRootASize} (${formatMB(requiredRootASize)} MB) for rootA partition`);
|
|
71
|
+
const requiredFreeSize = requiredBootSize + requiredRootASize;
|
|
72
|
+
const unallocSpace = (await diskpart.getUnallocatedSize(deviceName)) * 1024;
|
|
73
|
+
console.log(`Found ${unallocSpace} (${formatMB(unallocSpace)} MB) not allocated on disk ${deviceName}`);
|
|
59
74
|
// Shrink partition as needed to provide required unallocated space.
|
|
60
75
|
// Shrink amount must be for *all* of required space to ensure it is contiguous.
|
|
61
76
|
// IOW, don't assume the shrink will merge with any existing unallocated space.
|
|
62
|
-
if (unallocSpace
|
|
77
|
+
if (unallocSpace < requiredFreeSize) {
|
|
63
78
|
// must force upper case
|
|
64
79
|
const freeSpace = await checkDiskSpace(`${windowsPartition.toUpperCase()}:\\`);
|
|
65
|
-
if (
|
|
66
|
-
throw Error(`Need at least ${
|
|
80
|
+
if (freeSpace.free < requiredFreeSize) {
|
|
81
|
+
throw Error(`Need at least ${requiredFreeSize} (${formatMB(requiredFreeSize)} MB) free on partition ${windowsPartition}`);
|
|
67
82
|
}
|
|
68
|
-
console.log(`Shrink partition ${windowsPartition} by ${
|
|
69
|
-
await diskpart.shrinkPartition(windowsPartition,
|
|
83
|
+
console.log(`Shrink partition ${windowsPartition} by ${requiredFreeSize} (${formatMB(requiredFreeSize)} MB)`);
|
|
84
|
+
await diskpart.shrinkPartition(windowsPartition, requiredFreeSize / (1024 * 1024));
|
|
70
85
|
}
|
|
71
86
|
// create partitions
|
|
72
87
|
// device from file, containing source partitions
|
|
73
|
-
const source = new source_destination_1.File({ path: imagePath });
|
|
74
88
|
const targetDevice = await (0, helpers_1.getTargetBlockDevice)(windowsPartition);
|
|
75
89
|
const originalPartitions = await targetDevice.getPartitionTable();
|
|
76
90
|
console.log("Create flasherBootPartition");
|
|
77
|
-
await diskpart.createPartition(deviceName,
|
|
91
|
+
await diskpart.createPartition(deviceName, requiredBootSize / (1024 * 1024));
|
|
78
92
|
const afterFirstPartitions = await targetDevice.getPartitionTable();
|
|
79
93
|
const firstNewPartition = (0, helpers_1.findNewPartitions)(originalPartitions, afterFirstPartitions);
|
|
80
94
|
if (firstNewPartition.length !== 1) {
|
|
@@ -83,7 +97,7 @@ const migrate = async (imagePath, windowsPartition = 'C', deviceName = '\\\\.\\P
|
|
|
83
97
|
const targetBootPartition = firstNewPartition[0];
|
|
84
98
|
console.log(`Created new partition for boot at offset ${targetBootPartition.offset} with size ${targetBootPartition.size}`);
|
|
85
99
|
console.log("Create flasherRootAPartition");
|
|
86
|
-
await diskpart.createPartition(deviceName,
|
|
100
|
+
await diskpart.createPartition(deviceName, requiredRootASize / (1024 * 1024));
|
|
87
101
|
const afterSecondPartitions = await targetDevice.getPartitionTable();
|
|
88
102
|
const secondNewPartition = (0, helpers_1.findNewPartitions)(afterFirstPartitions, afterSecondPartitions);
|
|
89
103
|
if (secondNewPartition.length !== 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/migrator/index.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,mDAAmD;AAEnD,wCAAwC;AACxC,8DAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/migrator/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "etcher-sdk",
|
|
3
|
-
"version": "8.5.
|
|
3
|
+
"version": "8.5.3",
|
|
4
4
|
"description": "Etcher SDK",
|
|
5
5
|
"author": "Balena Ltd <hello@balena.io>",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -105,6 +105,6 @@
|
|
|
105
105
|
"node": ">=16"
|
|
106
106
|
},
|
|
107
107
|
"versionist": {
|
|
108
|
-
"publishedAt": "2023-04-
|
|
108
|
+
"publishedAt": "2023-04-13T17:50:47.201Z"
|
|
109
109
|
}
|
|
110
110
|
}
|