재생산 방법에 대한 완전한 지침

재생산 방법에 대한 완전한 지침

편집하다:나는 이것을 일반적으로 다시 시도했지만 동일한 문제를 보았습니다. 재현하려면 아래 단계를 따르십시오. 하드웨어에 문제가 있을 수 있다는 생각이 들기 시작했지만 확실하지는 않습니다.

kickstart를 사용하여 CentOS 7 ISO를 설치할 때 추가 로그 없이 "Pane is dead"라는 오류가 발생합니다. 기본적으로 CentOS 7 ISO를 사용하고 kickstart 파일을 추가했습니다. VirtualBox에 이것을 설치하면 모든 것이 잘 작동합니다. 여러 인터페이스가 있는 실제 하드웨어에 설치하려고 하면 모든 패키지가 설치된 후 "Pane is dead" 오류가 발생합니다.

여기에 이미지 설명을 입력하세요

나는 무엇이 문제가 될 수 있는지 헤매고 있습니다. 내가 시도한 몇 가지:

  • 문제를 나타내는 로그가 생성되지 않습니다. 킥스타트에 해당 라인을 추가하기도 했지만 logging --level=debug볼 만한 가치가 전혀 없었습니다.
  • 설치 후 단계가 없으므로(문제가 확인되기 전 마지막 로그이므로 ks에서 제거했습니다) 문제가 될 수 없습니다.
  • 웹 어딘가에서 누군가 CentOS 6과 7 ISO 사이에 차이가 있다고 말한 것을 본 적이 있지만 이러한 차이점이 무엇인지 정량적으로 나타내는 추가 정보는 없었습니다.

재생산 방법에 대한 전체 지침은 다음과 같습니다. 내가 뭘 잘못하고 있는지 알 수 있다면 크게 감사하겠습니다.

감사해요!

재생산 방법에 대한 완전한 지침

내 프로덕션 시스템은 최신 CentOS 7 서버입니다. 누락된 응용 프로그램이 있으면 yum을 사용하여 쉽게 설치할 수 있다고 확신합니다.

기본 단계는 다음과 같습니다.

  • 작업 디렉터리 만들기
  • 킥스타트 파일 생성
  • isolinux.cfg 업데이트
  • 패키지 다운로드
  • 저장소 생성
  • ISO 만들기

작업 디렉토리 생성

CentOS 7 ISO를 임시 디렉토리에 복사하고 마운트하여 모든 파일을 가져왔습니다.

>cd /tmp
>wget http://centos.mirror.iweb.ca/7/isos/x86_64/CentOS-7-x86_64-DVD-1503-01.iso
... hours later ...
>mkdir CentOS7-CD
>sudo mount -l /tmp/CentOS-7-x86_64-DVD-1503-01.iso /tmp/CentOS7-CD
mount: block device /tmp/CentOS-7-x86_64-DVD-1503-01.iso is write-protected, mounting read-only

모든 파일을 작업 디렉토리에 복사했습니다.

>cd /tmp/
>cp -r CentOS7-CD/ CentOS7

킥스타트 파일

내 킥스타트 파일을 추가합니다:

>cat << @@EOF@@ > /tmp/CentOS7/ks.cfg
#version=RHEL7
# System authorization information
auth --enableshadow --enablemd5
# Install OS instead of upgrade
install
# Reboot after installation
reboot --eject
# License agreement
eula --agreed
# Use text mode install
text
# Firewall configuration
firewall --disabled
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_CA.UTF-8
# Installation logging level
logging --level=debug
# Network information
%include /tmp/network.ks

# Use CDROM installation media
cdrom
repo --name="CentOS" --baseurl=cdrom:sr0
# Use Network installation
#url --url=http://centos.mirror.iweb.ca/7/os/x86_64/

# Root password
rootpw --plaintext password
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone Etc/UTC --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel 
# Disk partitioning information
part / --fstype="ext4" --size=10000
part /data --fstype="ext4" --size=18461
part /info --fstype="ext4" --size=2000
part /boot --fstype="ext3" --size=256
part swap --fstype="swap" --size=2048

%packages --nobase --excludedocs
@core
-aic94xx-firmware
-alsa-*
-iwl*-firmware
-ivtv-firmware
-libertas-*-firmware
-btrfs-progs
-cronie-anacron
-cronie
-crontabs
-ModemManager-glib
-NetworkManager*
-postfix
-wpa_supplicant
%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%pre
interface=$(ip addr | grep -i broadcast | awk '{ print $2 }' | head -1 | sed 's/://g')
echo "network --bootproto=dhcp --device=${interface} --onboot=on" > /tmp/network.ks
%end
@@EOF@@

참고: 이 지침을 사용하고 잘라내어 붙여넣는 경우 모든 줄 앞에 ">"가 붙을 수 있습니다. 제거하려면 다음을 사용하십시오.

>sed -i 's|^> ||' /tmp/CentOS7/ks.cfg

설치된 패키지 수를 제한하려고 했기 때문에 이 %packages섹션에 모든 제외 항목이 있습니다.

