DIY ๋ฒ ์–ด ๋ฉ”ํƒˆ ํ”„๋กœ๋น„์ €๋‹ ๋˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์„œ๋ฒ„ ์ž๋™ ์ค€๋น„

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” Denis์ž…๋‹ˆ๋‹ค. ์ œ ํ™œ๋™ ๋ถ„์•ผ ์ค‘ ํ•˜๋‚˜๋Š” X5์—์„œ ์ธํ”„๋ผ ์†”๋ฃจ์…˜ ๊ฐœ๋ฐœ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์ €๋Š” ๊ณต๊ฐœ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ์„œ๋ฒ„ ์ค€๋น„ ์‹œ์Šคํ…œ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ์ด๊ฒƒ์€ ํฅ๋ฏธ๋กญ๊ณ  ๊ฐ„๋‹จํ•˜๋ฉฐ ์œ ์—ฐํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

DIY ๋ฒ ์–ด ๋ฉ”ํƒˆ ํ”„๋กœ๋น„์ €๋‹ ๋˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์„œ๋ฒ„ ์ž๋™ ์ค€๋น„

์ค€๋น„๋ž€ ์ƒˆ ์„œ๋ฒ„๋ฅผ OS๊ฐ€ ํฌํ•จ๋œ ์™„์ „ํžˆ ๊ตฌ์„ฑ๋œ ์„œ๋ฒ„๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Linux ๋˜๋Š” ESXi ํ•˜์ดํผ๋ฐ”์ด์ € ์‚ฌ์šฉ(Windows ์„œ๋ฒ„ ๋ฐฐํฌ๋Š” ์ด ๋ฌธ์„œ์—์„œ ๋…ผ์˜๋˜์ง€ ์•Š์Œ)

์•ฝ๊ด€:

  • ์„œ๋ฒ„ โ€“ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
  • ์„ค์น˜ ์„œ๋ฒ„๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ค€๋น„ ๊ณผ์ • ์ „์ฒด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์ธ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

์ž๋™ํ™”๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ž‘์—…์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ตœ๋Œ€๋กœ ํ•˜๋ฃจ์— 30๊ฐœ๊นŒ์ง€ ๋Œ€๊ทœ๋ชจ๋กœ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ œ์กฐ์—…์ฒด ๋ฐ ๋ชจ๋ธ์˜ ์„œ๋ฒ„, ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ๊ฐ€ ์„ค์น˜๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์ • ํ”„๋กœ์„ธ์Šค์—๋Š” ์–ด๋–ค ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๊นŒ(์ž๋™ํ™” ์—†์Œ):

  • ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค, ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  • BIOS, RAID, IPMI ๊ตฌ์„ฑ;
  • ๊ตฌ์„ฑ ์š”์†Œ ํŽŒ์›จ์–ด ์—…๋ฐ์ดํŠธ;
  • ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€ ๋ฐฐํฌ(๋˜๋Š” ํ•˜์ดํผ๋ฐ”์ด์ € ์„ค์น˜ ๋ฐ ๊ฐ€์ƒ ๋จธ์‹  ๋ณต์‚ฌ)

๋ฉ”๋ชจ. ๋˜๋Š” ์ž๋™ ์‘๋‹ต ํŒŒ์ผ์„ ์ด์šฉํ•œ ์„ค์น˜๋ฅผ ํ†ตํ•ด OS ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์ด์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • OS ๋งค๊ฐœ๋ณ€์ˆ˜(ํ˜ธ์ŠคํŠธ ์ด๋ฆ„, IP ๋“ฑ)๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ์„œ๋ฒ„์—์„œ ๋™์ผํ•œ ์„ค์ •์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ์ž‘์—…์˜ ํšจ์œจ์„ฑ์€ ๋งค์šฐ ๋‚ฎ์Šต๋‹ˆ๋‹ค.

์ž๋™ํ™”์˜ ํ•ต์‹ฌ์€ ์„œ๋ฒ„ ์ค€๋น„ ๊ณผ์ •์—์„œ ์‚ฌ๋žŒ์˜ ๊ฐœ์ž…์„ ์—†์• ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์ด.

์ž๋™ํ™”๋ฅผ ํ†ตํ•ด ์ž‘์—… ๊ฐ„ ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋ฅผ ๋™์‹œ์— ํ”„๋กœ๋น„์ €๋‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์  ์š”์ธ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ๋„ ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

DIY ๋ฒ ์–ด ๋ฉ”ํƒˆ ํ”„๋กœ๋น„์ €๋‹ ๋˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์„œ๋ฒ„ ์ž๋™ ์ค€๋น„

์„œ๋ฒ„๋Š” ์–ด๋–ป๊ฒŒ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑ๋˜๋‚˜์š”?

๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ž์„ธํžˆ ๋ถ„์„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

