Raspberry Pi: git server (cgit with lighttpd)

Introduction In this post I will explain what’s required to set up a git server. We’ll use cgit to provide a web interface and also allow cloning/pulling through HTTP. ssh will also be available for cloning/pulling and pushing. We’ll setup two groups of repositories: a public and a private one. Cgit First of all, we’ll create a git user and move it’s home to the encrypted partition. For convenience we’ll also link that home directory to /git.

Raspberry Pi: setting up alpine, lighttpd and letsencrypt

Introduction In this post I will explain how to set up Alpine Linux for the RPi, with the necessary configuration for the RPi to power a USB hard drive, how to install lighttpd and configure automatic renewal of TLS certificates with lestencrypt. Alpine Linux Alpine Linux can be installed on te RPi following the wiki guide. After instalation, we add a new user which we will use for logging in: adduser green After logging in with our new user (using password) we’ll add some ssh public keys for future logins: vi /home/green/.ssh/authorized_keys I will also download some configurations files for Vim and tmux: curl https://gitlab.com/dhole/dot_files/raw/master/.tmux.conf -o ~/.tmux.conf curl https://gitlab.com/dhole/dot_files/raw/master/.airline_tmux -o ~/.airline_tmux curl https://gitlab.com/dhole/dot_files/raw/master/.vimrc_basic -o ~/.vimrc Now we will log in as root and store the files persistently: lbu add /home/green/.ssh/authorized_keys lbu add /home/green/.vimrc lbu add /home/green/.tmux.conf lbu add /home/green/.airline_tmux From now on everything will be done as root.

Raspberry Pi 2 I/O benchmarks

Introduction I’m currently setting up a Raspberry Pi 2 as a home server for various services. I’m gonna write a series of blog posts about how I configured my Raspberry Pi to achieve my goals, which will be mainly setting up a git server and a backup server. Choice of distribution I discovered Alpine Linux while searching lightweight distributions for the Raspberry Pi. This is a lovely small Linux distribution: one of the first things I noticed is how fast it runs on the RPi due to using a ram filesystem by default; this is specially noticeable in the RPi because usualy the operating system resides in the micro-SD card, which usually offers really slow read and write operations.

No more unencrypted emails to gpg contacts

I have been using mutt for about half a year already and I’m very happy with it. The previous email client I used was Thunderbird (with the Enigmail extension to handle GPG). There were two main reasons that made me switch. The first one was that I often would like to check my email while I’m offline, and it seems that Thunderbird is not very good at this. Sometimes not all my email would have been downloaded (just the headers), and I also found it frustrating that after marking more than 50 emails as read while offline, they would be marked as unread again once I went back online.

Reproducible builds on Debian for GSoC 2015, 1st update

This is the second blog post I’m writing about my experiences contributing to Debian for Google Summer of Code 2015 (check my first post) Status update First month It’s been two months and a few days since the GSoC started. During the first month I worked on fixing specific packages, mainly concerning issues with timestamps, which is a very common source of unreproducibility. In many cases, during the build process files are compressed into gzip or zip archives, which store the creation time of files in the metadata.

Reproducible builds on Debian for GSoC 2015

This is the first blog post of a series I will be writing about my experiences contributing to Debian for Google Summer of Code 2015. A bit about myself I’m a Spanish student doing a master’s in Computer Science in Barcelona. I graduated on Electrical Engineering (we call it Telecommunications here). I’ve always been interested in computing and programming and I have worked on several projects on my own using C, python and go.

Full disk encryption on Samsung Chromebook with Arch Linux

In this post I will explain the procedure I followed to have an Arch Linux install on a Samsung Chromebook 1 (XE303C12-A01US) with full disk encryption using kernel 3.8. Kernel compilation and preparing SD card Install dependencies Install the necessary depdendencies (In my case I was running ubuntu). Mainly you need the tools for crosscompiling the kernel, configure u-boot and partition the SD card with a GPT partition table. sudo apt-get install u-boot-tools gcc-arm-linux-gnueabihf \ binutils-arm-linux-gnueabihf cgpt device-tree-compiler Set up some directories and download arch and kernel sources TMP_PATH=$(pwd)/chromeos mkdir -p $TMP_PATH cd $TMP_PATH mkdir -p root mkdir -p mnt Download my custom files git clone https://github.com/Dhole/alarm_install.git .

Booting the GameBoy with a custom logo

With the cartridge emulator implemented on an STM32F4 we can do some cool stuff. For example, we can make the GameBoy boot with our own custom logo! Bootstrap ROM When the GameBoy boots, an intenral Bootstrap ROM is mapped to the beginning of the memory and execution begins. This bios is in charge of initializing the hardware as well as scrolling the Nintendo logo and checking that the cartridge i valid.

Emulating a GameBoy Cartridge with an STM32F4. Part 2

This post is a continuation of Emulating a GameBoy Cartridge with an STM32F4. Part 1 We have analyzed the memory bus of the GameBoy in order to obtain the timing information of the different signals involved in the read and write operations happening on the cartridge. We will now proceed to develop a system to emulate the behaviour of the cartridge with the STM32F4. About voltage levels As we noticed in the previous post, the GameBoy works at 5V whereas the STM32F4 works at 3.3V.

Emulating a GameBoy Cartridge with an STM32F4. Part 1

Introduction The following project consists on emulating the functionality of a GameBoy cartridge with the development board STM32F4. The system is fully functional and is able to emulate real cartridges (as well as homebrew games) of the type ROM Only and MBC1 (Memory Block Controller 1). In this post I will explain how I managed to achieve this. Motivation Current flashcart systems commonly use a design consisting on a FPGA or CPLD controlling the logic of the emulated cartridge (memory banking, RAM access, etc.), a media storage (flash chip or SD card) and an SDRAM chip.