Recently, I had a customer in the banking industry that needed legacy pseudo tty support on their servers. This article describes the process of adding pseudo tty support in the CentOS kernel. In addition, I describe how to create a customer kernel RPM for easy distribution to other servers.
Let’s get started:
Download source kernel RPM from http://mirror.centos.org/centos/5/updates/SRPMS
Install the source RPM:
[root@host]# rpm -Uvh kernel-.el5.src.rpm
Unpack sources:
[root@host]# cd /usr/src/redhat/SPECS
For kernels < 2.6.18-164: rpmbuild -bp –target=`uname -m` kernel-2.6.spec
For kernels >= 2.6.18-164: rpmbuild -bp –target=`uname -m` –without fips kernel-2.6.spec
Copy current kernel config to source tree
[root@host]# cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686
[root@host]# cp /boot/config-`uname -r` .config
[root@host]# make oldconfig
edit the .config file and add:
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
after the line:
CONFIG_UNIX98_PTYS=y
**IMPORTANT**
Delete the line:
# CONFIG_LEGACY_PTYS is not set
Otherwise, the kernel won’t be compiled with PTY support!!
Also, add a line immediately at the top of the file reflecting your architecuture:
# i386
or
# x86_64
Save changes
Copy the new .config file to the source directory:
[root@host]# cp .config /usr/src/redhat/SOURCES/kernel-2.6.18-i686-PAE.config (or whatever the architecture/configuration is)
Modify the /usr/src/redhat/SPECS/kernel-2.6.spec file to customize the new kernel by uncommenting and editing this line (add .pty to it):
%define buildid .pty
Save changes
Build the new kernel RPM:
[root@host]# cd /usr/src/redhat/SPECS
For kernels < 2.6.18-164: [root@host]# rpmbuild -bb –target=`uname -m` kernel-2.6.spec
For kernels >= 2.6.18-164: [root@host]# rpmbuild -bb –target=`uname -m` –without fips kernel-2.6.spec
==AND==
Add the following switches to rpmbuild
for PAE only:
–without up –without xen –without debug –without debuginfo
for Base only:
–with baseonly –without debug –without debuginfo
For more info, visit wiki.centos.org/HowTos/Custom_Kernel
Once finished, install the new kernel:
[root@host]# rpm -ivh /usr/src/redhat/RPMS/`uname -m`/name-of-new-kernel-rpm.rpm