PXE ์„ค์น˜ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๋Š” Linux ์„œ๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. DHCP, TFTP ์„œ๋น„์Šค๊ฐ€ ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•œ ์„œ๋ฒ„๋ฅผ PXE๋ฅผ ํ†ตํ•ด ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ธฐ์–ตํ•ด ๋ด…์‹œ๋‹ค:

  • ์„œ๋ฒ„์—์„œ ๋„คํŠธ์›Œํฌ ๋ถ€ํŒ…์ด ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๋Š” ๋„คํŠธ์›Œํฌ ์นด๋“œ์˜ PXE-ROM์„ ๋กœ๋“œํ•˜๊ณ  DHCP๋ฅผ ํ†ตํ•ด ์„ค์น˜ ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
  • DHCP ์„ค์น˜ ์„œ๋ฒ„๋Š” ์ฃผ์†Œ์™€ PXE๋ฅผ ํ†ตํ•œ ์ถ”๊ฐ€ ๋‹ค์šด๋กœ๋“œ์— ๋Œ€ํ•œ ์ง€์นจ์„ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๋Š” PXE๋ฅผ ํ†ตํ•ด ์„ค์น˜ ์„œ๋ฒ„์—์„œ ๋„คํŠธ์›Œํฌ ๋ถ€ํŠธ๋กœ๋”๋ฅผ ๋กœ๋“œํ•˜๋ฉฐ, PXE ๊ตฌ์„ฑ ํŒŒ์ผ์— ๋”ฐ๋ผ ์ถ”๊ฐ€ ๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถ€ํŒ…์€ ์ˆ˜์‹ ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜(์ปค๋„, initramfs, ๋งˆ์šดํŠธ ์ง€์ , squashfs ์ด๋ฏธ์ง€ ๋“ฑ)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ. ์ด ๋ฌธ์„œ์—์„œ๋Š” BIOS ๋ชจ๋“œ๋ฅผ ํ†ตํ•ด PXE๋ฅผ ํ†ตํ•ด ๋ถ€ํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ œ์กฐ์—…์ฒด์—์„œ๋Š” UEFI ๋ถ€ํŒ… ๋ชจ๋“œ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. PXE์˜ ๊ฒฝ์šฐ DHCP ์„œ๋ฒ„ ๊ตฌ์„ฑ๊ณผ ์ถ”๊ฐ€ ๋ถ€ํŠธ๋กœ๋” ์กด์žฌ ์—ฌ๋ถ€์— ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

PXE ์„œ๋ฒ„ ๊ตฌ์„ฑ(pxelinux ๋ฉ”๋‰ด)์˜ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ pxelinux.cfg/default:

default menu.c32
prompt 0
timeout 100
menu title X5 PXE Boot Menu
LABEL InstallServer Menu
	MENU LABEL InstallServer
	KERNEL menu.c32
	APPEND pxelinux.cfg/installserver
LABEL VMware Menu
	MENU LABEL VMware ESXi Install
	KERNEL menu.c32
	APPEND pxelinux.cfg/vmware
LABEL toolkit // ะผะตะฝัŽ ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ
	MENU LABEL Linux Scripting Toolkits
	MENU default
	KERNEL menu.c32
	APPEND pxelinux.cfg/toolkit // ะฟะตั€ะตั…ะพะด ะฝะฐ ัะปะตะดัƒัŽั‰ะตะต ะผะตะฝัŽ

ํŒŒ์ผ pxelinux.cfg/toolkit:

prompt 0
timeout 100
menu title X5 PXE Boot Menu
label mainmenu
    menu label ^Return to Main Menu
    kernel menu.c32
    append pxelinux.cfg/default
label x5toolkit-auto // ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ โ€” ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธะน ั€ะตะถะธะผ
        menu label x5 toolkit autoinstall
        menu default
        kernel toolkit/tkcustom-kernel
        append initrd=toolkit/tk-initramfs.gz quiet net.ifnames=0 biosdevname=0 nfs_toolkit_ip=192.168.200.1 nfs_toolkit_path=tftpboot/toolkit nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh CMDIS2=โ€โ€ฆโ€
label x5toolkit-shell // ะดะปั ะพั‚ะปะฐะดะบะธ - ะบะพะฝัะพะปัŒ
        menu label x5 toolkit shell
        kernel toolkit/tkcustom-kernel
        append initrd=toolkit/tkcustom-initramfs.gz quiet net.ifnames=0 biosdevname=0 nfs_toolkit_ip=192.168.200.1 nfs_toolkit_path=tftpboot/toolkit nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash CMDIS2=โ€โ€ฆโ€

