diff -Nru molotov-1.2/debian/changelog molotov-1.2.1/debian/changelog --- molotov-1.2/debian/changelog 2021-05-30 21:44:00.000000000 +0000 +++ molotov-1.2.1/debian/changelog 2022-05-10 21:21:00.000000000 +0000 @@ -1,3 +1,12 @@ +molotov (1.2.1-1) unstable; urgency=medium + + * New upstream release (v1.2.1) + * Bump standards version to 4.6.0 + * Change package architecture to amd64 + * Update minor stuff in the package system + + -- Cézar Augusto de Campos Tue, 10 May 2022 18:21:00 -0300 + molotov (1.2-1) unstable; urgency=medium * Initial release diff -Nru molotov-1.2/debian/control molotov-1.2.1/debian/control --- molotov-1.2/debian/control 2021-05-30 21:44:00.000000000 +0000 +++ molotov-1.2.1/debian/control 2022-05-10 21:14:22.000000000 +0000 @@ -3,20 +3,20 @@ Priority: optional Maintainer: Cézar Augusto de Campos Build-Depends: debhelper-compat (= 13) -Standards-Version: 4.5.1 +Standards-Version: 4.6.0 Rules-Requires-Root: no -Homepage: https://cizordj.github.io/molotov +Homepage: https://cizordj.codeberg.page/molotov/ Vcs-Browser: https://github.com/cizordj/molotov-debian Vcs-Git: https://github.com/cizordj/molotov-debian.git Package: molotov -Architecture: all +Architecture: amd64 Conflicts: python3-molotov Depends: dash, - mount, + mount (>= 2.37.2), util-linux (>= 2.36), fdisk (>= 2.36), - ntfs-3g, + ntfs-3g (>= 1:2021.8.22), dosfstools (>= 4.1), grub2-common (>= 2.04), grub-efi-amd64-bin (>= 2.04), diff -Nru molotov-1.2/debian/copyright molotov-1.2.1/debian/copyright --- molotov-1.2/debian/copyright 2021-05-30 21:44:00.000000000 +0000 +++ molotov-1.2.1/debian/copyright 2022-05-10 21:14:22.000000000 +0000 @@ -3,14 +3,13 @@ Upstream-Contact: Cézar Augusto de Campos Source: Comment: Why this package is in the contrib area - The reason this package is in this area is because it only does do one thing - and that thing is to manage a Windows iso image and as everyone knows windows - is not free and software that depends on non-free components should go to the - contrib area of the debian. Even though molotov is free software it's pretty - useless without a Windows image. + The reason why molotov is in the contrib area is because it depends on a + Windows image to work and as everyone knows, Windows is proprietary and + every program that depends on that must go the contrib area, + according to the Debian rules Files: * -Copyright: 2020 Cézar Augusto de Campos +Copyright: 2022 Cézar Augusto de Campos License: GPL-3+ License: GPL-3+ diff -Nru molotov-1.2/debian/rules molotov-1.2.1/debian/rules --- molotov-1.2/debian/rules 2021-05-30 21:44:00.000000000 +0000 +++ molotov-1.2.1/debian/rules 2022-05-10 21:14:22.000000000 +0000 @@ -2,5 +2,9 @@ %: dh $@ +override_dh_auto_build: + + echo "Skipping the build process" + override_dh_auto_install: $(MAKE) DESTDIR=$$(pwd)/debian/tmp prefix=/usr install diff -Nru molotov-1.2/debian/upstream/signing-key.asc molotov-1.2.1/debian/upstream/signing-key.asc --- molotov-1.2/debian/upstream/signing-key.asc 2021-05-30 21:44:00.000000000 +0000 +++ molotov-1.2.1/debian/upstream/signing-key.asc 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=kl3Q ------END PGP PUBLIC KEY BLOCK----- diff -Nru molotov-1.2/HACKING.md molotov-1.2.1/HACKING.md --- molotov-1.2/HACKING.md 2021-04-11 00:43:15.000000000 +0000 +++ molotov-1.2.1/HACKING.md 2022-05-10 21:13:40.000000000 +0000 @@ -76,7 +76,8 @@ ### Verbosity -Since our project follows the Unix philosophy it tries not to print anything in the standard output, thus, it passes a **--quiet** parameter to every program it uses to make it less wordy. All possible errors must be handled before the process starts and the programms behavior must to be predictable, that's why we make it silent. +Since our project follows the Unix philosophy it tries not to print anything in the standard output, thus, it passes a **--quiet** parameter to every program it uses to make it less wordy. +All possible errors must be handled before the beggining of the process and the programms' behavior must be predictable, that's one of the reasons why we make it silent. If you need to print anything in the standard output please use the **printOut** function, it will direct the message to the right place depending on whether verbose flag is set or not. This function does not break lines, you have to tell it explicitly to do so. diff -Nru molotov-1.2/Makefile molotov-1.2.1/Makefile --- molotov-1.2/Makefile 2021-04-11 00:43:15.000000000 +0000 +++ molotov-1.2.1/Makefile 2022-05-10 21:13:40.000000000 +0000 @@ -14,10 +14,19 @@ @install -v -d "$(DESTDIR)$(BINDIR)/" && install -m 0755 -v src/molotov "$(DESTDIR)$(BINDIR)/molotov" uninstall: - @rm -v \ + @printf 'Removing the files:\n%s\n%s\n%s\n' \ + "$(DESTDIR)$(BINDIR)/molotov" \ + "$(DESTDIR)$(MANDIR)/man/molotov.1" \ + "$(DESTDIR)$(MANDIR)/pt_BR/man1/molotov.1" + @rm \ "$(DESTDIR)$(BINDIR)/molotov" \ "$(DESTDIR)$(MANDIR)/man1/molotov.1" \ "$(DESTDIR)$(MANDIR)/pt_BR/man1/molotov.1" - @rmdir -v --ignore-fail-on-non-empty -p \ + @printf 'Removing directories:\n%s\n%s\n%s\n' \ + "$(DESTDIR)$(MANDIR)/pt_BR/man1/" \ + "$(DESTDIR)$(MANDIR)/pt_BR/" \ + "$(DESTDIR)$(MANDIR)/man1/" + -@rmdir \ "$(DESTDIR)$(MANDIR)/pt_BR/man1/" \ + "$(DESTDIR)$(MANDIR)/pt_BR/" \ "$(DESTDIR)$(MANDIR)/man1/" diff -Nru molotov-1.2/man/molotov.1 molotov-1.2.1/man/molotov.1 --- molotov-1.2/man/molotov.1 2021-04-11 00:43:15.000000000 +0000 +++ molotov-1.2.1/man/molotov.1 2022-05-10 21:13:40.000000000 +0000 @@ -1,15 +1,15 @@ .\" Hey, EMACS: -*- nroff -*- -.\" (C) Copyright 2020 Cézar Augusto de Campos , -.TH MOLOTOV "1" "April 2021" "Molotov 1.0" "User Commands" +.\" (C) Copyright 2022 Cézar Augusto de Campos , +.TH MOLOTOV "1" "May 2022" "Molotov 1.2.1" "User Commands" .\" Please adjust this date whenever revising the manpage. .SH NAME molotov \- Create a bootable media from a Windows® 10 iso image. .SH DESCRIPTION -Molotov is a command line application that creates a bootable USB drive -from a Windows 10 iso image, the only things you need to have is a flash drive with -8 Gigabytes of space and a Windows ISO image which can be downloaded from the -Microsoft's website. In order to use Molotov you must have root access to your Linux box. +Molotov is a command line utility that creates a bootable USB drive from a +Windows 10 iso image, all you need is a flash drive with enough space and a +Windows image which can be downloaded from Microsoft's website. In order to use +Molotov you must have root access to your system. .SH SYNOPSIS .IP molotov \fB\-i\fR \fB\-d\fR [OPTIONS] diff -Nru molotov-1.2/man/pt_BR/molotov.1 molotov-1.2.1/man/pt_BR/molotov.1 --- molotov-1.2/man/pt_BR/molotov.1 2021-04-11 00:43:15.000000000 +0000 +++ molotov-1.2.1/man/pt_BR/molotov.1 2022-05-10 21:13:40.000000000 +0000 @@ -1,15 +1,16 @@ .\" Hey, EMACS: -*- nroff -*- -.\" (C) Copyright 2020 Cézar Augusto de Campos , -.TH MOLOTOV "1" "Abril de 2021" "Molotov 1.0" "Comandos do usuário" +.\" (C) Copyright 2022 Cézar Augusto de Campos , +.TH MOLOTOV "1" "Maio de 2022" "Molotov 1.2.1" "Comandos do usuário" .\" Please adjust this date whenever revising the manpage. .SH NOME -molotov \- Cria um pendrive bootável a partir de uma imagem iso do Windows® 10. +molotov \- Cria uma mídia inicializável a partir de uma imagem iso do Windows® 10. .SH DESCRIÇÃO -Molotov é um programa de linha de comando que cria pen drives inicializáveis a partir de uma imagem -ISO do Windows 10, as únicas coisas que você precisa ter é um pen drive com pelo menos 8 Gigas de -espaço e uma imagem do Windows que pode ser baixada do site da Microsoft. Para usar o molotov você -precisará de permissões de administrador na sua máquina. +Molotov é um utilitário de linha de comando que cria mídias inicializáveis do +Windows a partir de uma imagem ISO, as únicas coisas que você precisa ter são: +um pen drive com pelo menos 8 Gigabytes de espaço e uma imagem do Windows que +pode ser baixada do site da Microsoft. Para usar o molotov você +precisa ter privilégios de root na sua máquina. .SH SINOPSE .IP molotov \fB\-i\fR \fB\-d\fR [OPÇÕES] diff -Nru molotov-1.2/README.md molotov-1.2.1/README.md --- molotov-1.2/README.md 2021-04-11 00:43:15.000000000 +0000 +++ molotov-1.2.1/README.md 2022-05-10 21:13:40.000000000 +0000 @@ -2,13 +2,15 @@ Create a bootable media from a Windows® 10 iso image. -The Molotov project aims to make it easy to create a bootable flash drive for Windows 10 installation. The script contained in this repository is just a backend and it works. +The Molotov project aims to make it easy to create a bootable flash drive for Windows 10 installation. -Check the website for useless information: [https://cizordj.github.io/molotov/](https://cizordj.github.io/molotov/) +Check the website for useless information: [https://cizordj.codeberg.page/molotov/](https://cizordj.codeberg.page/molotov/) ## How to install -It is recommended to use the versions available in the releases page, theses versions are stable enough for normal usage. Do not pick the binary directly from this repository as it contains bugs and it's not well tested. +It is recommended to use the versions available in the releases page, these +versions are stable enough for normal usage. Do not pick the binary directly +from this repository as it contains bugs and is not well tested. Debian Dependencies: @@ -22,8 +24,29 @@ ## How it works -It is simple too, the molotov formats the block device, puts the iso contents in there and finally installs a boot-loader capable of booting Windows depeding on what type of boot you selected. Remember, molotov is a non-interactive program, so be extremely careful when passing the block device. It won't ask any questions. +It is simple too, the molotov formats the block device, puts the iso contents +in there and finally installs a boot-loader capable of booting Windows depeding +on what type of boot you have selected. Remember, molotov is a non-interactive +program, so be extremely careful when passing the block device. It won't ask +any questions. ## Known limitations -The molotov is still not capable of creating bootable drives from arm64 images and the reason is because the grub-efi-arm64-bin package is not installable on 64 bits versions of Debian. This is a problem that could be solved in just one line of code if that package was available. +The molotov is still not capable of creating bootable drives from arm64 images +and the reason is because the +[grub-efi-arm64-bin](https://packages.debian.org/buster/grub-efi-arm64-bin) +package is not installable on 64 bits versions of Debian. This is a problem +that could be solved in just one line of code if that package was available. + +## Troubleshooting +Some common problems that people find when they use Molotov + +### Black screen with a blinking cursor +After using molotov to create the flash drive and booting from there, the Windows logo +shows up and then disappear leaving you with a black screen and a blinking underscore +on the left. It means that Windows is still booting in the background and it will +take from 5 to 10 minutes to show the installation screen. This is mostly a hardware +problem and is not something that molotov can fix, if you have a worn flash drive +be aware that the transfer speed will be slow and Windows may take forever to boot. +That is why I recommend you to use a 3.0 usb drive because the Windows will +boot up faster. diff -Nru molotov-1.2/src/molotov molotov-1.2.1/src/molotov --- molotov-1.2/src/molotov 2021-04-11 00:43:15.000000000 +0000 +++ molotov-1.2.1/src/molotov 2022-05-10 21:13:40.000000000 +0000 @@ -27,7 +27,7 @@ printVersion(){ cat << EOF -Molotov 1.0 +Molotov 1.2.1 Copyright (C) Cézar Augusto de Campos License: GPL-3+ @@ -104,7 +104,7 @@ formatDeviceForUefi(){ printOut "Removing file system signature from $TARGET_DEVICE\n" - wipefs -q -a "$TARGET_DEVICE"* + wipefs -f -q -a "$TARGET_DEVICE"* printOut "Writing new partition table for $TARGET_DEVICE\n" sfdisk -q "$TARGET_DEVICE" << EOF label: gpt @@ -123,7 +123,7 @@ formatDeviceForCsm(){ printOut "Removing file system signature from $TARGET_DEVICE\n" - wipefs -q -a "$TARGET_DEVICE"* + wipefs -f -q -a "$TARGET_DEVICE"* printOut "Writing new partition table for $TARGET_DEVICE\n" sfdisk -q "$TARGET_DEVICE" << EOF label: dos @@ -156,7 +156,7 @@ printOut "Copying iso contents to $TARGET\n" - copyFiles | while read in + copyFiles | while read -r in do unset in printOut "\r$(( POINTER * 100 / TOTAL))%" @@ -178,17 +178,25 @@ set timeout=0 menuentry "Windows 10" { insmod ntfs - insmod ntldr insmod part_msdos - insmod search_fs_uuid + insmod search + insmod parttool + insmod drivemap + insmod ntldr search --no-floppy --fs-uuid --set=root $(print_UUID) + parttool \${root} hidden- + drivemap -s (hd0) \${root} ntldr /bootmgr + boot } EOF } BOOT_DIRECTORY="$DEVICE_MOUNTPOINT/boot" printOut "Installing grub on $TARGET_DEVICE\n" - grub-install --boot-directory="$BOOT_DIRECTORY" --removable "$TARGET_DEVICE" + grub-install \ + --boot-directory="$BOOT_DIRECTORY" \ + --target="i386-pc" \ + "$TARGET_DEVICE" printOut "Generating grub configuration file\n" generate_config > "$BOOT_DIRECTORY/grub/grub.cfg" } @@ -197,18 +205,26 @@ blkid -o value -s UUID "$SECOND_PARTITION" } generate_config(){ - ROOT='$root' cat << EOF set timeout=0 menuentry "Windows 10" { + insmod chain + insmod search_fs_uuid search --set=root --fs-uuid $(print_UUID) - chainloader ($ROOT)/efi/boot/bootx64.efi + chainloader (\$root)/efi/boot/bootx64.efi } EOF } BOOT_DIRECTORY="$DEVICE_MOUNTPOINT/boot" printOut "Installing grub in the flash drive's EFI partition\n" - grub-install --target="x86_64-efi" --efi-directory="$DEVICE_MOUNTPOINT" --boot-directory="$BOOT_DIRECTORY" --removable --no-nvram --no-uefi-secure-boot + grub-install \ + --target="x86_64-efi" \ + --efi-directory="$DEVICE_MOUNTPOINT" \ + --boot-directory="$BOOT_DIRECTORY" \ + --removable \ + --no-nvram \ + --no-uefi-secure-boot \ + --install-modules="chain search_fs_uuid" printOut "Generating grub configuration file\n" generate_config > "$BOOT_DIRECTORY/grub/grub.cfg" }