====== Compiling Voyage Kernel ======
* http://debian-handbook.info/browse/squeeze/sect.kernel-compilation.html
* https://devjlanza.wordpress.com/2011/11/14/customize-voyage-linux-image/
*
====== Modifying Kernel on Existing System ======
Update system and install packages:
remountrw
apt-get update
apt-get install whatever
You can also compile your programs on your main system or in the Voyage one. If you do on your main system, be aware that the target architecture fits the one of your Voyage.
This is required to enable some options not included by default.
Install the requiered packages to build the kernel.
apt-get update
apt-get install dialog ncurses-dev build-essential zlib1g-dev kernel-package fakeroot
===== Download and install voyage kernel source code package. =====
Finding the current kernel version by uname:
uname -a
Linux imavoyage 3.10.11-586-voyage-20140228 #3 SMP Fri Feb 28 13:40:24 CET 2014 i686 GNU/Linux
Download new kernel or current kernel if we only change some installation option.
wget http://www.voyage.hk/dists/0.9/linux/linux-source-3.14.12-voyage_15.0-1_all.deb
Get:1 http://www.voyage.hk/dists/0.9/ ./ linux-source-3.10.11-voyage 13.0-1 [86.9 MB]
dpkg -i linux-source-3.0.0-voyage_10.0-1_all.deb
Alternative using apt-get:
apt-cache search linux-source
linux-source-3.2 - Linux kernel source for version 3.2 with Debian patches
linux-source - Linux kernel source (meta-package)
linux-source-2.6 - Linux kernel source (dummy package)
linux-source-3.4.4-voyage - Linux kernel source for version 3.4.4-voyage
linux-source-3.10.11-voyage - Linux kernel source for version 3.10.11-voyage
linux-source-3.14.12-voyage - Linux kernel source for version 3.14.12-voyage
linux-source-3.12.9-voyage - Linux kernel source for version 3.12.9-voyage
linux-source-3.8.11-voyage - Linux kernel source for version 3.8.11-voyage
linux-source-3.8.13-voyage - Linux kernel source for version 3.8.13-voyage
linux-source-3.6.9-voyage - Linux kernel source for version 3.6.9-voyage
root@imavoyage:~/kernel_ws# uname -a
Linux imavoyage 3.10.11-586-voyage-20140228 #3 SMP Fri Feb 28 13:40:24 CET 2014 i686 GNU/Linux
The source is now available in /usr/src/*.tar.gz
tar xvjf linux-source-3.10.11-voyage.tar.bz2
==== Prepare .config file ====
Use current kernel-config
cd /usr/src
cp /boot/config-3.10.11-586-voyage-20140228 ./
Use other .config
# wget http://mirror.voyage.hk/download/kernel_config/config-3.0.0-voyage_10.0-1
# cp config-3.0.0-voyage_10.0-1 /usr/src
Make config
cd /usr/src/linux-source-3.10.11-voyage
cp ../config-3.0.0-voyage_10.0-1 .config
===== Select module and packages =====
Make sure following are set.
==== Posix_mqueue ====
grep CONFIG_POSIX_MQUEUE .config
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
==== Atheros AR9300 wifi ====
grep -i ath .config
# CONFIG_MATH_EMULATION is not set
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_BT_HCIUART_ATH3K=y
CONFIG_BT_ATH3K=m
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_MD_MULTIPATH=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_QL=m
CONFIG_DM_MULTIPATH_ST=m
CONFIG_NET_VENDOR_ATHEROS=y
CONFIG_ATH_COMMON=m
CONFIG_ATH_CARDS=m
CONFIG_ATH_DEBUG=y
CONFIG_ATH5K=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K_TRACER=y
CONFIG_ATH5K_PCI=y
CONFIG_ATH9K_HW=m
CONFIG_ATH9K_COMMON=m
CONFIG_ATH9K_BTCOEX_SUPPORT=y
CONFIG_ATH9K=m
CONFIG_ATH9K_PCI=y
CONFIG_ATH9K_AHB=y
CONFIG_ATH9K_DEBUGFS=y
CONFIG_ATH9K_MAC_DEBUG=y
CONFIG_ATH9K_LEGACY_RATE_CONTROL=y
CONFIG_ATH9K_HTC=m
CONFIG_ATH9K_HTC_DEBUGFS=y
CONFIG_ATH6KL=m
CONFIG_ATH6KL_SDIO=m
CONFIG_ATH6KL_USB=m
CONFIG_ATH6KL_DEBUG=y
CONFIG_ATH6KL_TRACING=y
CONFIG_SECURITY_PATH=y
==== iptable_nat ====
grep -i nat linux-image-3.10.11-voyage-4-ima_20150308_i386.config
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_HIBERNATE_CALLBACKS=y
CONFIG_HIBERNATION=y
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_NF_NAT_PROTO_DCCP=m
CONFIG_NF_NAT_PROTO_UDPLITE=m
CONFIG_NF_NAT_PROTO_SCTP=m
CONFIG_NF_NAT_AMANDA=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_SIP=m
CONFIG_NF_NAT_TFTP=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m
CONFIG_NF_NAT_H323=m
CONFIG_NF_NAT_IPV6=m
CONFIG_BRIDGE_EBT_T_NAT=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_NET_ACT_NAT=m
# Controllers with non-SFF native interface
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NATSEMI=m
CONFIG_NATIONAL_PHY=m
# Native drivers
CONFIG_CHECK_SIGNATURE=y
===== Compile Kernel =====
uname -a
Linux imavoyage 3.10.11-586-voyage-20140228 #3 SMP Fri Feb 28 13:40:24 CET 2014 i686 GNU/Linux
fakeroot make-kpkg --append_to_version -486-voyage --revision=3.0-2Cust kernel_image --initrd
Kernel version look like this [linux-source-][3.10.11][-voyage]
New kernel version look like this [linux-source-3.10.11][-my_voyage]_[20150306]
Append_to_version: the part after kernel version [-my_voyage]
Revision: [20150306]
make-kpkg also accepts several parameters: --append-to-version //suffix// appends suffix to the name of the kernel; the suffix is also included in the package name. --revision revision defines the version number of the package generated. Debian uses certain suffixes to identify standard kernels, compiled specifically for a given processor, or with certain options (-486, -686, -686-bigmem, -amd64, -vserver-686, -vserver-686-bigmem, -openvz-686, -xen-686). These suffixes are best avoided for local packages, so that they can be easily recognized from official packages issued by the Debian project.
The make-kpkg program performs actions normally restricted to the root user when creating the Debian package; however, it can be tricked into working under a normal user's identity, with fakeroot (see sidebar TOOL fakeroot).
fakeroot make-kpkg --append-to-version -falcot --revision 1 --initrd kernel-image
[...]
$ ls ../*.deb
../linux-image-2.6.32-falcot_1_i386.deb
==== Final command ====
CONCURRENCY_LEVEL=3 fakeroot make-kpkg --append_to_version "-586-voyage" --revision="-ima-20150403" kernel_image --initrd
**The compilation will takes forever!!!**
==== Copy to host machine ====
sudo scp -rp /usr/src/linux-image-3.10.11-voyage-i386-ima-20150305_3.10.11-voyage-i386-ima-20150305-10.00.Custom_i386.deb \
root@192.168.101.1:/home/dang/data/src/01_ima_ws/ima_carpc_ws/carpc_hw_openwrt/voyage_linux/voyage_kernel/
====== Compile Kernel on a Compatible Machine ======
For voyage 9.2 we use Debian 7.2.0.
/mnt/vm00/deb702...-ext1.sh
Do the same like above. Compile as root otherwise ncurses-dev path will not be found.
====== Installing Kernel ======
cp kernel.deb root@voyage.local:~/kernel.deb
dpkg -i kernel.deb
===== Change GRUB boot order =====
grub-update
vim /boot/grub/menu.lst
Change defautl to the index of the default kernel to load (**count from 1!**)
====== Remove Custom Compiled Kernel ======
* https://www.howtoforge.com/community/threads/de-installing-a-self-compiled-ubuntu-kernel.9036/