์ด ๋‹จ๊ณ„์˜ ์ปค๋„๊ณผ initramfs๋Š” ์ค‘๊ฐ„ Linux ์ด๋ฏธ์ง€์ด๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ ์ฃผ์š” ์ค€๋น„ ๋ฐ ๊ตฌ์„ฑ์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ถ€ํŠธ๋กœ๋”๋Š” ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ปค๋„์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ค‘ ์ผ๋ถ€๋Š” ์ปค๋„ ์ž์ฒด์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ ์ž์‹ ์˜ ๋ชฉ์ ์„ ์œ„ํ•ด ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ๋…ผ์˜ํ•˜๊ฒ ์ง€๋งŒ ์ง€๊ธˆ์€ ์ „๋‹ฌ๋œ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ /proc/cmdline์„ ํ†ตํ•ด ์ค‘๊ฐ„ Linux ์ด๋ฏธ์ง€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๋งŒ ๊ธฐ์–ตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ปค๋„๊ณผ initramfs๋Š” ์–ด๋””์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  Linux ๋ฐฐํฌํŒ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ถ€ํŒ… ์ด๋ฏธ์ง€๋Š” ๋ฒ”์šฉ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋“œ๋ผ์ด๋ฒ„ ๊ฐ€์šฉ์„ฑ, ์ถ”๊ฐ€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ค์น˜ ๊ธฐ๋Šฅ).
  • ์•„๋งˆ๋„ initramfs๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

X5์šฉ ์†”๋ฃจ์…˜์—์„œ๋Š” ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๊นŒ? CentOS 7์ด ๊ธฐ๋ณธ์œผ๋กœ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํŠธ๋ฆญ์„ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์˜ ์ด๋ฏธ์ง€ ๊ตฌ์กฐ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์ด๋ฅผ ์•„์นด์ด๋ธŒ์— ์••์ถ•ํ•œ ๋‹ค์Œ initramfs๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์•ˆ์— ํŒŒ์ผ ์‹œ์Šคํ…œ ์•„์นด์ด๋ธŒ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๋ฉด ์•„์นด์ด๋ธŒ๊ฐ€ ์ƒ์„ฑ๋œ tmpfs ํŒŒํ‹ฐ์…˜์œผ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด vmkernel๊ณผ initramfs๋ผ๋Š” ๋‘ ๊ฐœ์˜ ํŒŒ์ผ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ํ•„์ˆ˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋œ ์ตœ์†Œํ•œ์˜ ๋ณธ๊ฒฉ์ ์ธ ๋ผ์ด๋ธŒ Linux ์ด๋ฏธ์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#ัะพะทะดะฐะตะผ ะดะธั€ะตะบั‚ะพั€ะธะธ: 

mkdir -p /tftpboot/toolkit/CustomTK/rootfs /tftpboot/toolkit/CustomTK/initramfs/bin

#ะฟะพะดะณะพั‚ะฐะฒะปะธะฒะฐะตะผ ัั‚ั€ัƒะบั‚ัƒั€ัƒ:

yum groups -y install "Minimal Install" --installroot=/tftpboot/toolkit/CustomTK/rootfs/
yum -y install nfs-utils mariadb ntpdate mtools syslinux mdadm tbb libgomp efibootmgr dosfstools net-tools pciutils openssl make ipmitool OpenIPMI-modalias rng-tools --installroot=/tftpboot/toolkit/CustomTK/rootfs/
yum -y remove biosdevname --installroot=/tftpboot/toolkit/CustomTK/rootfs/

# ะฟะพะดะณะพั‚ะฐะฒะปะธะฒะฐะตะผ initramfs:

wget https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-x86_64 -O /tftpboot/toolkit/CustomTK/initramfs/bin/busybox
chmod a+x /tftpboot/toolkit/CustomTK/initramfs/bin/busybox
cp /tftpboot/toolkit/CustomTK/rootfs/boot/vmlinuz-3.10.0-957.el7.x86_64 /tftpboot/toolkit/tkcustom-kernel

# ัะพะทะดะฐะตะผ /tftpboot/toolkit/CustomTK/initramfs/init (ะฝะธะถะต ัะพะดะตั€ะถะฐะฝะธะต ัะบั€ะธะฟั‚ะฐ):

#!/bin/busybox sh
/bin/busybox --install /bin
mkdir -p /dev /proc /sys /var/run /newroot
mount -t proc proc /proc
mount -o mode=0755 -t devtmpfs devtmpfs /dev
mkdir -p /dev/pts /dev/shm /dev/mapper /dev/vc
mount -t devpts -o gid=5,mode=620 devpts /dev/pts
mount -t sysfs sysfs /sys
mount -t tmpfs -o size=4000m tmpfs /newroot
echo -n "Extracting rootfs... "
xz -d -c -f rootfs.tar.xz | tar -x -f - -C /newroot
echo "done"
mkdir -p /newroot/dev /newroot/proc /newroot/sys
mount --move /sys  /newroot/sys
mount --move /proc /newroot/proc
mount --move /dev  /newroot/dev
exec switch_root /newroot /sbin/init

