diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..2b6c3e81d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,39 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +--- +name: Bug report +about: Create a report to help us fix your issue + +--- + + +**Describe the bug** +Add a clear and concise description of what you think the bug is. + +**To reproduce** +List the steps required to reproduce the issue. + +**Expected behaviour** +Add a clear and concise description of what you expected to happen. + +**Actual behaviour** +Add a clear and concise description of what actually happened. + +**System** +Add answers to the following questions: + +* Which model of Raspberry Pi? e.g. Pi3B+, PiZeroW +* Which version of PINN? + +**Logs** +If applicable, add the relevant output from `/tmp/debug` or `dmesg`. + +**Additional context** +Add any other relevant context for the problem. diff --git a/history.md b/history.md index cb654136b..a26d7e942 100644 --- a/history.md +++ b/history.md @@ -5,6 +5,11 @@ PINN is a version of the NOOBS Operating System Installer for the Raspberry Pi w ## Change History +### V3.9.2 + +- **HDMI2** - fixed crash when using HDMI2 on Pi4 +- **Translation** - Updated Czech translation + ### V3.9.1 - **Update** - Update Italian. Update process deletes all of boot. diff --git a/recovery/config.h b/recovery/config.h index 0bed78ae4..167fb9bed 100644 --- a/recovery/config.h +++ b/recovery/config.h @@ -3,7 +3,7 @@ /* Version number displayed in the title bar */ -#define VERSION_NUMBER "3.9.1" +#define VERSION_NUMBER "3.9.2" /* Color of the background */ // #define BACKGROUND_COLOR Qt::white diff --git a/recovery/config.txt b/recovery/config.txt index 77a83caec..28a3be864 100644 --- a/recovery/config.txt +++ b/recovery/config.txt @@ -5,6 +5,9 @@ fixup_file=fixup.dat disable_overscan=1 initramfs pinn.rfs +[HDMI1] +hdmi_force_hotplug=1 + [pi4] start_file=start4.elf fixup_file=fixup4.dat diff --git a/recovery/initdrivethread.h b/recovery/initdrivethread.h index 6280597b5..5ce6ae4a3 100644 --- a/recovery/initdrivethread.h +++ b/recovery/initdrivethread.h @@ -22,12 +22,12 @@ class InitDriveThread : public QThread bool formatUsbDrive(); static bool saveBootFiles(); static bool restoreBootFiles(); + static int sizeofBootFilesInKB(); protected: virtual void run(); bool method_resizePartitions(); - int sizeofBootFilesInKB(); uint sizeofSDCardInBlocks(); bool mountSystemPartition(); bool umountSystemPartition(); diff --git a/recovery/mainwindow.cpp b/recovery/mainwindow.cpp index 0fa75b930..3773cc7fd 100644 --- a/recovery/mainwindow.cpp +++ b/recovery/mainwindow.cpp @@ -4636,23 +4636,15 @@ int MainWindow::updatePinn() int error=0; int dummy; //When PINN is updated, We don't need these files to be extracted - QString exclusions = " -x cmdline.txt -x updatepinn -x exclude.txt"; + QString exclusions = " -x cmdline.txt -x preupdate -x postupdate -x exclude.txt"; readexec(1,"mount -o remount,rw /mnt",dummy); - //First we'll extract these 2 files to /tmp to automate hte update process - readexec(1,"unzip /tmp/pinn-lite.zip -o exclude.txt updatepinn preupdate -d /tmp",dummy); + //First we'll extract these 2 files to /tmp to automate the update process + readexec(1,"unzip /tmp/pinn-lite.zip -o exclude.txt preupdate postupdate -d /tmp",dummy); - //Save the existing installation in case of failure - if (_qpdup) - ((QProgressDialog*)_qpdup)->setLabel( new QLabel(tr("Saving current version"))); - QApplication::processEvents(); - - - InitDriveThread::saveBootFiles(); - - //In case we need to do some additional upgrade processing + //In case we need to do some additional pre-update processing if (QFile::exists("/tmp/preupdate")) { if (_qpdup) @@ -4685,35 +4677,23 @@ int MainWindow::updatePinn() QString cmd = "unzip /tmp/pinn-lite.zip -o" + exclusions + " -d /mnt"; readexec(1,cmd,dummy); - - //In case we need to do some additional upgrade processing - if (QFile::exists("/tmp/updatepinn")) - { - if (_qpdup) - ((QProgressDialog*)_qpdup)->setLabel( new QLabel(tr("Executing updatepinn"))); - QApplication::processEvents(); - - QProcess::execute("chmod +x /tmp/updatepinn"); - error = QProcess::execute("/tmp/updatepinn"); - } } - if (error) - { - int dummy; - QString cmd; - - qDebug() << "preupdate failed."; - cmd = "sh -c \" cd /mnt; rm -rf *\""; - QString type = readexec(1,cmd, dummy); + //In case we need to do some additional upgrade processing + if (QFile::exists("/tmp/postupdate")) + { if (_qpdup) - { - ((QProgressDialog*)_qpdup)->setLabel( new QLabel(tr("Update failed. Restoring previous version."))); - QApplication::processEvents(); - } + ((QProgressDialog*)_qpdup)->setLabel( new QLabel(tr("Executing postupdate"))); + QApplication::processEvents(); - InitDriveThread::restoreBootFiles(); + QProcess::execute("chmod +x /tmp/postupdate"); + QString cmd = "/tmp/postupdate " + QString::number(error); + QProcess::execute(cmd); + } + if (error) + { + qDebug() << "update failed."; } QProcess::execute("mount -o remount,ro /mnt"); diff --git a/recovery/translation_cs.ts b/recovery/translation_cs.ts index df594f4cb..73a2e26c0 100644 --- a/recovery/translation_cs.ts +++ b/recovery/translation_cs.ts @@ -93,7 +93,7 @@ composite NTSC mode - Kompozitní NTSC mód + kompozitní NTSC mód PINN - Previously selected OS will boot in %1 seconds @@ -128,7 +128,7 @@ DateTimeDialog Set Date & Time - Nastavení Datumu & Času + Nastav Da&tum a Čas Please set the correct UTC date and time below. @@ -243,7 +243,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě Error zero'ing MBR/GPT. SD card may be broken or advertising wrong capacity. - Chyba zero'ing MBR/GPT. SD karta může být poškozena nebo vykazuje špatnou velikost. + Chyba mazan'i MBR/GPT. SD karta může být poškozena nebo vykazuje špatnou velikost. Writing new MBR @@ -399,7 +399,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě Online help (h) - Dokumentace RPi + Online pomoc (h) Opens a web browser displaying the Raspberry Pi Forum. @@ -419,7 +419,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě Download (d) - Stahování (d) + Stahovat (d) Downloads the selected operating system image to USB for local installation @@ -471,7 +471,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě Set Date & Time Set Data & Time - Nastavit Datum & Čas + Nastavit Da&tum a Čas T @@ -479,7 +479,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě Alias (a) - Přejmenovat systém (a) + Pojmenovat jako (a) Rename an OS with an alias @@ -673,7 +673,7 @@ Opravdu chcete pokračovat? Warning: incompatible Operating System(s) detected. The following OSes aren't supported on this revision of Raspberry Pi and may fail to boot or function correctly: - Upozornění: Zjištěn(y) nekompatibilní Operační Systém(y). Následující OS aren't nejsou podporovány tímto Raspberry Pi a mohou selhat při startu nebo nefungovat správně: + Upozornění: Zjištěn(y) nekompatibilní Operační Systém(y). Následující OS nejsou podporovány tímto Raspberry Pi a mohou selhat při startu nebo nefungovat správně: ReInstall OSes @@ -866,36 +866,36 @@ Chcete pokračovat? PINN will now update and reboot in a few secs... - + PINN se nyní začne aktualizovat ... PINN update failed - + Aktualizace PINNu selhala Saving current version - + Uložení současné verze Executing preupdate - + Probíhá předaktualizace Extracting update - + Rozbalení aktualizace Executing updatepinn - + Probíhá aktualizace PINNu Update failed. Restoring previous version. - + Aktualizace selhala. Obnovuji předchozí verzi. Error: No OSes selected (Do not choose RISC OS or PINN) - Žádné systémy nejsou vybrány + Chyba: Žádné systémy nejsou vybrány (Nevybírejte RISC OS ani PINN) @@ -1121,7 +1121,7 @@ Další start jednotky obnoví původní strukturu oddílů PINN's Zero'ing start of each partition - Zero'ing start každého oddílu + Nulovan'i startu každého oddílu . @@ -1268,7 +1268,7 @@ Oddíl není dost velký pro nový obraz. noobs&config noobsconfig - noobs nastavení (&c) + noobs&config Reserve some space on PINN's partition (MB) @@ -1277,7 +1277,7 @@ Oddíl není dost velký pro nový obraz. re&serve= reserve= - re&serva= + re&serve= Specifies a path or URL where the noobsconfig customisation files can be found (rather than being in /os/&lt;distro&gt;/) @@ -1328,7 +1328,7 @@ Oddíl není dost velký pro nový obraz. Waits for all OS lists to be downloaded from the internet before checking the list of OSes - Před kontrolou seznamu OS čeká na stažení všech seznamů OSů z internetu + Před kontrolou seznamu OS čeká na stažení všech seznamů systémů z internetu Waits for OSes from all sources to be listed @@ -1390,7 +1390,7 @@ Oddíl není dost velký pro nový obraz. Booting - Startování + Startuji When used in conjunction with forcetrigger it sets a maximum timeout period in seconds for the recovery menu to be displayed before continuing to the boot selection dialog and potentially selecting a default OS to boot. @@ -1678,7 +1678,7 @@ Oddíl není dost velký pro nový obraz. Warning: You have chosen the 'runinstaller' option. This will erase all your OSes on next boot. Are you sure? - Upozornění: Vybrali jste 'runinstaller' option. + Upozornění: Vybrali jste volbu 'runinstaller' . Toto vymaže všechny vaše systémy při dalším startu. Jste si jistý? @@ -1715,15 +1715,15 @@ Jste si jistý? Testing - + Testovací Legacy - + Postarší Sailing - + Plachtění RECOMMENDED @@ -1740,7 +1740,7 @@ Jste si jistý? INSTALLED INSTALOVÁNO - + INSTALOVÁNO @@ -2561,7 +2561,7 @@ Break &Show Password - Zobrazit He&Slo + Zobrazit He&slo &Virtual Keyboard @@ -2612,55 +2612,55 @@ Break adjustSizes Adjust size of OSes - + Nastavení velikosti OS(ů) Nominal (MB) - + Jmenovitá (MB) Extra (MB) - + Navíc (MB) Total (MB) - + Celkem (MB) Clear - + Vymazat Balance - + Vyvážit (*) non-expanding - + (*) nerozšiřitelné Capacity: 0MB - + Kapacita: 0MB Free: 0MB - + Volno: 0MB Used: 0MB - + Použito: 0MB Used - + Použito Free - + Volno Capacity - + Kapacita @@ -2802,7 +2802,7 @@ Break Maybe insert source USB stick - Můžete vložit jako zdroj USB disk + Můžete vložit zdrojový USB disk does not support re-running the setup script. diff --git a/sdcontent/postupdate b/sdcontent/postupdate new file mode 100755 index 000000000..b23e869cb --- /dev/null +++ b/sdcontent/postupdate @@ -0,0 +1,12 @@ +#!/bin/sh + +set -x +error=$1 +output="/tmp/mnt" + +if [ ! $error -eq 0 ]; then + #preupdate failed, so restore saved files. + cp -a $output/* /mnt + exit 1 +fi + diff --git a/sdcontent/preupdate b/sdcontent/preupdate index 315a920e7..26a41fe1b 100755 --- a/sdcontent/preupdate +++ b/sdcontent/preupdate @@ -8,6 +8,7 @@ mntsize=`df | grep /mnt | sed 's|\s\+|,|g' | cut -d ',' -f 2` cd /mnt +#Save these files if [ -f recovery.rfs ]; then cp recovery.cmdline /tmp/cmdline.txt else @@ -15,8 +16,25 @@ else fi cp config.txt /tmp/config.bak -#REMOVE ALL BOOT FILES! -rm -rf * +#Move all files/folders except /os to tmp +output="/tmp/mnt" +mkdir -p $output + +for f in * +do + if [ -f $f ]; then + mv $f $output + fi + if [ -d $f ]; then + case $f in + defaults | overlays | overlays6) + mv $f $output + ;; + *) + ;; + esac + fi +done #Restore saved settings cp /tmp/cmdline.txt /mnt @@ -32,7 +50,7 @@ if [ $mntsize -lt $orgsize ]; then sync fi -#Use new configuration +#Use new config.txt file unzip -o /tmp/pinn-lite.zip config.txt #Update the cmdline with saved info @@ -50,9 +68,9 @@ while read a; do done < /tmp/exclude.txt pi5minsize=$(expr 1520 + $(unzip -l /tmp/pinn-lite.zip $exclude |tail -n1 | sed 's|\s\+| |g'| sed 's|^ ||' | cut -d ' ' -f 1) / 1024) +#Find out how much free spaces is left now on /mnt freesize=`df | grep /mnt | sed 's|\s\+|,|g' | cut -d ',' -f 4` - sync if [ $freesize -lt $pi5minsize ]; then diff --git a/sdcontent/updatepinn b/sdcontent/updatepinn new file mode 100755 index 000000000..b23e869cb --- /dev/null +++ b/sdcontent/updatepinn @@ -0,0 +1,12 @@ +#!/bin/sh + +set -x +error=$1 +output="/tmp/mnt" + +if [ ! $error -eq 0 ]; then + #preupdate failed, so restore saved files. + cp -a $output/* /mnt + exit 1 +fi +