forevergenin little things in life matter
Posts with the tag linux:

Bootstrapping CentOS rootfs for use with chroots/containers

We will see how to generate a rootfs tarball for redhat based system. Since we are targetting redhat based system, I am going to use debian based system (Ubuntu 17.10 64-bit - latest at the time of writing this post) as my host. We will generate rootfs tarball for CentOS 7 64-bit. The below mentioned steps are validated on Ubuntu 17.10 desktop installation. Lets get started As usual the first step, install the required dependecy packages which in our case is yum. sudo apt install yum Second, will prepare the required directory structure. In our example ~/work will be our working directory and we will install the CentOS 7 roofs in inside of work in a directory named centos7.

Bootstrapping a debian rootfs for use with chroots/containers

The aim this time is to setup a base rootfs for Ubuntu/Debian distro which can be used for setting up a chroot jail or to create a docker container base image. This blog is based on a earlier blog which I have written but forgot to publish around June, 2012. The below mentioned steps are validated on Fedora 25 Workstation installation. For setting up a debian based rootfs we need a tool called debootstrap. It’s available as part of EPEL repository for Fedora and other Redhat based distros. Make sure to always install the latest version of debootstrap. sudo dnf install debootstrap To setup a base rootfs you need to decide on the version of debian distro (wheezy, jessie, buster), the target architecture (i386 or amd64) and what kind of variant you want to setup.

Cross Compilation Checklist

This check-list tries to document the obvious, to reduce the time spent fixing toolchain related errors while cross compiling. Export the toolchain location to the PATH environment variable Set proper --sysroot for CFLAGS, CXXFLAGS and LDFLAGS Set proper PKG_CONFIG_SYSROOT_DIR, PKG_CONFIG_PATH and PKG_CONFIG_LIBDIR for pkg-config tool. This is important for build scripts which use pkg-config to determine the proper build flags. Note: Use pkg-config >= 0.26 . There is bug with previous versions of pkg-config which ignores the PKG_CONFIG_SYSROOT_DIR value A sample configuration export __CB_TOOLCHAIN_DIR=/opt/cross-toolchain export __CB_TOOLCHAIN_SYSROOT=${__CB_TOOLCHAIN_DIR}/sysroot export PATH=${__CB_TOOLCHAIN_DIR}/bin:${PATH} export PKG_CONFIG_SYSROOT_DIR=${__CB_TOOLCHAIN_SYSROOT} export PKG_CONFIG_PATH=${PKG_CONFIG_SYSROOT_DIR}/usr/lib/pkgconfig export PKG_CONFIG_LIBDIR=${PKG_CONFIG_SYSROOT_DIR}/usr/lib/pkgconfig export CFLAGS+="--sysroot=${__CB_TOOLCHAIN_SYSROOT} " export CXXFLAGS+="--sysroot=${__CB_TOOLCHAIN_SYSROOT} " export LDFLAGS+="--sysroot=${__CB_TOOLCHAIN_SYSROOT} " #export PKG_CONFIG_DEBUG_SPEW=true # this one is for debugging pkg-config Note : Need to update the post on how to cross compile packages which use autoconf tools

Distro independent Java development environment setup

Until few years back setting up Java development environment based on Sun/Oracle JDK was fairly a simple task. Since most of the linux distributions included Oracle/Sun JDK as part of their default package repository (here read as Canonical’s partner repository ;-)) it was as easy as installing any other core linux pacakge. But in recent times due to license restrictions Oracle JDK is not included in any of the linux distribution repositories by default. Setting up Java development environment manually from scratch on linux has become a tedious job (though still easier doing tha on Microsoft Windows). Nowadays I avoid doing it, given a chance to use a preconfigured virtual machines or chroot tar balls - created specifically for development/build requirements.