# ัƒะฟะฐะบะพะฒั‹ะฒะฐะตะผ rootfs ะธ initramfs:

cd /tftpboot/toolkit/CustomTK/rootfs
tar cJf /tftpboot/toolkit/CustomTK/initramfs/rootfs.tar.xz --exclude ./proc --exclude ./sys --exclude ./dev .
cd /tftpboot/toolkit/CustomTK/initramfs
find . -print0 | cpio --null -ov --format=newc | gzip -9 > /tftpboot/toolkit/tkcustom-initramfs-new.gz

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋กœ๋“œ๋˜์–ด์•ผ ํ•˜๋Š” ์ปค๋„๊ณผ initramfs๋ฅผ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด ๋‹จ๊ณ„์—์„œ๋Š” PXE๋ฅผ ํ†ตํ•ด ์ค‘๊ฐ„ Linux ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜์—ฌ OS ์ฝ˜์†”์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ ์ œ์–ด๊ถŒ์„ "์ž๋™ํ™”"๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•œ ํ›„ mount.sh ์Šคํฌ๋ฆฝํŠธ๋กœ ์ œ์–ด๊ถŒ์„ ์ด์ „ํ•  ๊ณ„ํš์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ž๋™ ์‹คํ–‰์— mount.sh ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํฌํ•จ์‹œ์ผœ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด initramfs๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • unpack initramfs(์œ„์˜ initramfs ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Œ)
  • /proc/cmdline์„ ํ†ตํ•ด ์ „๋‹ฌ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์ œ์–ด๋ฅผ ์ถ”๊ฐ€๋กœ ์ „์†กํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‹œ์ž‘์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • initramfs๋ฅผ ํŒฉํ•˜์„ธ์š”.

๋ฉ”๋ชจ. X5 ํˆดํ‚ท์˜ ๊ฒฝ์šฐ ๋กœ๋”ฉ ์ œ์–ด๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. /opt/x5/toolkit/bin/hook.sh ั ะฟะพะผะพั‰ัŒัŽ override.conf ะฒ getty tty1 (ExecStart=โ€ฆ)

๋”ฐ๋ผ์„œ ์ž๋™ ์‹คํ–‰ ์‹œ mount.sh ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ, mount.sh ์Šคํฌ๋ฆฝํŠธ๋Š” ์‹คํ–‰ ์ค‘์— ์ „๋‹ฌ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜(script_cmd=)๋ฅผ ๋ถ„์„ํ•˜๊ณ  ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ/์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋ผ๋ฒจ ํˆดํ‚ท-์ž๋™
ํ•ต์‹ฌ...
์ถ”๊ฐ€... nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh

๋ผ๋ฒจ ํˆดํ‚ท-๊ป์งˆ
ํ•ต์‹ฌ...
์ถ”๊ฐ€... nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash

DIY ๋ฒ ์–ด ๋ฉ”ํƒˆ ํ”„๋กœ๋น„์ €๋‹ ๋˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์„œ๋ฒ„ ์ž๋™ ์ค€๋น„

์—ฌ๊ธฐ ์™ผ์ชฝ์—๋Š” PXE ๋ฉ”๋‰ด๊ฐ€ ์žˆ๊ณ  ์˜ค๋ฅธ์ชฝ์—๋Š” ์ œ์–ด ์ „์†ก ๋‹ค์ด์–ด๊ทธ๋žจ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ†ต์ œ๊ถŒ ์ด์ „์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค. PXE ๋ฉ”๋‰ด ์„ ํƒ์— ๋”ฐ๋ผ ์ž๋™ ๊ตฌ์„ฑ ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ๋””๋ฒ„๊น… ์ฝ˜์†”์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

์ž๋™ ๊ตฌ์„ฑ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ํ•„์ˆ˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์„ค์น˜ ์„œ๋ฒ„์—์„œ ๋งˆ์šดํŠธ๋ฉ๋‹ˆ๋‹ค.

  • ์Šคํฌ๋ฆฝํŠธ;
  • ๋‹ค์–‘ํ•œ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ €์žฅ๋œ BIOS/UEFI ํ…œํ”Œ๋ฆฟ;
  • ํŽŒ์›จ์–ด;
  • ์„œ๋ฒ„ ์œ ํ‹ธ๋ฆฌํ‹ฐ;
  • ๋กœ๊ทธ

