Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
86bfabe76f | ||
|
|
1821638f34 | ||
|
|
208609e09c |
+33
-5
@@ -24,6 +24,20 @@ function check_requirements() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function check_iso_and_device() {
|
||||||
|
if [ ! -f "$1" ]
|
||||||
|
then
|
||||||
|
echo "${bold} == ERROR: ISO file not found! ==${normal}"
|
||||||
|
exit 106
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -b "$2" ]
|
||||||
|
then
|
||||||
|
echo "${bold} == ERROR: Device file not found! ==${normal}"
|
||||||
|
exit 107
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function list_removable_drives() {
|
function list_removable_drives() {
|
||||||
lsblk -d -I 8 -o RM,NAME,SIZE,MODEL | \
|
lsblk -d -I 8 -o RM,NAME,SIZE,MODEL | \
|
||||||
awk '($1 == 1) {print "/dev/" substr($0, index($0, $2))}'
|
awk '($1 == 1) {print "/dev/" substr($0, index($0, $2))}'
|
||||||
@@ -39,8 +53,12 @@ function format_drive() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_iso_name() {
|
||||||
|
7z l "$1" | awk '/Comment = / {print $3; exit 0}'
|
||||||
|
}
|
||||||
|
|
||||||
function check_installwim_gt4gib() {
|
function check_installwim_gt4gib() {
|
||||||
7z l "$1" | awk '($6 ~ /install.wim/) {if ($4 > 429496296) {exit 1}; exit}'
|
7z l "$1" | awk '($6 ~ /install.wim/) {if ($4 > 4294967296) {exit 0}; exit 1}'
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_partitions() {
|
function create_partitions() {
|
||||||
@@ -140,13 +158,23 @@ if [[ "$EUID" == "0" ]];
|
|||||||
then
|
then
|
||||||
dev="$1"
|
dev="$1"
|
||||||
isopath="$2"
|
isopath="$2"
|
||||||
|
isolabel=""
|
||||||
labeltype="$3"
|
labeltype="$3"
|
||||||
uefimode=
|
uefimode=
|
||||||
[[ "$labeltype" == "gpt" ]] && uefimode=1
|
[[ "$labeltype" == "gpt" ]] && uefimode=1
|
||||||
[[ "$labeltype" == "gptntfs" ]] && uefimode=1
|
[[ "$labeltype" == "gptntfs" ]] && uefimode=1
|
||||||
partpath="$(mktemp -d /run/windows2usb.XXXXXXXXXX)"
|
|
||||||
|
|
||||||
check_requirements
|
check_requirements
|
||||||
|
check_iso_and_device "$isopath" "$dev"
|
||||||
|
|
||||||
|
isolabel="$(get_iso_name "$isopath")"
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
isolabel=""
|
||||||
|
fi
|
||||||
|
echo "${bold} == Working with ISO $isolabel ==${normal}"
|
||||||
|
|
||||||
|
partpath="$(mktemp -d /run/windows2usb.XXXXXXXXXX)"
|
||||||
trap sigint_handler INT EXIT
|
trap sigint_handler INT EXIT
|
||||||
|
|
||||||
# MBR
|
# MBR
|
||||||
@@ -157,7 +185,7 @@ then
|
|||||||
|
|
||||||
echo "${bold} == Creating NTFS partition ==${normal}"
|
echo "${bold} == Creating NTFS partition ==${normal}"
|
||||||
create_partitions "dos" "$dev"
|
create_partitions "dos" "$dev"
|
||||||
mkfs.ntfs -f "$(get_dev_partition_num "${dev}" "1")"
|
mkfs.ntfs -L "$isolabel" -f "$(get_dev_partition_num "${dev}" "1")"
|
||||||
|
|
||||||
echo "${bold} == Writing bootloader ==${normal}"
|
echo "${bold} == Writing bootloader ==${normal}"
|
||||||
ms-sys -7 "${dev}"
|
ms-sys -7 "${dev}"
|
||||||
@@ -182,7 +210,7 @@ then
|
|||||||
|
|
||||||
echo "${bold} == Creating UEFI FAT partition ==${normal}"
|
echo "${bold} == Creating UEFI FAT partition ==${normal}"
|
||||||
create_partitions "gpt" "$dev"
|
create_partitions "gpt" "$dev"
|
||||||
mkfs.vfat "$(get_dev_partition_num "${dev}" "1")"
|
mkfs.vfat -n "${isolabel:0:11}" "$(get_dev_partition_num "${dev}" "1")"
|
||||||
|
|
||||||
echo "${bold} == Mounting data partition ==${normal}"
|
echo "${bold} == Mounting data partition ==${normal}"
|
||||||
mount "$(get_dev_partition_num "${dev}" "1")" "$partpath"
|
mount "$(get_dev_partition_num "${dev}" "1")" "$partpath"
|
||||||
@@ -196,7 +224,7 @@ then
|
|||||||
echo "${bold} == Creating UEFI FAT and Microsoft NTFS partitions ==${normal}"
|
echo "${bold} == Creating UEFI FAT and Microsoft NTFS partitions ==${normal}"
|
||||||
create_partitions "gptntfs" "$dev"
|
create_partitions "gptntfs" "$dev"
|
||||||
write_uefintfs "$(get_dev_partition_num "${dev}" "1")"
|
write_uefintfs "$(get_dev_partition_num "${dev}" "1")"
|
||||||
mkfs.ntfs -f "$(get_dev_partition_num "${dev}" "2")"
|
mkfs.ntfs -L "$isolabel" -f "$(get_dev_partition_num "${dev}" "2")"
|
||||||
|
|
||||||
echo "${bold} == Mounting data partition ==${normal}"
|
echo "${bold} == Mounting data partition ==${normal}"
|
||||||
mount "$(get_dev_partition_num "${dev}" "2")" "$partpath"
|
mount "$(get_dev_partition_num "${dev}" "2")" "$partpath"
|
||||||
|
|||||||
Reference in New Issue
Block a user