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

+ Recent posts