๋‹ค์Œ์œผ๋กœ mount.sh ์Šคํฌ๋ฆฝํŠธ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ master-install.sh ์Šคํฌ๋ฆฝํŠธ๋กœ ์ œ์–ด๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ํŠธ๋ฆฌ(์‹คํ–‰ ์ˆœ์„œ)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋งˆ์Šคํ„ฐ ์„ค์น˜
  • sharefunctions(๊ณต์œ  ํ•จ์ˆ˜)
  • info(์ •๋ณด ์ถœ๋ ฅ)
  • ๋ชจ๋ธ(์„œ๋ฒ„ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์น˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ค์ •)
  • prepare_utils(ํ•„์š”ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ค์น˜)
  • fwupdate(ํŽŒ์›จ์–ด ์—…๋ฐ์ดํŠธ)
  • diag(๊ธฐ๋ณธ ์ง„๋‹จ)
  • biosconf(BIOS/UEFI ์„ค์ •)
  • clockfix(๋งˆ๋”๋ณด๋“œ์˜ ์‹œ๊ฐ„ ์„ค์ •)
  • srmconf(์›๊ฒฉ ์ธํ„ฐํŽ˜์ด์Šค ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ)
  • raidconf(๋…ผ๋ฆฌ ๋ณผ๋ฅจ ๊ตฌ์„ฑ)

๋‹ค์Œ ์ค‘ ํ•˜๋‚˜:

  • ์‚ฌ์ „ ์„ค์น˜(OS ๋˜๋Š” ESXi์™€ ๊ฐ™์€ ํ•˜์ดํผ๋ฐ”์ด์ € ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ œ์–ด๊ถŒ ์ด์ „)
  • ๋ณ‘ํ•ฉ ์„ค์น˜(์ด๋ฏธ์ง€ ์••์ถ• ํ’€๊ธฐ ์ฆ‰์‹œ ์‹œ์ž‘)

์ด์ œ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • PXE๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฅผ ๋ถ€ํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ž์‹ ์˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ œ์–ด๊ถŒ์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•.


๊ณ„์†ํ•ฉ์‹œ๋‹ค. ๋‹ค์Œ ์งˆ๋ฌธ์ด ๊ด€๋ จ์„ฑ์ด ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๊ฐ€ ์ค€๋น„ํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋ฅผ ์–ด๋–ป๊ฒŒ ์‹๋ณ„ํ•˜๋‚˜์š”?
  • ์–ด๋–ค ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ํŠน์ • ์„œ๋ฒ„์— ๋Œ€ํ•œ ์„ค์ •์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๊ฐ€ ์ค€๋น„ํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋ฅผ ์–ด๋–ป๊ฒŒ ์‹๋ณ„ํ•˜๋‚˜์š”?

๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค - DMI:

dmidecode โ€“s system-product-name
dmidecode โ€“s system-manufacturer
dmidecode โ€“s system-serial-number

๊ณต๊ธ‰์—…์ฒด, ๋ชจ๋ธ, ์ผ๋ จ๋ฒˆํ˜ธ ๋“ฑ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •๋ณด๊ฐ€ ๋ชจ๋“  ์„œ๋ฒ„์— ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ MAC ์ฃผ์†Œ๋กœ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„ ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ๋‹ค๋ฅด๊ณ  ์ผ๋ถ€ ๋ชจ๋ธ์—์„œ๋Š” ์ผ๋ จ ๋ฒˆํ˜ธ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ˆ˜์‹ ๋œ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์น˜ ์„œ๋ฒ„์—์„œ ๋„คํŠธ์›Œํฌ ํด๋”๊ฐ€ ๋งˆ์šดํŠธ๋˜๊ณ  ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ(์œ ํ‹ธ๋ฆฌํ‹ฐ, ํŽŒ์›จ์–ด ๋“ฑ)์ด ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ผ๋ถ€ ์ œ์กฐ์—…์ฒด์— Linux์šฉ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๊ณต๊ธ‰์—…์ฒด์˜ ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DIY ๋ฒ ์–ด ๋ฉ”ํƒˆ ํ”„๋กœ๋น„์ €๋‹ ๋˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์„œ๋ฒ„ ์ž๋™ ์ค€๋น„

ํŽŒ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŒจํ‚ค์ง€๋œ ์‹คํ–‰ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ ํŒŒ์ผ์€ ํŽŒ์›จ์–ด ์—…๋ฐ์ดํŠธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๊ณ  ๋ฐ˜ํ™˜ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

BIOS ๋ฐ IPMI๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ…œํ”Œ๋ฆฟ์„ ํ†ตํ•ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ์ „์— ํ…œํ”Œ๋ฆฟ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ๊ณต๊ธ‰์—…์ฒด์˜ RAID ์œ ํ‹ธ๋ฆฌํ‹ฐ๋„ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ตฌ์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

