CentOS와 Redhat Enterprise가 얼마나 다른지는 모르겠지만 이걸 참고로 다시 도전. 그런데 더 간결하다; 음. 어디보자. 스탭 10까지는 더 쉽게 설명되어 있고;; 그런데 이미 노가다로 해결봤으니 패스. 스탭 10이 좀 다른데.. ONE_CD/isolinux 디렉의 파일을 고치란다; 그런데 이미 이전 도큐먼트대로 고쳐서 화면은 뜨는걸 봤는데. 어쨌든 말하는대로 수정. 11번 스탭. kickstart 파일을 수정하는 과정. 대략 추가.
%package 항목 위에, zerombr yes 대략 Master Boot Record를 초기화 한다고 함 install 업그레이드 대신 인스톨 reboot 설치 후 리부팅
그리고.. 별거 없잖아! 처음 참고 사이트의 댓글에서 또 하나 발견.
Off the top of my head, I'm thinking you're missing the .discinfo file from the root directory of your CD. You have to have that file. I copied it from the first disk of Red Hat's ISOs.
대략 .discinfo 파일이 필요하다고 함. 처음 인스톨 CD라..
mount /dev/cdrom /mnt/cdrom/ cd /mnt/cdrom/ cp .discinfo ~package/CO34/ONE_CD/ cat .discinfo 1104951135.38 final i386 1 RedHat/base RedHat/RPMS RedHat/pixmaps umonut /mnt/cdrom/
이건 이전에 한거. 대략 굽는 옵션에 따라 부팅이 달라지는듯 함. 어쨌든 새로운 방법대로 구웠음~ 아참; implantisomd5 요걸 빼먹었네; 대략 패스;;
일단 설치는 됨. 확인.. 부팅이 안됨; 대략 파티션 분배와 설치가 잘못된듯. 확인중. 오케. 확인끝. 대략 찝찝한게 두가지. 하나는 커널이 rpm 이름대로 설치가 되서 파일을 못찾은 문제; 하나는 설치시 Local-CDROM을 선택하게 하는 문제. 두개를 고쳐야되는데. 어디보자..
일단 결론만 이야기하자면 커널 문제는 해결. makefile과 mkproc 스크립을 수정. rpm을 다시 만들어야된다; 정확한 현상은 이런거다. makefile의 EXTRAVERSION 이 이렇게 되어 있다.
EXTRAVERSION = -27.EL-0.1
요걸 rpm에서 패키징을 하면 이렇게 나온다.
kernel-2.4.2127.EL0.1.rpm
dash(-)가 전부 빠져버렸다! ...; 그런데 그게 문제가 아니라 /lib/module 디렉토리와 /boot/bzImage 파일은 이렇게 깔린다.
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) -KERNELPATH=kernel-$(shell echo $(KERNELRELEASE) | sed -e "s/-//g") +#KERNELPATH=kernel-$(shell echo $(KERNELRELEASE) | sed -e "s/-//g") +KERNELPATH=kernel-$(shell echo $(VERSION).$(PATCHLEVEL).$(SUBLEVEL) | sed -e "s/-//g")
버젼은 그냥; 요지는 KERNELPATH가 바뀐다. 수정하고 있는 커널의 버젼이 linux-2.4.21-27.EL.SH.0.2 라면 spec에 사용하는 tar 이름은 kernel-2.4.21.tar.gz 가 된다. 거기 묶인 디렉토리는 kernel-2.4.21/ 이겠지. 그리고 script/mkspec 스크립트의 변경점은 아래와 같다.
diff -U 2 scripts/mkspec /usr/src/linux-2.4/scripts/mkspec --- scripts/mkspec 2002-08-03 09:39:46.000000000 +0900 +++ /usr/src/linux-2.4/scripts/mkspec 2005-07-19 17:40:22.000000000 +0900 @@ -25,17 +25,19 @@ echo "Name: kernel" echo "Summary: The Linux Kernel" -echo "Version: "$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION | sed -e "s/-//g" +echo "Version: "$VERSION.$PATCHLEVEL.$SUBLEVEL | sed -e "s/-//g" # we need to determine the NEXT version number so that uname and # rpm -q will agree -echo "Release: `. scripts/mkversion`" +echo "Release: "$EXTRAVERSION | sed -e "s/-//g" echo "License: GPL" echo "Group: System Environment/Kernel" echo "Vendor: The Linux Community" echo "URL: http://www.kernel.org" -echo -n "Source: kernel-$VERSION.$PATCHLEVEL.$SUBLEVEL" -echo "$EXTRAVERSION.tar.gz" | sed -e "s/-//g" +echo -n "Source: kernel-$VERSION.$PATCHLEVEL.$SUBLEVEL.tar.gz" +echo +#echo "$EXTRAVERSION.tar.gz" | sed -e "s/-//g" echo "BuildRoot: /var/tmp/%{name}-%{PACKAGE_VERSION}-root" echo "Provides: $PROVIDES" echo "%define __spec_install_post /usr/lib/rpm/brp-compress || :" +echo "%define debug_package %{nil}" echo "" echo "%description"
일단 EXTRAVERSION이 Version안에 들어가던 것을 Release로 뺐다. rpm은 기본적으로 Version-Release의 이름 구조를 따르고 있다. 그럼 원하는.. linux-2.4.21-27.EL.SH.0.2 요런 이름이 나오게 된다. dash(-)가 다 dot(.)로 바꼈지만; Source 항목도 EXTRAVERSION을 제거.
이렇게 rpm을 만들면 원하는 rpm이.. 나오는것은 아니지만 대략 볼만한 수준의 이름은 나온다; 설치시 local-CDROM은.. 그냥 두기로 했다. 엔터 한번 치지..; 이것으로 부팅까지 종료. 나머지는 그냥 ks.cfg의 %post를 좀 수정해주면 될듯.