'compile'에 해당하는 글 2건

From : http://linuxplayer.org/2011/05/build-vanilla-linux-kernel-on-centos-5



Build vanilla linux kernel on CentOS 5


Building a Linux kernel itself is not complicated. In normal case, we just download the latest Linux kernel from http://www.kernel.org, extract the tarball, cd to the kernel source tree, then run a series of command:

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.6.tar.bz2
tar -xjf linux-2.6.38.6.tar.bz2
cd linux-2.6.38.6
make mrproper
make menuconfig
make -j2 > /dev/null
sudo make modules_install
sudo make install

In order for the newly built kernel to be able to boot successfully, we need to configure it with required driver modules, this includes, but not limited to, filesystem drivers, block device drivers, network device drivers, …etc.

However, when it comes to CentOS/RHEL 5, our normal kernel building procedure may not be able to produce a bootable kernel. We may get this error message followed by the famous kernel panic when we are using LVM on the root filesystem.

Scanning and configuring dmraid supported devices
Scanning logical volumes
  Reading all physical volumes.  This may take a while...
  No volume groups found
Activating logical volumes
  Volume group "VolGroup00" not found
Trying to resume from /dev/VolGroup00/LogVol01
Unable to access resume device (/dev/VolGroup00/LogVol01)
Creating root device.
Mounting root filesystem.
mount: could not find filesystem '/dev/root'

The initrd generated by CentOS makes use of some old sysfs features, and the newly built kernel may have that feature disabled. we can reconfigure the kernel to enable it:

General setup->
 [*] enable deprecated sysfs features to support old userspace tools
  │ │    [*]   enabled deprecated sysfs features by default     

Or , manually edit the .config file, add these lines:

CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y

then run

make oldconfig

Make and install the kernel again, it should boot successfully.



WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

출처 : http://lpbox.co.kr/lp/read.php?id=Linux&main_No=60&sub_No=AAAAA



CentOS 5.4를 깔자마자, 사정상 커널 컴파일을 했는데 부팅시 에러로 인한 삽질을 경험하여 포스팅 함.

1. 컴파일 도구 설치

코드

# yum install gcc
# yum install ncurses-devel
# yum install rpm-build
# yum install bison
# yum install depmod
# yum install mkinitrd


2. 커널 다운로드& 압축 해제
코드

# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.1.tar.bz2
# tar xvf linux-2.6.33.1.tar.bz2
# ln -s linux-2.6.33.1 linux
# cd linux


3. 메뉴 구성
코드

# make clean
# make mrproper
# cp /boot/config-현재커널 버전 ./.config
# make menuconfig

현재 구동중인 커널의 환경정보를 기준으로 커널을 컴파일 하기 위하여 cp /boot/config-현재커널 버전 ./.config 를 함

이제 핵심!!!
메뉴 하단에 Load an Al ternate Configuration File을 선택
.config 파일이 입력되어 있는데, 이를 선택하여 현재 커널 환경을 불러들임
이후
General Setup ---> enable deprecated sysfs features which may confuse old usersp 를 Y키를 눌러 *로 활성화 시킨다.
이후 저장하여 메뉴 환경 설정 메뉴에서 탈출!!
또는 .config 파일에서 CONFIG_SYSFS_DEPRECATED_V2=y
로 설정

이를 하지 않고 부팅시 insmod: error inserting '/lib/dm-region-hash.ko': -1 File exists라는 메세지와 함께 커널 패닉!!
설정하더라도 같은 메세지는 나오지만 패닉없이 잘 넘어감

이후
코드
#make && make modules && make modules_install && make install
#cat /boot/grub/grub.conf

#cat /boot/grub/grub.conf를 통해 새로운 커널이 부팅할 수 있게 설정되었는지 확인한

코드

#reboot
...
#uname -a


WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,