From a54d74a082aee326d4ba0a57664060edba6c226a Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Sat, 7 Jan 2017 19:38:21 +0100 Subject: stretch debootstrap: wording --- content/debian-stretch-debootstrap-replicant.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/debian-stretch-debootstrap-replicant.rst b/content/debian-stretch-debootstrap-replicant.rst index 47f226c..b167953 100644 --- a/content/debian-stretch-debootstrap-replicant.rst +++ b/content/debian-stretch-debootstrap-replicant.rst @@ -6,7 +6,7 @@ :status: published :summary: Recently, I managed to to make `Replicant 6.0 `_ buildable on Debian Stretch. I'm still using Debian Jessie on my machines, so I set up a chroot with Stretch. I'll document all the necessary steps in the following to establish a Stretch build environment and build Replicant 6.0 inside it. -Recently, I managed to to make `Replicant 6.0 `_ buildable on Debian Stretch. This makes it possible to use a lot of new Android-related packages in Debian. I'm still using Debian Jessie on my machines, so I set up a chroot with Stretch. I'll document all the necessary steps in the following to establish a Stretch build environment and build Replicant 6.0 inside it. This should work across many distros, although I only tested it on Debian Jessie. The only tool you'll need is a `debootstrap `_ that contains the necessary scripts to set up a Debian Stretch chroot. +Recently, I managed to make `Replicant 6.0 `_ buildable on Debian Stretch. This makes it possible to use a lot of new Android-related packages in Debian. I'm still using Debian Jessie on my machines, so I set up a chroot with Stretch. I'll document all the necessary steps in the following to establish a Stretch build environment and build Replicant 6.0 inside it. This should work across many distros, although I only tested it on Debian Jessie. The only tool you'll need is a `debootstrap `_ that contains the necessary scripts to set up a Debian Stretch chroot. Installing Debian Stretch in a chroot with debootstrap ###################################################### @@ -102,7 +102,7 @@ Switch to your user: # su $YOUR_USER -Create the directory where you want the Replicant 6.0 sources to be. And run all the needed commands to get the sources, build it for the Galaxy S3 and flash it to the device inside this directory: +Create the directory where you want the Replicant 6.0 sources to be. And run all the needed commands to get the sources, build it for the Galaxy S3 and flash it to the device: .. code-block:: console -- cgit v1.1 From bd78a8ac1abab9d750b17799993e81a380817068 Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Mon, 9 Jan 2017 01:16:02 +0100 Subject: post about installing nonfree firmwares on Android devices --- content/nonfree-firmware-android.rst | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 content/nonfree-firmware-android.rst diff --git a/content/nonfree-firmware-android.rst b/content/nonfree-firmware-android.rst new file mode 100644 index 0000000..5603408 --- /dev/null +++ b/content/nonfree-firmware-android.rst @@ -0,0 +1,44 @@ +:title: Nonfree firmwares for Android devices +:date: 2017-01-07 22:27 +:tags: scripting, nonfree software +:category: General +:author: Wolfgang Wiedmeyer +:status: published +:summary: The following instructions make it possible to install nonfree firmware on Android devices. For now, only the Galaxy S3 (GT-I9300) is supported, but support for other devices can be added easily. + +The following instructions make it possible to install nonfree firmware on Android devices for the purpose of enabling certain functionalities. For now, only the Galaxy S3 (GT-I9300) is supported, but support for other devices can be added easily. Please see `Paul's blog post `_ for the reasons why these instructions shouldn't be published on official documentation pages of free systems, but why it still makes sense to publish them elsewhere. + +Paul's script is compatible with CyanogenMod version 10.1.3 and 9.1.0. It extracts the firmwares from a CyanogenMod installation zip and either installs them with ADB or creates an installation zip with them. My implementation is intended to be compatible with CyanogenMod 13.0. It's possible to only select a certain functionality for which the firmwares should be installed. The firmwares are downloaded from a `repository `_, that hosts the firmware files for CyanogenMod builds, and they are installed with ADB. It's impractical to extract them from a CyanogenMod 13.0 installation zip because recent Android versions use complicated compression techniques that require tools which are usually not readily available as packages for GNU/Linux systems. Creating installation zips is also not easy anymore because the zip needs to be signed with a key that is trusted by the recovery. If your recovery stills just accepts any installation zip, then you are using an insecure recovery. + +Make sure that you have ADB and root access with ADB enabled. +These steps are required: + +1. Clone the `firmwares_nonfree repository `_: + + .. code-block:: console + + $ git clone https://code.fossencdi.org/firmwares_nonfree.git + +2. Connect the device to your PC and check if the device is detected: + + .. code-block:: console + + $ adb devices + + If the list of attached devices is empty, you will have to check your ADB setup first and figure out why the device doesn't get recognized. + +3. Run the script in the git repository with two arguments, the name of your device and the functionality you want to enable, e.g.: + + .. code-block:: console + + $ ./firmwares.sh i9300 wifi + + This command will only install the firmware files that are needed to enable wifi. The firmware will be downloaded, pushed to the device and the device is rebooted. Use ``list`` as second argument to get a list of functionalities that can be enabled for the specific device. You can also specify ``all`` to install all firmware files which will enable all listed functionalities. + +4. If you want to remove a certain firmware again, you can do so by adding ``remove`` as third argument, e.g.: + + .. code-block:: console + + $ ./firmwares.sh i9300 front-camera remove + + This command deletes the firmware files for the front camera from the device and reboots it. -- cgit v1.1 From 4ba7beb7b9f0f001b752eff2a2be3a7f32035255 Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Mon, 9 Jan 2017 22:59:58 +0100 Subject: bundle hosting, nonfree firmware, setup: typo fixes --- content/git-bundle-hosting.rst | 2 +- content/nonfree-firmware-android.rst | 2 +- content/pages/setup.rst | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/content/git-bundle-hosting.rst b/content/git-bundle-hosting.rst index 7505836..2431c46 100644 --- a/content/git-bundle-hosting.rst +++ b/content/git-bundle-hosting.rst @@ -6,7 +6,7 @@ :status: published :summary: Cloning large repositories can result in quite some load on the server side. A possible solution is the use of bundles. Git can package a certain revision in an archive. The client can fetch the bundle and set up a clone locally based on the bundle. -Cloning large repositories can result in quite some load on the server side. Depending on the server specs, the server may run out of RAM or the CPU load goes way up. In my case, the limiting factor is the CPU. Too much load can even result in fatal errors that make it impossible to freshly clone a repository. +Cloning large repositories can result in quite some load on the server side. Depending on the server specs, the server may run out of RAM or the CPU load increases heavily. In my case, the limiting factor is the CPU. Too much load can even result in fatal errors that make it impossible to freshly clone a repository. A possible solution is the use of bundles. Git can package a certain revision in an archive. The client can fetch the bundle and set up a clone locally based on the bundle. The `Git documentation `_ describes how this works. The server then has the only task of serving the bundle which takes almost no load. When the client has set up the clone with the bundle, subsequent pull or fetch requests will take a lot less server load because the server only needs to handle the diff between the revision archived in the bundle and the revision that currently gets fetched. diff --git a/content/nonfree-firmware-android.rst b/content/nonfree-firmware-android.rst index 5603408..36d8506 100644 --- a/content/nonfree-firmware-android.rst +++ b/content/nonfree-firmware-android.rst @@ -8,7 +8,7 @@ The following instructions make it possible to install nonfree firmware on Android devices for the purpose of enabling certain functionalities. For now, only the Galaxy S3 (GT-I9300) is supported, but support for other devices can be added easily. Please see `Paul's blog post `_ for the reasons why these instructions shouldn't be published on official documentation pages of free systems, but why it still makes sense to publish them elsewhere. -Paul's script is compatible with CyanogenMod version 10.1.3 and 9.1.0. It extracts the firmwares from a CyanogenMod installation zip and either installs them with ADB or creates an installation zip with them. My implementation is intended to be compatible with CyanogenMod 13.0. It's possible to only select a certain functionality for which the firmwares should be installed. The firmwares are downloaded from a `repository `_, that hosts the firmware files for CyanogenMod builds, and they are installed with ADB. It's impractical to extract them from a CyanogenMod 13.0 installation zip because recent Android versions use complicated compression techniques that require tools which are usually not readily available as packages for GNU/Linux systems. Creating installation zips is also not easy anymore because the zip needs to be signed with a key that is trusted by the recovery. If your recovery stills just accepts any installation zip, then you are using an insecure recovery. +Paul's script is compatible with CyanogenMod version 10.1.3 and 9.1.0. It extracts the firmwares from a CyanogenMod installation zip and either installs them with ADB or creates an installation zip with them. My implementation is intended to be compatible with CyanogenMod 13.0. It's possible to only select a certain functionality for which the firmwares should be installed. The firmwares are downloaded from a `repository `_, that hosts the firmware files for CyanogenMod builds, and they are installed with ADB. It's impractical to extract them from a CyanogenMod 13.0 installation zip because recent Android versions use complicated compression techniques that require tools which are usually not readily available as packages for GNU/Linux systems. Creating installation zips is also not easy anymore because the zip needs to be signed with a key that is trusted by the recovery. If your recovery still just accepts any installation zip, then you are using an insecure recovery. Make sure that you have ADB and root access with ADB enabled. These steps are required: diff --git a/content/pages/setup.rst b/content/pages/setup.rst index 2ad5fb1..ecd9202 100644 --- a/content/pages/setup.rst +++ b/content/pages/setup.rst @@ -7,11 +7,11 @@ I'm always interested in what tools others are using to get their work done. On Hardware ######## -My laptop is a Thinkpad Edge E530. I was lucky to get it quite cheaply without Windows preinstalled. I like about it that it did not yet fail on me over the last years. I replaced the crappy hard disk with a SSD to get some performance out of the otherwise not very powerful laptop. The screen is not that good, but the fact that it's a matte screen makes it quite usable in the sunlight. I removed the camera and microphone. `This guide `_ was quite helpful for that, although it's actually for replacing the screen. However, the same steps make it possible to access the camera and microphone module above the screen. +My laptop is a Thinkpad Edge E530. I was lucky to get it quite cheaply without Windows preinstalled. I like about it that it did not yet fail over the last years. I replaced the crappy hard disk with a SSD to get some performance out of the otherwise not very powerful laptop. The screen is not that good, but the fact that it's a matte screen makes it quite usable in the sunlight. I removed the camera and microphone. `This guide `_ was quite helpful for that, although it's actually for replacing the screen. However, the same steps make it possible to access the camera and microphone module above the screen. I built my own PC after I had finished school and I still use it today. The CPU is an Intel Core i7-860 and runs overclocked at 3.4 GHz which is still enough for my performance needs. The processor is perfectly cooled by a `Scythe Mugen 2 Rev.B `_ which is not only really huge but also very quiet. I added 8 GB of RAM and the motherboard is a `MSI P55-GD65 `_. I can't really say something positive about the motherboard as it made quite some issues over the years. The only bad purchase besides the motherboard was the GPU. I managed to buy a variant of the Nvidia GeForce GTS 250 from EVGA that has the fan always running at 100%. To keep the noise down, I replaced the fan with an `Alpenföhn Klara `_. The power supply is from `bequiet! `_ and everything is kept inside a nice Aluminium case from Lian Li that also has a side panel window. The only issue is the sometimes oscillating and thus noisy side panel. -For personal data and services for family and friends, I use a HP ProLiant MicroServer N54L as a home server. It is equipped with two 1 TB disks. A TP-Link TL-WDR4300 serves as router with an Allnet ALL0333CJ as modem. This blog and other public stuff is hosted on a `VPS `_ which uses `KVM `_. I'm planning to move from the VPS to another home server as soon as I can get hold on a fast internet connection that is separate from the one the MicroServer is connected to. I'd like to keep the two servers completely separate from each other so I can use them as backups for each other. +For personal data and services for family and friends, I use a HP ProLiant MicroServer N54L as a home server. It is equipped with two 1 TB disks. A TP-Link TL-WDR4300 serves as router with an Allnet ALL0333CJ as modem. This blog and other public stuff is hosted on a `VPS `_ which uses `KVM `_. I'm planning to move from the VPS to another home server as soon as I have access to a fast internet connection that is separate from the one the MicroServer is connected to. I'd like to keep the two servers completely separate from each other so I can use them as backups for each other. Furthermore, I own two Samsung Galaxy S III phones. One of them is my daily driver and I use the other one for development work on `Replicant `_. @@ -21,7 +21,7 @@ Software Freedom/security aspects and the operating systems I use -------------------------------------------------------- -`I try to use as much free software as possible <{filename}/why_free_software.rst>`_. Unfortunately, we are not yet at the point when we can buy almost any kind of hardware as use it exclusively with free software. My laptop and PC work fine with the free graphics drivers for Intel and Nvidia chips. On the operating system level, I don't depend on nonfree software in the case of the PC, home server and router. However, the laptop needs a nonfree firmware to make the Intel Wireless card work. +`I try to use as much free software as possible <{filename}/why_free_software.rst>`_. Unfortunately, we are not yet at the point where we can buy almost any kind of hardware and use it exclusively with free software. My laptop and PC work fine with the free graphics drivers for Intel and Nvidia chips. On the operating system level, I don't depend on nonfree software in the case of the PC, home server and router. However, the laptop needs a nonfree firmware to make the Intel Wireless card work. My PC, laptop and home server need proprietary hardware initialization software. There isn't a free `BIOS `_ replacement available yet. I'd like to use hardware that is supported by `Libreboot `_ or at least supported by `Coreboot `_. The `Libreboot website `_ explains why it's important that free software boots up your system. It also sums up why security and privacy is only possible on `Intel `_ and `AMD `_ hardware that is several years old. @@ -30,7 +30,7 @@ My PC, laptop and home server need proprietary hardware initialization software. Unfortunately, my two phones also need proprietary initialization software. The bootloaders are not even replaceable because the hardware only runs bootloaders that are signed by the manufacturer. `There is also a second nonfree operating system running on the modem and various chips need proprietary firmwares for which there are no free replacements yet `_. The `Replicant website `_ explains why these issues need our attention. The graphics chip and GPS even need proprietary drivers that run on the main CPU. I use a QSTARZ BT-Q818XT as external GPS receiver over Bluetooth. It is quite accurate, has a long battery life and works nicely with my updated `BlueGPS `_ app version. I don't use any proprietary drivers or other software that runs on the main CPU of the phone, but I use some proprietary firmware to get different functionality working. -The two servers, the PC and the laptop are running `Debian Stable `_. I tried many different `distributions `_, but I always came back to Debian. It has a huge community, focuses on free software and is just stable and secure. The router is running `Openwrt `_. `Replicant 6.0 `_ powers the phones. +The two servers, the PC and the laptop are running `Debian Stable `_. I tried many different `distributions `_, but I always came back to Debian. It has a huge community, focuses on free software and is stable and secure. The router is running `Openwrt `_. `Replicant 6.0 `_ powers the phones. I use various tools to make my desktops and servers more secure and to reduce the maintenance burden. For example, I make heavy use of AppArmor to confine critical or Internet-facing applications. `Here `_ are some of my customized profiles. My kernels are hardened with `grsecurity `_ including PaX. -- cgit v1.1 From fc36bee5289c57a5e79befefb8b1608cd67e467a Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Wed, 11 Jan 2017 23:44:11 +0100 Subject: firmwares: i9100 now supported, chroot: one more dependency --- content/debian-stretch-debootstrap-replicant.rst | 2 +- content/nonfree-firmware-android.rst | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/content/debian-stretch-debootstrap-replicant.rst b/content/debian-stretch-debootstrap-replicant.rst index b167953..3f07afc 100644 --- a/content/debian-stretch-debootstrap-replicant.rst +++ b/content/debian-stretch-debootstrap-replicant.rst @@ -78,7 +78,7 @@ Then install all dependencies: .. code-block:: console # apt-get build-dep gcc binutils llvm-defaults - # apt-get install gcc-arm-none-eabi cmake python-dev swig ant bc proguard maven-debian-helper libemma-java libasm4-java libguava-java libnb-platform18-java libnb-org-openide-util-java libandroidsdk-ddmlib-java libmaven-source-plugin-java libfreemarker-java libmaven-javadoc-plugin-java repo ca-cacert curl gawk libgmp3-dev libmpfr-dev libmpc-dev git-core gperf libncurses-dev squashfs-tools pngcrush zip zlib1g-dev lzma libc6-dev-i386 g++-multilib lib32z1-dev lib32readline-dev lib32ncurses5-dev zlib1g-dev:i386 xsltproc python-mako schedtool gradle dirmngr libandroidsdk-sdklib-java eclipse-jdt libgradle-android-plugin-java android-sdk-build-tools android-sdk-platform-23 aapt + # apt-get install gcc-arm-none-eabi cmake python-dev swig ant bc proguard maven-debian-helper libemma-java libasm4-java libguava-java libnb-platform18-java libnb-org-openide-util-java libandroidsdk-ddmlib-java libmaven-source-plugin-java libfreemarker-java libmaven-javadoc-plugin-java repo ca-cacert curl gawk libgmp3-dev libmpfr-dev libmpc-dev git-core gperf libncurses-dev squashfs-tools pngcrush zip zlib1g-dev lzma libc6-dev-i386 g++-multilib lib32z1-dev lib32readline-dev lib32ncurses5-dev zlib1g-dev:i386 xsltproc python-mako schedtool gradle dirmngr libandroidsdk-sdklib-java eclipse-jdt libgradle-android-plugin-java android-sdk-build-tools android-sdk-platform-23 aapt lzop .. dpkg-reconfigure ca-certificates and enable cacert certs diff --git a/content/nonfree-firmware-android.rst b/content/nonfree-firmware-android.rst index 36d8506..57dfe2f 100644 --- a/content/nonfree-firmware-android.rst +++ b/content/nonfree-firmware-android.rst @@ -1,12 +1,13 @@ :title: Nonfree firmwares for Android devices :date: 2017-01-07 22:27 +:modified: 2017-01-11 23:30 :tags: scripting, nonfree software :category: General :author: Wolfgang Wiedmeyer :status: published -:summary: The following instructions make it possible to install nonfree firmware on Android devices. For now, only the Galaxy S3 (GT-I9300) is supported, but support for other devices can be added easily. +:summary: The following instructions make it possible to install nonfree firmware on Android devices. For now, only the Galaxy S3 (GT-I9300) and Galaxy S2 (GT-I9100) are supported, but support for other devices can be added easily. -The following instructions make it possible to install nonfree firmware on Android devices for the purpose of enabling certain functionalities. For now, only the Galaxy S3 (GT-I9300) is supported, but support for other devices can be added easily. Please see `Paul's blog post `_ for the reasons why these instructions shouldn't be published on official documentation pages of free systems, but why it still makes sense to publish them elsewhere. +The following instructions make it possible to install nonfree firmware on Android devices for the purpose of enabling certain functionalities. For now, only the Galaxy S3 (GT-I9300) and Galaxy S2 (GT-I9100) are supported, but support for other devices can be added easily. Please see `Paul's blog post `_ for the reasons why these instructions shouldn't be published on official documentation pages of free systems, but why it still makes sense to publish them elsewhere. Paul's script is compatible with CyanogenMod version 10.1.3 and 9.1.0. It extracts the firmwares from a CyanogenMod installation zip and either installs them with ADB or creates an installation zip with them. My implementation is intended to be compatible with CyanogenMod 13.0. It's possible to only select a certain functionality for which the firmwares should be installed. The firmwares are downloaded from a `repository `_, that hosts the firmware files for CyanogenMod builds, and they are installed with ADB. It's impractical to extract them from a CyanogenMod 13.0 installation zip because recent Android versions use complicated compression techniques that require tools which are usually not readily available as packages for GNU/Linux systems. Creating installation zips is also not easy anymore because the zip needs to be signed with a key that is trusted by the recovery. If your recovery still just accepts any installation zip, then you are using an insecure recovery. -- cgit v1.1 From 3b072cf391260854c498983e06a197b7ab6edba7 Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Sun, 15 Jan 2017 22:45:39 +0100 Subject: correct page linking --- pelicanconf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pelicanconf.py b/pelicanconf.py index 1670bde..b638415 100644 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -48,7 +48,7 @@ DEFAULT_METADATA = { SHOW_ARTICLE_AUTHOR = True SHOW_DATE_MODIFIED = True -PAGE_URL = '{slug}' +PAGE_URL = '{slug}.html' PAGE_SAVE_AS = '{slug}.html' SLUGIFY_SOURCE = 'basename' DISPLAY_PAGES_ON_MENU = False -- cgit v1.1 From c4ea951fd926d2efb0bd0ae0ce8794f7cfd5f061 Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Thu, 19 Jan 2017 20:43:54 +0100 Subject: firmwares: reword to be more clear --- content/nonfree-firmware-android.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/nonfree-firmware-android.rst b/content/nonfree-firmware-android.rst index 57dfe2f..697590f 100644 --- a/content/nonfree-firmware-android.rst +++ b/content/nonfree-firmware-android.rst @@ -9,7 +9,9 @@ The following instructions make it possible to install nonfree firmware on Android devices for the purpose of enabling certain functionalities. For now, only the Galaxy S3 (GT-I9300) and Galaxy S2 (GT-I9100) are supported, but support for other devices can be added easily. Please see `Paul's blog post `_ for the reasons why these instructions shouldn't be published on official documentation pages of free systems, but why it still makes sense to publish them elsewhere. -Paul's script is compatible with CyanogenMod version 10.1.3 and 9.1.0. It extracts the firmwares from a CyanogenMod installation zip and either installs them with ADB or creates an installation zip with them. My implementation is intended to be compatible with CyanogenMod 13.0. It's possible to only select a certain functionality for which the firmwares should be installed. The firmwares are downloaded from a `repository `_, that hosts the firmware files for CyanogenMod builds, and they are installed with ADB. It's impractical to extract them from a CyanogenMod 13.0 installation zip because recent Android versions use complicated compression techniques that require tools which are usually not readily available as packages for GNU/Linux systems. Creating installation zips is also not easy anymore because the zip needs to be signed with a key that is trusted by the recovery. If your recovery still just accepts any installation zip, then you are using an insecure recovery. +Paul's script is compatible with CyanogenMod versions 10.1.3 and 9.1.0. It extracts the firmwares from a CyanogenMod installation zip and either installs them with ADB or creates a new installation zip with them. My implementation is intended to be compatible with CyanogenMod 13.0. It's possible to only select a certain functionality for which the firmwares should be installed. The firmwares are downloaded from a `repository `_, that hosts the firmware files for CyanogenMod builds, and they are installed with ADB. + +Downloading the firmware files seemed to be the most straightforward solution since it's impractical to extract them from a CyanogenMod 13.0 installation zip because recent Android versions use complicated compression techniques that require tools which are usually not readily available as packages for GNU/Linux systems. Creating installation zips is also not easy anymore because the zip needs to be signed with a key that is trusted by the recovery. If your recovery still accepts any installation zip, then you are using an insecure recovery. Make sure that you have ADB and root access with ADB enabled. These steps are required: -- cgit v1.1 From 5b4cf5858f748c75a7f9feeb2708dfb59678dbba Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Thu, 2 Feb 2017 17:36:58 +0100 Subject: publish first two posts related to mainline kernel Also a little fix for the debootstrap tutorial --- content/debian-stretch-debootstrap-replicant.rst | 2 +- content/newer-kernel-galaxyS3.rst | 8 ++++---- content/u-boot-galaxyS3.rst | 12 ++++++------ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/content/debian-stretch-debootstrap-replicant.rst b/content/debian-stretch-debootstrap-replicant.rst index 3f07afc..d61b73d 100644 --- a/content/debian-stretch-debootstrap-replicant.rst +++ b/content/debian-stretch-debootstrap-replicant.rst @@ -57,7 +57,7 @@ Tell apt where it should get the source packages from: # echo "deb-src http://deb.debian.org/debian stretch main" >> /etc/apt/sources.list -Replacing ``deb.debian.org`` in your ``sources.list`` with a local mirror leads likely to a lot faster downloads and puts less load on the Debian servers. I'm in Germany so I have ``ftp.de.debian.org`` in my ``sources.list``. +Replacing ``deb.debian.org`` in your ``sources.list`` with a local mirror likely leads to a lot faster downloads and puts less load on the Debian servers. I'm in Germany so I have ``ftp.de.debian.org`` in my ``sources.list``. Then add the i386 architecture and update: diff --git a/content/newer-kernel-galaxyS3.rst b/content/newer-kernel-galaxyS3.rst index 435b998..a89ea03 100644 --- a/content/newer-kernel-galaxyS3.rst +++ b/content/newer-kernel-galaxyS3.rst @@ -1,14 +1,14 @@ :title: Problems getting a current kernel working on the Galaxy S3 and why merging is bad -:date: 2016-11-27 19:54 +:date: 2017-02-02 17:32 :tags: kernel, free software, sustainability, phone :category: General :author: Wolfgang Wiedmeyer -:status: draft +:status: published :summary: Some time ago, I started to wonder if it would be possible to update the old Linux kernel for the GT-I9300 variant (international version) of the Galaxy S3 to a more recent version. Some time ago, I started to wonder wheter it would be possible to update the old Linux kernel for the GT-I9300 variant (international version) of the Galaxy S3 to a more recent version. A newer kernel could not only bring new features and speed improvements, but also lots of security fixes that are not yet patched. Furthermore, porting a more recent Android version to the device would be much more easier. Making a newer kernel work with an older user space is much easier than making an old kernel work with a new user space. And isn't it the spirit of free software to be able to use the newest and shiny software on arbitrary hardware, regardless of its age? -But why Galaxy S3? Wouldn't it be better to take a more recent device that was already released with a newer kernel? I work on the Galaxy S3 because I use it as my daily driver and I have a spare device that I can use for development. Besides the Galaxy S2, it is still the best supported device by `Replicant `_ which was my original reason to start working with this phone. And especially in regards to the mainline kernel, it actually turns out to be a really good choice, but more about that in a `second post <{filename}/mainline-kernel-galaxyS3.rst>`_. +But why Galaxy S3? Wouldn't it be better to take a more recent device that was already released with a newer kernel? I work on the Galaxy S3 because I use it as my daily driver and I have a spare device that I can use for development. Besides the Galaxy S2, it is still the best supported device by `Replicant `_ which was my original reason to start working with this phone. And especially in regards to the mainline kernel, it actually turns out to be a really good choice, but more about that in another post. It's pretty easy, isn't it? ########################### @@ -33,4 +33,4 @@ There is another reason that makes merging with newer kernel releases very diffi Without the Git history, Git has a very hard time to resolve conflicts when merging and you end up with a huge amount of conflicts so that it's just too much work to go through all of them. This happened when I merged with the 3.2.x mainline kernel tree. `I was able to get a partial merge working `_. The end result is not maintainable because there is too much unmerged code and you end up in the middle between two kernel versions. Merging more recent kernel versions becomes even more harder and you will end up with numerous bugs that no one else has. `Dorimanx targeted the Galaxy S2 and he did partial merges up to Linux 3.14 `_, but he stopped working on it in 2014. The Galaxy S2 (GT-I9100) uses the same kernel sources. -In the end, all of these efforts don't really bring a newer kernel to the device and we end up with an unmaintainable mess. The goal should be to have an easily maintainable kernel that makes future kernel updates possible. `In the second part <{filename}/mainline-kernel-galaxyS3.rst>`_, I will explain why going mainline is the only solution and how far I've got with getting the mainline kernel working. +In the end, all of these efforts don't really bring a newer kernel to the device and we end up with an unmaintainable mess. The goal should be to have an easily maintainable kernel that makes future kernel updates possible. In the next post, I will explain why going mainline is the only solution and how far I've got with getting the mainline kernel working. diff --git a/content/u-boot-galaxyS3.rst b/content/u-boot-galaxyS3.rst index 073ee38..16d45c4 100644 --- a/content/u-boot-galaxyS3.rst +++ b/content/u-boot-galaxyS3.rst @@ -1,12 +1,12 @@ :title: U-Boot for the Galaxy S3: an investigation -:date: 2016-11-26 21:19 +:date: 2017-02-02 17:31 :tags: bootloader, kernel, free software, phone :category: General :author: Wolfgang Wiedmeyer -:status: draft -:summary: The Galaxy S3 comes with a bootloader named S-Boot which is a proprietary bootloader from Samsung. In this post, I want to collect information about the possibilty to run the bootloader U-Boot on the phone. +:status: published +:summary: The Galaxy S3 comes with a bootloader named S-Boot which is a proprietary bootloader from Samsung. In this post, I want to collect information about the possibilty to run the free bootloader U-Boot on the phone. -The Galaxy S3 (GT-I9300) comes with a bootloader named S-Boot which is a proprietary bootloader from Samsung. In this post, I want to collect information about the possibilty to run the bootloader U-Boot on the phone. I personally didn't work on the bootloader part, but I became interested in it when `I tried to get the mainline kernel working and S-Boot prevented the mainline kernel from booting due to a bug <{filename}/mainline-kernel-galaxyS3.rst>`_. +The Galaxy S3 (GT-I9300) comes with a bootloader named S-Boot which is a proprietary bootloader from Samsung. In this post, I want to collect information about the possibilty to run the free bootloader U-Boot on the phone. I personally didn't work on the bootloader part, but I became interested in it when I tried to get the mainline kernel working and S-Boot prevented the mainline kernel from booting due to a bug. Benefits ######## @@ -18,7 +18,7 @@ A free bootloader would also make new security features like verified boot possi Is it possible? ############### -In 2013, Dominik Marszk and Adam Outler managed to boot U-Boot from the SD card. Their U-Boot source can be found `here `_. The Galaxy S3 tries to boot from eMMC (internal memory) first and if that fails, it attempts to boot from other possible boot devices like the SD card. In order to force booting from SD card, Adam corrupted the data transfer between CPU and eMMC by attaching a thin wire to one of the data lines that shortens the data line. After U-Boot has booted, it enters a 10 second delay to allow to release the line shortening. At this point, it's possible to talk to the U-Boot command line via `UART <{filename}/mainline-kernel-galaxyS3.rst#uart>`_. +In 2013, Dominik Marszk and Adam Outler managed to boot U-Boot from the SD card. Their U-Boot source can be found `here `_. The Galaxy S3 tries to boot from eMMC (internal memory) first and if that fails, it attempts to boot from other possible boot devices like the SD card. In order to force booting from SD card, Adam corrupted the data transfer between CPU and eMMC by attaching a thin wire to one of the data lines that shortens the data line. After U-Boot has booted, it enters a 10 second delay to allow to release the line shortening. At this point, it's possible to talk to the U-Boot command line via UART. `These `_ are the files they used to create the SD card. They come from `ODROID-X `_ bootloader sources which are based on Exynos4412, just like the Galaxy S3. The binary p4412_s_fwbl1.bin is especially interesting because it is a first stage bootloader that drops the secure boot process and jumps to an unsigned payload. This signed first stage bootloader also works on the Galaxy S3 because the same signing key is fused into all Exynos4412-based development boards and handhelds. @@ -28,7 +28,7 @@ The advantage of Dominik's and Adam's approach is the possibility to replace the There is some info floating around about a recovery procedure that boots from the SD card, but replaces the existing bootloader which resides in the bootloader partition on eMMC. `There are claims `_ that it's possible to trigger this process with more recent Galaxy S3 devices by pressing the menu key, both volume keys and the power key. Otherwise, it seems to be necessary to disassemble the device and shorten a very small resistor with a pair of tweezers, according to `leaked Samsung documents `_. This procedure could be an alternative to corrupting the data transfer between CPU and eMMC. -As part of `my work with the mainline kernel on the Galaxy S3 <{filename}/mainline-kernel-galaxyS3.rst>`_, I submitted a `bootloader-related patch that allows to reboot the device in the recovery and download mode `_. In the discussion about the patch with the kernel maintainer Krzysztof Kozlowski, it turned out that Trats2, which is the Galaxy S3 released for Tizen, is supported by U-Boot. However, S-Boot was not replaced. Instead, U-Boot gets chainloaded after booting a (probably) adapted S-Boot image. `Krzysztof's mail `_ provides more info how the Trats2 image could be installed. +As part of my work with the mainline kernel on the Galaxy S3, I submitted a `bootloader-related patch that allows to reboot the device in the recovery and download mode `_. In the discussion about the patch with the kernel maintainer Krzysztof Kozlowski, it turned out that Trats2, which is the Galaxy S3 released for Tizen, is supported by U-Boot. However, S-Boot was not replaced. Instead, U-Boot gets chainloaded after booting a (probably) adapted S-Boot image. `Krzysztof's mail `_ provides more info how the Trats2 image could be installed. Freedom-wise, chainloading U-Boot after S-Boot is not attractive as no non-free software is replaced. But having the Linux kernel loaded by U-Boot would make working on the mainline kernel easier because I don't have to figure out all the differences between U-Boot and S-Boot and patch the kernel. The only question in this regard is whether it's less work to stick with S-Boot and work around the differences or to get U-Boot for Trats2 working with a Galaxy S3 targeting Android and avoid having to patch the kernel. -- cgit v1.1 From b0c8f5c2e177a7efd9cb9e702edbea043e4adddf Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Tue, 14 Feb 2017 20:06:34 +0100 Subject: donation page --- content/images/bitcoinQR.png | Bin 0 -> 3746 bytes content/pages/donations.rst | 14 ++++++++++++++ pelicanconf.py | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 content/images/bitcoinQR.png create mode 100644 content/pages/donations.rst diff --git a/content/images/bitcoinQR.png b/content/images/bitcoinQR.png new file mode 100644 index 0000000..e71f424 Binary files /dev/null and b/content/images/bitcoinQR.png differ diff --git a/content/pages/donations.rst b/content/pages/donations.rst new file mode 100644 index 0000000..e3d4e7f --- /dev/null +++ b/content/pages/donations.rst @@ -0,0 +1,14 @@ +:title: Donations +:status: published + +If you like my free software work or the web services I provide, you can help me with a donation. Donations allow me to sustain my development work and pay server costs. + +You can donate to me in the following ways: + +- Bitcoin: 1FMtGbWEpHntUe1XnMhtDTKkanEj2jrbXW or `click here <./images/bitcoinQR.png>`__ for the QR code. + +- Hardware donations or wire transfer: Please `contact me <{filename}/pages/contact.rst>`__ for the details. + +- Cash or check: `See here <{filename}/pages/impressum.rst>`__ for the address. + +Thank you very much! ♥ diff --git a/pelicanconf.py b/pelicanconf.py index b638415..550eef7 100644 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -61,7 +61,8 @@ MENUITEMS = (('Home', 'https://fossencdi.org'), ('Contact', './contact.html'),) SIDEBARITEMS = (('My setup', './setup.html', 'laptop'), - ('Notes', './notes.html', 'sticky-note'),) + ('Notes', './notes.html', 'sticky-note'), + ('Donations', './donations.html', 'money'),) # HIDE_SIDEBAR = True -- cgit v1.1 From 1a35a4a04228b6bf210b1fd7f2b667dc8a06e677 Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Tue, 14 Feb 2017 20:06:55 +0100 Subject: git bundle: fixes --- content/git-bundle-hosting.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/git-bundle-hosting.rst b/content/git-bundle-hosting.rst index 2431c46..9438f21 100644 --- a/content/git-bundle-hosting.rst +++ b/content/git-bundle-hosting.rst @@ -8,14 +8,14 @@ Cloning large repositories can result in quite some load on the server side. Depending on the server specs, the server may run out of RAM or the CPU load increases heavily. In my case, the limiting factor is the CPU. Too much load can even result in fatal errors that make it impossible to freshly clone a repository. -A possible solution is the use of bundles. Git can package a certain revision in an archive. The client can fetch the bundle and set up a clone locally based on the bundle. The `Git documentation `_ describes how this works. The server then has the only task of serving the bundle which takes almost no load. When the client has set up the clone with the bundle, subsequent pull or fetch requests will take a lot less server load because the server only needs to handle the diff between the revision archived in the bundle and the revision that currently gets fetched. +A possible solution is the use of bundles. Git can package a certain revision in an archive. The client can fetch the bundle and set up a clone locally based on the bundle. The `Git documentation `_ describes how this works. The server then has the only task of providing the bundle which requires almost no load. When the client has set up the clone with the bundle, subsequent pull or fetch requests will take a lot less server load because the server only needs to handle the diff between the revision archived in the bundle and the revision that currently is fetched. -The Linux kernel project uses bundles on their Git hosting servers and `they recommend to directly get the bundle with wget if you have connection problems `_. The `repo tool `_, which manages the various git repositories of Android-based operating systems, by default even expects that a bundle with the name clone.bundle is present in every repository on the server during the initial sync. The repo tool automatically fetches the bundles and uses them to set up the individual Git repositories. +The Linux kernel project uses bundles on their Git hosting servers and `they recommend to directly get the bundle with wget if you have connection problems `_. The `repo tool `_, which manages the various Git repositories of Android-based operating systems, by default even expects that a bundle with the name clone.bundle is present in every repository on the server during the initial sync. The repo tool automatically fetches the bundles and uses them to set up the individual Git repositories. Creating bundles on the server ############################## -Bundles are easily created inside a git repository with the command ``git bundle create clone.bundle $REVISON``. ``$REVISION`` can be a branch or a tag. In case you have a lot of git repositories and if all of them are in the same directory, running the following command in the parent directory may be helpful to create bundles in all of them: +Bundles are easily created inside a Git repository with the command ``git bundle create clone.bundle $REVISON``. ``$REVISION`` can be a branch or a tag. In case you have a lot of Git repositories and if all of them are in the same directory, running the following command in the parent directory may be helpful to create bundles in all of them: .. code-block:: shell @@ -33,7 +33,7 @@ First, Apache needs to be told where it can find the bundles: AliasMatch ^/(.*).git/clone.bundle /var/lib/gitolite3/repositories/$1.git/clone.bundle AliasMatch ^/(.*)/clone.bundle /var/lib/gitolite3/repositories/$1.git/clone.bundle -These directives make sure that regardless if the URL contains the ``.git`` suffix Apache finds the corresponding ``*.git`` folder. +These directives make sure that regardless of whether the URL contains the ``.git`` suffix, Apache finds the corresponding ``*.git`` folder. Then clients need to be allowed to access the bundles in the git repositories: @@ -46,6 +46,6 @@ Then clients need to be allowed to access the bundles in the git repositories: -This makes sure that only files named clone.bundle are accessible. +This ensures that only files named clone.bundle are accessible. I hope that having bundles available causes a lot less issues when syncing with my `Replicant 6.0 `_ repositories or with my `Replicant 4.2 mirror `_. -- cgit v1.1 From 214545dc258cf49ce5265d5137b8c453586e5de0 Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Sun, 19 Feb 2017 13:35:32 +0100 Subject: update gpg key --- content/extras/gpgpub.asc | 153 -------------------------------------------- content/pages/contact.rst | 2 +- content/pages/impressum.rst | 2 +- 3 files changed, 2 insertions(+), 155 deletions(-) delete mode 100644 content/extras/gpgpub.asc diff --git a/content/extras/gpgpub.asc b/content/extras/gpgpub.asc deleted file mode 100644 index 197a5b5..0000000 --- a/content/extras/gpgpub.asc +++ /dev/null @@ -1,153 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -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 -+Hz/g1faSFqLN8nNTOkpdq4cSIk= -=wQLc ------END PGP PUBLIC KEY BLOCK----- diff --git a/content/pages/contact.rst b/content/pages/contact.rst index 36e700d..d6befa2 100644 --- a/content/pages/contact.rst +++ b/content/pages/contact.rst @@ -3,7 +3,7 @@ Feel free to send an email to wreg@wiedmeyer.de. I'd be happy to get comments, corrections or suggestions. -| Please use GPG encryption, so you won't send out digital postcards all the time. My GPG key can be found `here <./extras/gpgpub.asc>`__ or you can get it from a keyserver such as hkps.pool.sks-keyservers.net. The key should have the following fingerprint: 0F30 D1A0 2F73 F70A 6FEE 048E 5816 A24C 1075 7FC4. +| Please use GPG encryption, so you won't send out digital postcards all the time. My GPG key can be found `here `__ or you can get it from a keyserver such as hkps.pool.sks-keyservers.net. The key should have the following fingerprint: 0F30 D1A0 2F73 F70A 6FEE 048E 5816 A24C 1075 7FC4. | If you are new to mail encryption: `This `__ is a very good introductory guide. If you want to go a step further and follow best practices, have a look `here `__. It's pointless to send me spam, so save yourself some time and do meaningful things diff --git a/content/pages/impressum.rst b/content/pages/impressum.rst index c3c2c46..c171750 100644 --- a/content/pages/impressum.rst +++ b/content/pages/impressum.rst @@ -12,7 +12,7 @@ Wolke 7 E-Mail: wreg@wiedmeyer.de -E-Mails bitte mit meinem PGP-Schlüssel verschlüsseln. Der Schlüssel kann `hier <./extras/gpgpub.asc>`_ oder von einem Keyserver wie hkps.pool.sks-keyservers.net heruntergeladen werden. Mehr dazu unter `Contact <./contact.html>`_. +E-Mails bitte mit meinem PGP-Schlüssel verschlüsseln. Der Schlüssel kann `hier `_ oder von einem Keyserver wie hkps.pool.sks-keyservers.net heruntergeladen werden. Mehr dazu unter `Contact <./contact.html>`_. Datenschutzerklärung -- cgit v1.1 From c736c404e14f6d8ea8f3eb41aeefe016cdad3175 Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Sat, 4 Mar 2017 19:03:01 +0100 Subject: update nonfree firmware post --- content/nonfree-firmware-android.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/nonfree-firmware-android.rst b/content/nonfree-firmware-android.rst index 697590f..8effa07 100644 --- a/content/nonfree-firmware-android.rst +++ b/content/nonfree-firmware-android.rst @@ -1,15 +1,15 @@ :title: Nonfree firmwares for Android devices :date: 2017-01-07 22:27 -:modified: 2017-01-11 23:30 +:modified: 2017-03-04 19:30 :tags: scripting, nonfree software :category: General :author: Wolfgang Wiedmeyer :status: published -:summary: The following instructions make it possible to install nonfree firmware on Android devices. For now, only the Galaxy S3 (GT-I9300) and Galaxy S2 (GT-I9100) are supported, but support for other devices can be added easily. +:summary: The following instructions make it possible to install nonfree firmware on Android devices. -The following instructions make it possible to install nonfree firmware on Android devices for the purpose of enabling certain functionalities. For now, only the Galaxy S3 (GT-I9300) and Galaxy S2 (GT-I9100) are supported, but support for other devices can be added easily. Please see `Paul's blog post `_ for the reasons why these instructions shouldn't be published on official documentation pages of free systems, but why it still makes sense to publish them elsewhere. +The following instructions make it possible to install nonfree firmware on Android devices for the purpose of enabling certain functionalities. Please see `Paul's blog post `_ for the reasons why these instructions shouldn't be published on official documentation pages of free systems, but why it still makes sense to publish them elsewhere. -Paul's script is compatible with CyanogenMod versions 10.1.3 and 9.1.0. It extracts the firmwares from a CyanogenMod installation zip and either installs them with ADB or creates a new installation zip with them. My implementation is intended to be compatible with CyanogenMod 13.0. It's possible to only select a certain functionality for which the firmwares should be installed. The firmwares are downloaded from a `repository `_, that hosts the firmware files for CyanogenMod builds, and they are installed with ADB. +Paul's script is compatible with CyanogenMod versions 10.1.3 and 9.1.0. It extracts the firmwares from a CyanogenMod installation zip and either installs them with ADB or creates a new installation zip with them. My implementation is intended to be compatible with LineageOS/CyanogenMod 13.0. It's possible to only select a certain functionality for which the firmwares should be installed. The firmwares are downloaded from a `repository `_, that hosts the firmware files for CyanogenMod builds, and they are installed with ADB. Downloading the firmware files seemed to be the most straightforward solution since it's impractical to extract them from a CyanogenMod 13.0 installation zip because recent Android versions use complicated compression techniques that require tools which are usually not readily available as packages for GNU/Linux systems. Creating installation zips is also not easy anymore because the zip needs to be signed with a key that is trusted by the recovery. If your recovery still accepts any installation zip, then you are using an insecure recovery. -- cgit v1.1