336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

5. Kickstart  파일 생성

 

/ks 디렉토리(ex: ~/work/kickstart_build/isolinux/ks)에  다음의 파일을 ks.cfg 파일로 저장한다.

 

/root/anaconda-ks.cfg

 

5.1 root 암호 변경

 

root계정의 암호를 변경하기 원할 경우 rootpw를 수정해야 한다.

(수정하지 않으면 현재 OS의 root 암호와 동일하게 설정된다)

 

아래와 같이 rootpw --iscrypted 다음 hash된 값이 있는데 이부분을 원하는 암호의 sha512해쉬 값을 넣어주면 된다

 

해쉬의 경우 google에서 'sha512 encrypt' 등으로 검색해보면 간단히 해결할수 있다.

 

ex) rootpw --iscrypted $6$DxkJ9kjcYdHIIUv4$QitYoibBbfE3liAspeZcFzfp9jEiNFRVeY27/GVg9NmOcKsUp1wTmDTVplZqETy5ZN.vYXfRiKoSOW4zKNbLM1

 

 

5.2 파티션

 

파티션 변경이 필요한 경우 아래 사이트를 참조

 

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Installation_Guide/s1-kickstart2-options.html

 

 

5.3 packages

 

이전 3. 항목에서 복사한 패키지를 이곳에 등록을 해줘야 설치가 된다.

 

ex) %packages
      @core
      at
      dialog
      expect
      freetds
      httpd
      ipvsadm
      libnet
      ntp
      pacemaker
      samba-common
      lrzsz
      vim
      perl

      .

      .

      .
      %end

 

Tip!

 

ISO 빌드 이후 설치시 설치 중간에 멈추거나 등록한 패키지가 설치되지 않은경우

 

의존성 문제일 가능성이 크고 ks.cfg 파일과 packages 디렉토리를 잘 확인해야 한다.

 

 

5.4 postinstall

 

설치 이후 진행할 작업을 쉘스크립트 형식으로 %post에 작성한다.

 

이때 파일등의 복사가 필요한경우 항목 2.에서 만들어둔 postinstall 디렉토리에

 

복사 해주면 인스톨후 postinstall 작업이 시작되기 전에 /root/postinstall 디렉도리에 복사가 되어 진다.

 

이를 활용하면 파일등을 복사하는 작업도 가능하다

 

 ks.cfg 예

#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512

 

# Use CDROM installation media
cdrom


# Use text install
install
text


# Run the Setup Agent on first boot
firstboot --disable

# Keyboard layouts
keyboard --vckeymap=us --xlayouts='en_us.utf-8'


# System language
lang ko_KR.UTF-8

 

# Network information
network --bootproto=dhcp --device=eno --onboot=off --ipv6=auto
network --device=lo --hostname=localhost.localdomain

 

# Root password
rootpw --iscrypted $6$DxkJ9kjcYdHIIUv4$QitYoibBbfE3liAspeZcFzfp9jEiNFRVeY27/GVg9NmOcKsUp1wTmDTVplZqETy5ZN.vYXfRiKoSOW4zKNbLM1


# System timezone
timezone Asia/Seoul --isUtc

 

#Selinux
selinux --disabled

 

# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr

 

# Automatic partition (remove all partition)
zerombr
clearpart --all --initlabel
part /boot --fstype=ext4 --size=500
part pv.01 --grow --size=1
volgroup VolGroup --pesize=4096 pv.01
logvol swap --name=lv_swap --vgname=VolGroup --recommended
logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
logvol /opt --fstype=ext4 --name=lv_opt --vgname=VolGroup --grow --size=1
reboot

 

%packages
@core
at
dialog
expect
freetds
httpd
ipvsadm
libnet
ntp
pacemaker
samba-common
lrzsz
vim
perl
mysql-community-client
mysql-community-server
net-snmp
net-tools
perl-Authen-SASL
perl-Business-ISBN
perl-Business-ISBN-Data
perl-Convert-ASN1
perl-Crypt-SSLeay
perl-Digest
perl-Digest-HMAC
perl-Digest-MD5
perl-Digest-SHA
perl-Encode-Locale
perl-File-Listing
perl-GSSAPI
perl-HTML-Parser
perl-HTML-Tagset
perl-HTTP-Cookies
perl-HTTP-Daemon
perl-HTTP-Date
perl-HTTP-Message
perl-HTTP-Negotiate
perl-IO-HTML
perl-IO-Socket-IP
perl-IO-Socket-SSL
perl-JSON
perl-LDAP
perl-LWP-MediaTypes
perl-Net-DNS
perl-Net-HTTP
perl-Net-LibIDN
perl-Net-SSLeay
perl-Text-Soundex
perl-Text-Unidecode
perl-URI
perl-WWW-RobotRules
perl-XML-Filter-BufferText
perl-XML-NamespaceSupport
perl-XML-SAX-Base
perl-XML-SAX-Writer
perl-libwww-perl
iptables-services
openssl
openssh
wget
gdb
tcpdump
%end

 