RAID ์„ค์ • ์ ˆ์ฐจ๋Š” ๋Œ€๋ถ€๋ถ„ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ๊ตฌ์„ฑ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฏธ ๋…ผ๋ฆฌ ๋ฐฐ์—ด์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์ง€์›๋‹ˆ๋‹ค.
  • ์–ด๋–ค ๋ฌผ๋ฆฌ ๋””์Šคํฌ๊ฐ€ ์žˆ๊ณ  ๋ช‡ ๊ฐœ๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ ๋…ผ๋ฆฌ ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์„œ๋ฒ„์— ๋Œ€ํ•œ ์„ค์ •์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ชจ๋“  ์„œ๋ฒ„์˜ ์„ค์ •์ด ์„ค์น˜ ์„œ๋ฒ„์— ์ €์žฅ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์งˆ๋ฌธ์— ๋Œ€๋‹ตํ•˜๋ ค๋ฉด ๋จผ์ € ์„ค์ •์„ ์„ค์น˜ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋‚˜์ค‘์— ์„ค์ • ์ „์†ก์„ ์œ„ํ•œ ๋Œ€์ฒด ๋ฐฉ๋ฒ•์œผ๋กœ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

์„ค์น˜ ์„œ๋ฒ„์—์„œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ "๊ณต์œ "ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  mount.sh ์Šคํฌ๋ฆฝํŠธ์— ๋งˆ์šดํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด ํ–‰์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<์ผ๋ จ๋ฒˆํ˜ธ> <ํ˜ธ์ŠคํŠธ ์ด๋ฆ„> <์„œ๋ธŒ๋„ท>

์ด ์ค„์€ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์ž‘์—… ๊ธฐ๊ณ„์—์„œ ํŒŒ์ผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•  ๋•Œ ํŠน์ • ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํŒŒ์ผ์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์„ค์น˜์˜ ์„ค์ •, ์ƒํƒœ ๋ฐ ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์„ค์ •์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ „์†ก๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ๋ถ€๋ถ„์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ํŒŒ์ผ์— ๋น„ํ•ด ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต์ง€๋งŒ ์‹ค์ œ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๋ณด์ด๋Š” ๊ฒƒ๋งŒ ํผ ์–ด๋ ต์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ง์ ‘ ์ „์†กํ•˜๋Š” ์ตœ์†Œ ๋ฒ„์ „์˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•ž์œผ๋กœ๋Š” ๋ฌด๋ฃŒ ๋ชจ๋“œ(๋ณด๊ณ ์„œ, ๋ผ๋ฒจ ์ธ์‡„, ์•Œ๋ฆผ ์ „์†ก ๋“ฑ ๋– ์˜ค๋ฅด๋Š” ๊ธฐ๋Šฅ)์—์„œ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํŠน์ • ์š”์ฒญ์„ ํ•˜๊ณ  ์„œ๋ฒ„ ์ผ๋ จ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ์„œ๋ฒ„ ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ํ…์ŠคํŠธ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ๋™์‹œ ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•ด ์ž ๊ธˆ ์žฅ์น˜๋ฅผ ๋งˆ๋ จํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ตฌ์„ฑ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์ค€๋น„ ๋‹จ๊ณ„์˜ ์ด๋ฒคํŠธ ๋ฐ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ์„ค์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • PXE๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฅผ ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค.
  • ์ œ์–ด๊ถŒ์„ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ จ ๋ฒˆํ˜ธ๋กœ ์ค€๋น„ํ•ด์•ผ ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • ์ ์ ˆํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •์„ ์„ค์น˜ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค:

  • ์„ค์น˜๋œ ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ์„ค์ •์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์ค€๋น„ ์ง„ํ–‰ ์ƒํ™ฉ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(๋กœ๊ทธ, ์ด๋ฒคํŠธ, ๋‹จ๊ณ„ ํ”Œ๋ž˜๊ทธ)์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

์„ค์น˜ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์„ค์น˜ํ•˜๊ณ , VM์„ ๋ณต์‚ฌํ•˜๊ณ , ๋ชจ๋‘ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€(Linux)๋ฅผ ํ•˜๋“œ์›จ์–ด์— ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ์ด ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ์„œ๋ฒ„ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ค์ •ํ•œ ํ›„ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
  • grub ๋ถ€ํŠธ๋กœ๋”๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๋ฃจํŠธ๋กœ ์„ค์ •ํ•˜๊ณ  ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

OS ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ œ์–ด๊ถŒ์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•(ESXi๋ฅผ ์˜ˆ๋กœ ์‚ฌ์šฉ)

  • ์ž๋™ ์‘๋‹ต ํŒŒ์ผ(kickstart)์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•˜์ดํผ๋ฐ”์ด์ € ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ œ์–ด๊ถŒ ์ด์ „์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์Šคํฌ์˜ ํ˜„์žฌ ํŒŒํ‹ฐ์…˜์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • 500MB ํฌ๊ธฐ์˜ ํŒŒํ‹ฐ์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ๋ถ€ํŒ… ๊ฐ€๋Šฅ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • FAT32๋กœ ํฌ๋งทํ•˜์„ธ์š”.
  • ESXi ์„ค์น˜ ํŒŒ์ผ์„ ๋ฃจํŠธ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • syslinux๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • syslinux.cfg๋ฅผ /syslinux/์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