ISOLINUX.CFG

다음으로, isolinux.cfg 파일을 편집하고 inst.ks=cdrom:/dev/cdrom:/ks.cfg각 추가 행에 추가하고 비테스트 버전을 기본값으로 만듭니다.

>cd /tmp/CentOS7/isolinux/
>sed -i 's|\(LABEL=\S*\)|\1 inst.ks=cdrom:/dev/cdrom:/ks.cfg|' isolinux.cfg
# Delete the old default (check)
>sed -i '/menu default/d' isolinux.cfg
# Add the new default (linux)
>sed -i '0,/  kernel vmlinuz/s//  menu default\n&/' isolinux.cfg

패키지 추가

경험적으로 최소 설치를 위해 추가해야 할 패키지가 240개라는 것을 확인했습니다. 킥스타트 파일을 다음과 같이 변경하여 VirtualBox에서 네트워크 설치를 수행하여 이 작업을 수행했습니다.

# Use CDROM installation media
#cdrom                                    # <-- comment this out for ntwk install
#repo --name="CentOS" --baseurl=cdrom:sr0 # <-- comment this out for ntwk install
# Use Network installation
url --url=http://centos.mirror.iweb.ca/7/os/x86_64/

그래서 저는 CDROM 설치를 주석 처리하고 대신 네트워크 저장소를 사용했습니다. 설치시간은 10분정도 걸렸습니다. 완료되면 로그인하여 설치된 패키지 목록을 가져왔습니다.

VB> rpm -qa > pkg.list

이 파일을 프로덕션 컴퓨터에 다시 복사하고 다음 파일을 다운로드할 위치를 얻었습니다.

> cd /tmp/CentOS7
> rm -rf Packages
> cd Packages
# Copy the pkg.list from the VB server to this location
> cat pkg.list | xargs yumdownloader --urls | grep "^http" > pkg.urls
> wget -nv -nc -i pkg.urls

모든 패키지를 다운로드하므로 완료하는 데 몇 분이 걸립니다.

저장소 생성

저장소를 만드는 것은 간단한 작업입니다.

>cd /tmp/CentOS7
>mv repodata/*comps.xml.gz comps.xml.gz
>gzip -d comps.xml
>rm -rf repodata
>mkdir repodata
>cp comps.xml repodata/
>createrepo -g repodata/comps.xml .

ISO 만들기

>cd /tmp
>mkisofs -o custom.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -V 'CentOS 7 x86_64' -boot-load-size 4 -boot-info-table -R -J -v -T CentOS7/

답변1

마침내 내 문제가 해결되었습니다! 다른 사람이 보면 원인을 알 수 있도록 답변으로 표시하겠습니다. 그러나 나는 캐나다인만 영향을 받을 것이라고 생각합니다...

lang en_CA.UTF-8문제는 kickstart 파일의 행 에 있는 것으로 밝혀졌습니다 . 이렇게 변경했더니 lang en_US.UTF-8정상적으로 설치가 완료되었습니다. 사용법에 대해 또 다른 질문을 할 수도 있지만 en_CA적어도 이 문제는 해결했습니다.

감사해요!

관심 있는 분들을 위해 제가 해결한 방법은 다음과 같습니다.

  • CentOS-7-x86_64-DVD-1503-01.iso가 포함된 DVD를 만들었습니다.
  • 이것을 내 서버에 넣고 부팅했습니다.
  • 요청을 받으면 grub 구성 줄을 변경하고 추가했습니다 text.
  • 아나콘다 설치 중에 네트워크를 통한 최소 설치를 구성했습니다.
  • 설치가 완료되고 anaconda-ks.cfg파일이 생성되었습니다./root/
  • 나는 이 파일을 복사하여 내 파일의 템플릿으로 정확하게 사용했습니다 ks.cfg.
  • 또한 이 설치에서 설치된 패키지 세트를 기반으로 Packages및 디렉터리를 다시 만들었습니다 .repodata
  • 새로운 kickstart 파일로 새로운 iso를 생성하고 설치가 완료되었습니다!
  • 한 줄씩 새 ks.cfg 파일의 차이점을 이전 파일(문제가 있는 파일)과 일치하도록 변경하고 ISO를 다시 만들고 설치를 시도했습니다.
  • 오류를 일으킨 유일한 줄이 그 lang en_CA.UTF-8줄이라는 것을 고통스럽게 발견했습니다.

답변2

내가 말했듯이 문제는 매우 분명한 것 같습니다. 설치 후 스크립트가 실행되면 창이 작동하지 않습니다.

정확히 무엇이 잘못되었는지 이해하기 위해 ks 파일에서 해당 섹션을 잘라내거나 기록하는 것이 더 좋습니다.

로그를 기록하려면 킥스타트에서 --log /path/to/logfile 지시문을 사용할 수 있습니다. 창 메시지를 받으면 TTY 중 하나로 전환하고 로그를 확인하세요.

따라서 문제가 되는 섹션은 %post입니다.

이게 도움이 되길 바란다.

관련 정보