DHCP 서버없이 ArchLinux를 iPXE 부팅에 도전
10286 단어 CloudatCostarchLinuxvps
참고
ipxe.iso DHCP 서버가 있는 경우, 공식 이미지 사용하면 된다.
ipxe 빌드
git clone git://git.ipxe.org/ipxe.git
cd ipxe/src
패키지가 부족한 경우 다음을 넣어
apt-get install -y liblzma-dev genisoimage syslinux isolinux
make
make
config/general.h
를 수정한다. config/general.h
- //#define PING_CMD /* Ping command */
+ #define PING_CMD /* Ping command */
bin/ipxe.usb에 myscript.ipxe를 포함하여 생성
make bin/ipxe.lkrn EMBED=myscript.ipxe
make bin/ipxe.usb EMBED=myscript.ipxe
make bin/ipxe.iso EMBED=myscript.ipxe
myscript.ipxe
myscript.ipxe
#!ipxe
#################
#network settings
#################
set dns 8.8.8.8
set net0/netmask 255.255.255.0
echo -n IP address: && read net0/ip
echo -n Default gateway: && read net0/gateway
#################
:boot_menu
#################
menu
item arch_jp ArchLinux x86_64 jp mirror
item arch_us ArchLinux x86_64 us mirror
item ipxe_dhcp DHCP
item ipxe_ifopen ifopen net0 (for static ip.)
item ipxe_config Enter iPXE config
item ipxe_shell Enter iPXE shell
choose --default config --timeout 30000 target && goto ${target}
#################
# menu
#################
:ipxe_dhcp
dhcp
goto boot_menu
:ipxe_ifopen
ifopen net0
goto boot_menu
:ipxe_config
config
goto boot_menu
:ipxe_shell
shell
goto boot_menu
:arch_jp
echo ip=${net0/ip}::${net0/gateway}:${net0/netmask}
# ftp.jaist.ac.jp => 150.65.7.130
set source http://150.65.7.130/pub/Linux/ArchLinux/iso/latest
kernel ${source}/arch/boot/x86_64/vmlinuz archiso_http_srv=${source}/ archisobasedir=arch ip=${net0/ip}::${net0/gateway}:${net0/netmask}
initrd ${source}/arch/boot/x86_64/archiso.img
boot
:arch_us
echo ip=${net0/ip}::${net0/gateway}:${net0/netmask}
# mirrors.abscission.net => 107.191.116.135
set source http://107.191.116.135/archlinux/iso/latest
kernel ${source}/arch/boot/x86_64/vmlinuz archiso_http_srv=${source}/ archisobasedir=arch ip=${net0/ip}::${net0/gateway}:${net0/netmask}
initrd ${source}/arch/boot/x86_64/archiso.img
boot
인터넷에 접속할 수 없는 경우는 ifopen net0이 필요.
iPXE - open source boot firmware [cmd:ifopen]
initrd.img를 해독하는 방법
archiso.img 다운로드
wget http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/latest/arch/boot/x86_64/archiso.img
archiso.img 배포
mv archiso.img archiso.cpio.gz
xz -d archiso.cpio.gz
mkdir tmp && cd tmp
cpio -id < ../archiso.cpio
archiso.git - The official archiso scripts repo
dns
인수 추가하는 패치가 필요하지 않을까 Grub2에서 시작 확인
/etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'Arch Linux Netboot Environment' {
set root='(hd0,1)'
linux16 /ipxe.lkrn
}
update-grub
Qemu에서 동작 확인
ipxe.lkrn에서 부팅하는 경우qemu-system-x86_64 -m 1G -kernel bin/ipxe.lkrn \
-net nic -net user
ISO 이미지에서 부팅하는 경우qemu-system-x86_64 -boot d -cdrom bin/ipxe.iso \
-net nic -net user
qemu-system-x86_64 -m 1G -kernel bin/ipxe.lkrn \
-net nic -net user
qemu-system-x86_64 -boot d -cdrom bin/ipxe.iso \
-net nic -net user
부팅이 완료되면 resolv.conf를 만든다.
echo nameserver 8.8.8.8 > /etc/resolv.conf
요약
1MB
. Reference
이 문제에 관하여(DHCP 서버없이 ArchLinux를 iPXE 부팅에 도전), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tukiyo3/items/5d004f149ec7546cbfa0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)