=====Update the kernel===== Download the kernel update code from mdrfr and run the script: wget http://builder.mdrjr.net/tools/kernel-update.sh chmod +x kernel-update.sh sudo ./kernel-update.sh Reboot the Odroid: reboot =====Kernel Source===== get the kernel source from the github. You need to run the command straight after updating the kernel so the kernel and the source match: wget https://github.com/hardkernel/linux/archive/odroid-3.8.y.zip =====Configuring, Compiling and Installing the Kernel===== {{ :odroid-kernel-1.png?direct&400 |}} {{ :odroid-kernel2.png?direct&400 |}} Update the software repositories: yum update Install the following software yum install -y gcc gcc-c++ make openssl-devel newt-devel ncurses-devel libtermcap-devel libxml2-devel perl curl curl-devel lzop zlib-devel unixODBC-devel libtool Unzip the Kernel Source then configure it: unzip odroid-3.8.y.zip cd linux-odroid-3.8.y cp arch/arm/configs/odroidu_defconfig ~/linux-odroid-3.8.y/.config To enable OSS sound card support and the correct /dev drivers, we need to re-compile the kernel with certain options. make menuconfig Scroll down the list and go to Device Drivers, then Sound card support. You will be presented with the first screen on the right, set the ALSA option to a module (press ). Press [ENTER]. Then enable all the OSS modules you see to make your screen look like the second image. When you exit to the first screen, you will see a an option for Preclaim OSS device numbers. Make sure this is selected with a [*]. Take notice of the Kernel version at the top of the screen Exit out then save the configuration. Then build the kernel: make make modules make modules_install make zImage Now install the kernel: mv /boot/uboot/zImage /boot/uboot/zImage.prev mv arch/arm/boot/zImage /boot/uboot/zImage Now reboot reboot If all is good, it will reboot back into a login prompt. ====Creating Kernel Scripts==== Create the scripts needed to compile software. make scripts ====Installing a watchdog==== As all my embedded thingy's are supposed to run unattended without any user interaction, possibly for months, it is probabily a good idea to install a watchdog in the kernel. The watchdog will reboot the droid (and pi) if the watchdog file is not written to for a period of time. ===Install the watchdog=== go back into the kernel compile folder and make the menu: make menuconfig * Scroll down the list to ''Device Drivers'', press [Enter], * then down to ''Watchdog Timer Support''. * Press the space bar to enable it with a ''*''. * Then press [Enter] to go into the sub menu. * Press the space bar on ''Disable watchdog shutdown on close'', and * Software watchdog Exit back out of the menu. Make the Kernel as described above and install the new zImage. Reboot ===Keep the watchdog alive=== In order to stop the watchdog from rebooting the Odroid, we need to write a simple program to 'ping' the watchdog device so it knows the device is still alive. That program then needs to be run at boot: nano ~/watchdog.c Enter the following into nano: #include #include #include #include int main(void) { int fd = open("/dev/watchdog", O_WRONLY); int ret = 0; if (fd == -1) { perror("watchdog"); exit(EXIT_FAILURE); } while (1) { ret = write(fd, "\0", 1); if (ret != 1) { ret = -1; break; } sleep(10); } close(fd); return ret; } Save the file, then we have to compile it: gcc watchdog.c -o watchdog Now that the program has been compiled, we need to install it into the crontab so it will run at power up. crontab -e Enter the following into a new crontab line: @reboot /root/watchdog >/dev/null & By doing all this, the watchdog is hard coded to the kernel and cannot be uninstalled by accident. The only way to remove the watchdog is to re-compile the kernel without it. This should mean the odroid is unstoppable on a hill-top or similar place. You can now go onto building the [[odroid_repeater_controller|Odroid Repeater Controller]]