%post --nochroot
#!/bin/sh

set -x -v
exec 1>/mnt/sysimage/root/kickstart-stage1.log 2>&1

echo "==> copying files from media to install drive..."
cp -r /run/install/repo/postinstall /mnt/sysimage/root

%end


%post
# enable serial port
cat > /etc/init/Stty.conf <<EOF
stop on runlevel [016]
start on runlevel [345]
respawn
instance /dev/ttyS0
exec /sbin/agetty /dev/ttyS0 19200 vt100
EOF
echo 'ttyS0' >> /etc/securetty

 

# Disable SELINUX
echo "SELINUX=disabled" > /etc/sysconfig/selinux
echo "SELINUXTYPE=targeted" >> /etc/sysconfig/selinux

 

# It seems that serial console is auto detected by OS
# vi environment
echo 'alias vi=vim' >> /etc/bashrc
echo "set tabstop=4" >> /etc/vimrc

 

# Language environment
sed -i'' -e "/LANG/c\LANG=\"ko_KR.UTF-8\"" /etc/sysconfig/i18n

 

# make symbolic link of jdk
mkdir /usr/java
mv /root/postinstall/jdk1.8.0_66 /usr/java/
ln -s /usr/java/jdk1.8.0_66 /usr/java/j2sdk
ln -s /usr/bin/xmlstarlet /usr/bin/xml

 

# Disable snmpd verbose logging
#echo OPTIONS=\"-Lnd -Lf /dev/null -p /var/run/snmpd.pid -a\" >> /etc/sysconfig/snmpd
#touch /etc/snmp/snmp.conf
#ln -s /etc/rsyslog.conf /etc/syslog.conf

# Stop unneeded service at this moment
/sbin/chkconfig heartbeat off
/sbin/chkconfig ldirectord off
/sbin/chkconfig rpcbind off
/sbin/chkconfig rpcidmapd off
/sbin/chkconfig nfslock off
/sbin/chkconfig kdump off
/sbin/chkconfig NetworkManager off
/sbin/chkconfig mysqld on

 

# /etc/my.cnf configuration
cat > /etc/my.cnf << EOF
[client]
port        = 3306
socket      = /var/lib/mysql/mysql.sock

[mysqld]
port        = 3306
socket      = /var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
max_connections = 100
binlog_cache_size = 1M
max_heap_table_size = 32M
key_buffer = 32M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 4M
join_buffer_size = 4M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 16M
thread_cache = 8
query_cache_size= 2M
skip-character-set-client-handshake=1
thread_concurrency = 4
slave-skip-errors=1062,1146,1032
expire_logs_days=15

log-bin
binlog_format=MIXED
server-id=
innodb_buffer_pool_size=96M
innodb_log_file_size=16M
innodb_log_buffer_size=1M
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=2
innodb_lock_wait_timeout = 120

[mysqldump]
quick
max_allowed_packet = 16M
add-drop-table
user = anyclick
password = identity
databases

[mysql]
no-auto-rehash
user = anyclick
password = identity

[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
open-files-limit = 2048
EOF

#network insterface setting
sed -i'' -e "s/rhgb/rhgb net.ifnames=0 biosdevname=0/" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg


#uname change
mv /usr/bin/uname /usr/bin/uname.old
chmod 666 /usr/bin/uname.old

mv /root/postinstall/uname_custom /usr/bin/uname
chmod 755 /usr/bin/uname


#rm /root/postinstall
rm -rf /root/postinstall

 

#firewall disable
systemctl stop firewalld
systemctl mask firewalld

 

#iptables enable
systemctl enable iptables

 

#ftp disable
userdel ftp

reboot

%end

 

 

6. ISO 빌드

 

6.1 genisoimage 설치

 

yum install -y genisoimage

 

6.2 mkisofs를 이용한 설치

 

ex)cd ~/work/kickstart_build/
     mkisofs -o centos7-custom.iso -b isolinux.bin -c boot.cat -no-emul-boot -V 'CentOS 7 x86_64' \

               -boot-load-size 4 -boot-info-   table -R -J -v -T isolinux/

 