default esxi
prompt 1
timeout 50
label esxi
kernel mboot.c32
append -c boot.cfg

  • mboot.c32๋ฅผ /syslinux์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • Boot.cfg์—๋Š” kernelopt=ks=ftp://๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. /ks_esxi.cfg
  • ์„œ๋ฒ„๋ฅผ ์žฌ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„๊ฐ€ ์žฌ๋ถ€ํŒ…๋˜๋ฉด ESXi ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์„œ๋ฒ„์˜ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์—์„œ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ชจ๋“  ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ ๋‹ค์Œ ์ง€์ •๋œ ์ž๋™ ์‘๋‹ต ํŒŒ์ผ์— ๋”ฐ๋ผ ESXi ์„ค์น˜๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ž๋™ ์‘๋‹ต ํŒŒ์ผ ks_esxi.cfg์˜ ๋ช‡ ์ค„์ž…๋‹ˆ๋‹ค.

%firstboot --interpreter=busybox
โ€ฆ
# ะฟะพะปัƒั‡ะฐะตะผ ัะตั€ะธะนะฝั‹ะน ะฝะพะผะตั€

SYSSN=$(esxcli hardware platform get | grep Serial | awk -F " " '{print $3}')

# ะฟะพะปัƒั‡ะฐะตะผ IP

IPADDRT=$(esxcli network ip interface ipv4 get | grep vmk0 | awk -F " " '{print $2}')
LAST_OCTET=$(echo $IPADDRT | awk -F'.' '{print $4}')

# ะฟะพะดะบะปัŽั‡ะฐะตะผ NFS ะธะฝัั‚ะฐะปะป-ัะตั€ะฒะตั€ะฐ

esxcli storage nfs add -H is -s /srv/nfs_share -v nfsshare1

# ะบะพะฟะธั€ัƒะตะผ ะฒั€ะตะผะตะฝะฝั‹ะต ะฝะฐัั‚ั€ะพะนะบะธ ssh, ะดะปั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ssh-ะบะปะธะตะฝั‚ะฐ

mv /etc/ssh /etc/ssh.tmp
cp -R /vmfs/volumes/nfsshare1/ssh /etc/
chmod go-r /etc/ssh/ssh_host_rsa_key

# ะบะพะฟะธั€ัƒะตะผ ovftool, ะดะปั ั€ะฐะทะฒะตั€ั‚ั‹ะฒะฐะฝะธั ะ’ะœ ัะตะนั‡ะฐั, ะฟะปัŽั ะฒะพะทะผะพะถะฝะพ ะฟั€ะธะณะพะดะธั‚ัั ะฟะพะทะถะต

cp -R /vmfs/volumes/nfsshare1/ovftool /vmfs/volumes/datastore1/

# ั€ะฐะทะฒะตั€ั‚ั‹ะฒะฐะตะผ ะ’ะœ

/vmfs/volumes/datastore1/ovftool/tools/ovftool --acceptAllEulas --noSSLVerify --datastore=datastore1 --name=VM1 /vmfs/volumes/nfsshare1/VM_T/VM1.ova vi://root:[email protected]
/vmfs/volumes/datastore1/ovftool/tools/ovftool --acceptAllEulas --noSSLVerify --datastore=datastore1 --name=VM2 /vmfs/volumes/nfsshare1/VM_T/VM2.ova vi://root:[email protected]

# ะฟะพะปัƒั‡ะฐะตะผ ัั‚ั€ะพะบัƒ ั ะฝะฐัั‚ั€ะพะนะบะฐะผะธ ะฝะฐัˆะตะณะพ ัะตั€ะฒะตั€ะฐ

ssh root@is "mysql -h'192.168.0.1' -D'servers' -u'user' -p'secretpassword' -e "SELECT ... WHERE servers.serial='$SYSSN'"" | grep -v ^$ | sed 's/NULL//g' > /tmp/servers
...
# ะณะตะฝะตั€ะธั€ัƒะตะผ ัะบั€ะธะฟั‚ ะฝะฐัั‚ั€ะพะนะบะธ ัะตั‚ะธ

echo '#!/bin/sh' > /vmfs/volumes/datastore1/netconf.sh
echo "esxcli network ip interface ipv4 set -i=vmk0 -t=static --ipv4=$IPADDR --netmask=$S_SUB || exit 1" >> /vmfs/volumes/datastore1/netconf.sh
echo "esxcli network ip route ipv4 add -g=$S_GW -n=default || exit 1" >> /vmfs/volumes/datastore1/netconf.sh
chmod a+x /vmfs/volumes/datastore1/netconf.sh

