summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/debian-stretch-debootstrap-replicant.rst8
-rw-r--r--content/extras/gpgpub.asc153
-rw-r--r--content/git-bundle-hosting.rst12
-rw-r--r--content/images/bitcoinQR.pngbin0 -> 3746 bytes
-rw-r--r--content/newer-kernel-galaxyS3.rst8
-rw-r--r--content/nonfree-firmware-android.rst47
-rw-r--r--content/pages/contact.rst2
-rw-r--r--content/pages/donations.rst14
-rw-r--r--content/pages/impressum.rst2
-rw-r--r--content/pages/setup.rst8
-rw-r--r--content/u-boot-galaxyS3.rst12
-rw-r--r--pelicanconf.py5
12 files changed, 90 insertions, 181 deletions
diff --git a/content/debian-stretch-debootstrap-replicant.rst b/content/debian-stretch-debootstrap-replicant.rst
index 47f226c..d61b73d 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 <https://blog.replicant.us/2016/08/replicant-6-early-work-upstream-work-and-f-droid-issue/>`_ 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 <https://blog.replicant.us/2016/08/replicant-6-early-work-upstream-work-and-f-droid-issue/>`_ 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 <https://wiki.debian.org/Debootstrap>`_ that contains the necessary scripts to set up a Debian Stretch chroot.
+Recently, I managed to make `Replicant 6.0 <https://blog.replicant.us/2016/08/replicant-6-early-work-upstream-work-and-f-droid-issue/>`_ 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 <https://wiki.debian.org/Debootstrap>`_ that contains the necessary scripts to set up a Debian Stretch chroot.
Installing Debian Stretch in a chroot with debootstrap
######################################################
@@ -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:
@@ -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
@@ -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
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/git-bundle-hosting.rst b/content/git-bundle-hosting.rst
index 7505836..9438f21 100644
--- a/content/git-bundle-hosting.rst
+++ b/content/git-bundle-hosting.rst
@@ -6,16 +6,16 @@
: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 <https://git-scm.com/docs/git-bundle>`_ 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 <https://git-scm.com/docs/git-bundle>`_ 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 <https://www.kernel.org/cloning-linux-from-a-bundle.html>`_. The `repo tool <https://code.google.com/p/git-repo/>`_, 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 <https://www.kernel.org/cloning-linux-from-a-bundle.html>`_. The `repo tool <https://code.google.com/p/git-repo/>`_, 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:
</FilesMatch>
</Directory>
-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 <https://blog.replicant.us/2016/08/replicant-6-early-work-upstream-work-and-f-droid-issue/>`_ repositories or with my `Replicant 4.2 mirror <https://replicantmirror.fossencdi.org/>`_.
diff --git a/content/images/bitcoinQR.png b/content/images/bitcoinQR.png
new file mode 100644
index 0000000..e71f424
--- /dev/null
+++ b/content/images/bitcoinQR.png
Binary files differ
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 <http://www.replicant.us/>`_ 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 <http://www.replicant.us/>`_ 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 <https://code.fossencdi.org/kernel_samsung_smdk4412.git/log/?h=migrate_3.2>`_. 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 <https://github.com/dorimanx/Dorimanx-SG2-I9100-Kernel>`_, 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/nonfree-firmware-android.rst b/content/nonfree-firmware-android.rst
new file mode 100644
index 0000000..8effa07
--- /dev/null
+++ b/content/nonfree-firmware-android.rst
@@ -0,0 +1,47 @@
+:title: Nonfree firmwares for Android devices
+:date: 2017-01-07 22:27
+: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.
+
+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 <http://code.paulk.fr/article16/missing-proprietary-firmwares-in-android-systems>`_ 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 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 <https://github.com/TheMuppets>`_, 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:
+
+1. Clone the `firmwares_nonfree repository <https://code.fossencdi.org/firmwares_nonfree.git/>`_:
+
+ .. 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.
diff --git a/content/pages/contact.rst b/content/pages/contact.rst
index 0fe032d..2629c74 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 <https://wiedmeyer.de/keys/ww.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.
| If you are new to mail encryption: `This <https://emailselfdefense.fsf.org>`__ is a very good introductory guide. If you want to go a step further and follow best practices, have a look `here <https://riseup.net/en/security/message-security/openpgp/best-practices>`__.
I'm also available via Jabber/XMPP upon request. You may additionally find me on a few of the popular IRC networks. My nick is wiewo.
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/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 <https://wiedmeyer.de/keys/ww.asc>`_ oder von einem Keyserver wie hkps.pool.sks-keyservers.net heruntergeladen werden. Mehr dazu unter `Contact <./contact.html>`_.
Datenschutzerklärung
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 <http://www.insidemylaptop.com/replace-screen-on-lenovo-e530-laptop/>`_ 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 <http://www.insidemylaptop.com/replace-screen-on-lenovo-e530-laptop/>`_ 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 <http://www.overclock.net/products/scythe-scmg-2100-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 <https://www.msi.com/Motherboard/P55GD65.html>`_. 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 <http://www.alpenfoehn.de/auslaufmodelle/klara>`_. The power supply is from `bequiet! <http://www.bequiet.com/>`_ 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 <https://en.wikipedia.org/wiki/Virtual_private_server>`_ which uses `KVM <http://www.linux-kvm.org/page/Main_Page>`_. 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 <https://en.wikipedia.org/wiki/Virtual_private_server>`_ which uses `KVM <http://www.linux-kvm.org/page/Main_Page>`_. 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 <http://www.replicant.us/>`_.
@@ -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 <https://en.wikipedia.org/wiki/BIOS>`_ replacement available yet. I'd like to use hardware that is supported by `Libreboot <https://libreboot.org/>`_ or at least supported by `Coreboot <https://www.coreboot.org/>`_. The `Libreboot website <https://libreboot.org/>`_ 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 <https://libreboot.org/faq/#intel>`_ and `AMD <https://libreboot.org/faq/#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 <https://redmine.replicant.us/projects/replicant/wiki/GalaxyS3I9300PrivacySecurityEvaluation>`_. The `Replicant website <https://www.replicant.us/freedom-privacy-security-issues.php>`_ 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 <https://code.fossencdi.org/BlueGPS.git/>`_ 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 <https://www.debian.org/>`_. I tried many different `distributions <http://distrowatch.com/>`_, 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 <https://openwrt.org/>`_. `Replicant 6.0 <https://redmine.replicant.us/boards/21/topics/12057>`_ powers the phones.
+The two servers, the PC and the laptop are running `Debian Stable <https://www.debian.org/>`_. I tried many different `distributions <http://distrowatch.com/>`_, 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 <https://openwrt.org/>`_. `Replicant 6.0 <https://redmine.replicant.us/boards/21/topics/12057>`_ 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 <https://code.fossencdi.org/config.git/tree/apparmor-profiles>`_ are some of my customized profiles. My kernels are hardened with `grsecurity <https://grsecurity.net/>`_ including PaX.
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 <https://github.com/Rebell/exynos4_uboot>`_. 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 <https://github.com/Rebell/exynos4_uboot>`_. 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 <https://github.com/Rebell/exynos4_uboot/tree/master/sd_fuse>`_ are the files they used to create the SD card. They come from `ODROID-X <http://www.hardkernel.com/main/products/prdt_info.php?g_code=G133999328931>`_ 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 <http://forum.xda-developers.com/showpost.php?p=47234165&postcount=220>`_ 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 <https://smyl.es/samsung-galaxy-iii-s3-gt-i9300-jtag-leaked-document-how-to-repair-soft-bricked-galaxy-s3/>`_. 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 <https://patchwork.kernel.org/patch/9345815/>`_. 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 <http://www.spinics.net/lists/arm-kernel/msg534042.html>`_ 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 <https://patchwork.kernel.org/patch/9345815/>`_. 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 <http://www.spinics.net/lists/arm-kernel/msg534042.html>`_ 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.
diff --git a/pelicanconf.py b/pelicanconf.py
index 1670bde..550eef7 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
@@ -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