7. 테스트

 

빌드된 이미지로 부팅하여 설치시 다음의 옵션으로 설치한다.

 

linux inst.ks=cdrom:/dev/cdrom:/ks/ks.cfg

 

Tip!

자동 설치를 원할 경우

 

/isolinux/isolinux.cfg 파일을 다음과 같이 수정하여 항목 6.을 다시 수행하면 된다.

 

ex) label linux
      menu label ^Install UnetOS 7
      kernel vmlinuz
      #  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
      append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.ks=cdrom:/dev/cdrom:/ks/ks.cfg

 

'Programming > Linux' 카테고리의 다른 글

ip validation check  (0) 2017.08.25
[raspberry pi] WIFI static IP 설정  (0) 2016.05.13
Centos7 custom build (1)  (0) 2016.03.25
yum을 이용한 rpm 다운로드 방법  (0) 2016.03.25
gcc 컴파일 옵션.  (0) 2008.08.22
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. 배포판 설치

 

우선 centOS7 배포판을 다운받은후 VM등에 설치를 한다.

 

CentOS 배포판 다운로드 : https://www.centos.org/download/

 

 

2. 기본 디렉토리 생성

 

2.1 work 디렉토리 생성

 

iso 빌드를 위한 디렉토리를 생성한다.

 

ex) mkdir ~/work/kickstart_build/isolinux/

 

2.2 하위 디렏토리 생성

해당 디렉토리에 다음과 같이 하위 디렉토리를 생성한다.

 

images : CentOS 배포판의 images 디렉

ks : 커스컴 빌드를 위한 kickstart파일 생성

LiveOS : CentOS 배포판의 LiveOS 디렉토리

Packages : 설치할 패키지(rpm) 디렉토리

postinstall : 설치후 작업 설정

 

 

2.3 필요파일 복사

 

다음의 작업을 수행한다.

 

1) 배포판 mount

mkdir -p /mnt/iso
mount -o loop /tmp/CentOS-7-x86_64-DVD-1503-01.iso /mnt/iso

 

2) 복사

cp /mnt/iso/.discinfo ~/work/kickstart_build/isolinux/
cp /mnt/iso/isolinux/* ~/work/kickstart_build/isolinux/
rsync -av /mnt/iso/images/ ~/work/kickstart_build/isolinux/images/
cp /mnt/iso/LiveOS/* ~/work/kickstart_build/isolinux/LiveOS/
ll /mnt/iso/repodata/ | grep -i comps
-rw-r--r--. 1 root root 157580 1. Apr 01:43 0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml.gz

 

cp /mnt/iso/repodata/0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml.gz ~/kickstart_build/

 

cd ~/work/kickstart_build/
gunzip 0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml
mv 0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml comps.xml

 

 

3. 필요 패키지 등록

 

3.1 임시 packages 디렉토리 생성

 

ex) mkdir ~/work/packages

 

 

3.2 임시 packages 디렉토리에 패키지(rpm) 파일 복사

 

글쓴이의 경우 mysql등을 추가 하였음

 

rpm 패키지 다운로드는 아래를 참조

 

http://materer.co.kr/129

 

3.3 packages 복사

 

글쓴이의 경우 minimal 버전의 배포판을 이용해서 배포판의 패키지를 그대로 가져왔고

rsync를 이용하여 2.에서 생성한 Packages 디렉토리에 복사 하였음.

 

ex) rsync -av /mnt/iso/Packages/ ~/work/kickstart_build/isolinux/Packages/
      rsync -av /tmp/packages/ ~/work/kickstart_build/isolinux/Packages/

 

 

 

4. repodata 디렉토리 생성


4.1 createrepo 설치


yum install -y createrepo

 

4.2 createrepo를 이용하여 repodata 디렉토리 생성


ex)cd ~/work/kickstart_build/isolinux
     createrepo -g ~/work/kickstart_build/comps.xml .

'Programming > Linux' 카테고리의 다른 글

[raspberry pi] WIFI static IP 설정  (0) 2016.05.13
Centos7 custom build (2)  (0) 2016.03.25
yum을 이용한 rpm 다운로드 방법  (0) 2016.03.25
gcc 컴파일 옵션.  (0) 2008.08.22
V4L??  (0) 2008.06.26

+ Recent posts