# ะทะฐะดะฐะตะผ ะฟะฐั€ะฐะผะตั‚ั€ guestinfo.esxihost.id, ัƒะบะฐะทั‹ะฒะฐะตะผ ะฒ ะฝะตะผ ัะตั€ะธะนะฝั‹ะน ะฝะพะผะตั€

echo "guestinfo.esxihost.id = "$SYSSN"" >> /vmfs/volumes/datastore1/VM1/VM1.vmx
echo "guestinfo.esxihost.id = "$SYSSN"" >> /vmfs/volumes/datastore1/VM2/VM2.vmx
...
# ะพะฑะฝะพะฒะปัะตะผ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะฒ ะฑะฐะทะต

SYSNAME=$(esxcli hardware platform get | grep Product | sed 's/Product Name://' | sed 's/^ *//')
UUID=$(vim-cmd hostsvc/hostsummary | grep uuid | sed 's/ //g;s/,$//' | sed 's/^uuid="//;s/"$//')
ssh root@is "mysql -D'servers' -u'user' -p'secretpassword' -e "UPDATE servers ... SET ... WHERE servers.serial='$SYSSN'""
ssh root@is "mysql -D'servers' -u'user' -p'secretpassword' -e "INSERT INTO events ...""

# ะฒะพะทะฒั€ะฐั‰ะฐะตะผ ะฝะฐัั‚ั€ะพะนะบะธ SSH

rm -rf /etc/ssh
mv /etc/ssh.tmp /etc/ssh

# ะฝะฐัั‚ั€ะฐะธะฒะฐะตะผ ัะตั‚ัŒ ะธ ะฟะตั€ะตะทะฐะณั€ัƒะถะฐะตะผัั

esxcli system hostname set --fqdn=esx-${G_NICK}.x5.ru
/vmfs/volumes/datastore1/netconf.sh
reboot

์ด ๋‹จ๊ณ„์—์„œ๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ๋˜๊ณ  ๊ฐ€์ƒ ๋จธ์‹ ์ด ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ์•ฝ๊ฐ„์˜ ์†์ž„์ˆ˜๋ฅผ ์ผ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ์ค‘์— VM1.vmx ํŒŒ์ผ์— guestinfo.esxihost.id = "$SYSSN" ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ทธ ์•ˆ์— ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์˜ ์ผ๋ จ ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์‹œ์ž‘ ํ›„ ๊ฐ€์ƒ ๋จธ์‹ (vmware-tools ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋œ)์€ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ESXI_SN=$(vmtoolsd --cmd "info-get guestinfo.esxihost.id")

์ฆ‰, VM์€ ์ž์‹ ์„ ์‹๋ณ„ํ•˜๊ณ (๋ฌผ๋ฆฌ์  ํ˜ธ์ŠคํŠธ์˜ ์ผ๋ จ ๋ฒˆํ˜ธ๋ฅผ ์•Œ๊ณ  ์žˆ์Œ) ์„ค์น˜ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์š”์ฒญํ•˜๊ณ  ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ชจ๋‘ guestos vm์ด ์‹œ์ž‘๋  ๋•Œ ์ž๋™์œผ๋กœ ์‹œ์ž‘๋˜์–ด์•ผ ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๋ฒˆ: RunOnce).

์ด์ œ ์šฐ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • PXE๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฅผ ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค.
  • ์ œ์–ด๊ถŒ์„ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ จ ๋ฒˆํ˜ธ๋กœ ์ค€๋น„ํ•ด์•ผ ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • ์ ์ ˆํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •์„ ์„ค์น˜ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • esxi ํ•˜์ดํผ๋ฐ”์ด์ € ๋ฐฐํฌ, ๊ฐ€์ƒ ๋จธ์‹  ๊ตฌ์„ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค(๋ชจ๋‘ ์ž๋™์œผ๋กœ).

์šฐ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค:

  • ์„ค์น˜๋œ ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ์„ค์ •์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์ค€๋น„ ์ง„ํ–‰ ์ƒํ™ฉ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(๋กœ๊ทธ, ์ด๋ฒคํŠธ, ๋‹จ๊ณ„ ํ”Œ๋ž˜๊ทธ)์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.


ํ•˜๋‹จ ๋ผ์ธ :

์ €๋Š” ์ด ์†”๋ฃจ์…˜์˜ ๋…์ฐฝ์„ฑ์€ ์œ ์—ฐ์„ฑ, ๋‹จ์ˆœ์„ฑ, ๊ธฐ๋Šฅ ๋ฐ ๋‹ค์–‘์„ฑ์— ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ๊ฐ์„ ๋Œ“๊ธ€๋กœ ์ ์–ด์ฃผ์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€