手当たり次第に書くんだ

飽きっぽいのは本能

目次に戻る

概要

前提条件

OS

CentOS Stream 8を使用します。

PXE Server

TFTP Server

[root@centos ~]# dnf install tftp-server
[root@centos ~]# systemctl enable --now tftp.socket

DHCP Server

[root@centos ~]# dnf install dhcp-server
[root@centos ~]# cat <<EOF > /etc/dhcp/dhcpd.conf
subnet 10.0.0.0 netmask 255.255.255.0 {
    range 10.0.0.100 10.0.0.199;
    option routers 10.0.0.1;
    option domain-name-servers 10.0.0.1;
}
EOF
[root@centos ~]# dnf install syslinux
[root@centos ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
[root@centos ~]# mkdir -p /var/pxe/centos8
[root@centos ~]# mkdir /var/lib/tftpboot/centos8
[root@centos ~]# mount -t iso9660 -o loop,ro CentOS-Stream-8-x86_64-20211007-dvd1.iso /var/pxe/centos8
[root@centos ~]# cp /var/pxe/centos8/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8
[root@centos ~]# cp /usr/share/syslinux/{menu.c32,vesamenu.c32,ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot
[root@centos ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@centos ~]# cat <<EOF > /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
prompt 1
timeout 60
display boot.msg
label linux
  menu label ^Install CentOS 8
  menu default
  kernel centos8/vmlinuz
  append initrd=centos8/initrd.img ip=dhcp inst.repo=http://10.0.0.30/centos8
label vesa
  menu label Install CentOS 8 with ^basic video driver
  kernel centos8/vmlinuz
  append initrd=centos8/initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://10.0.0.30/centos8
label rescue
  menu label ^Rescue installed system
  kernel centos8/vmlinuz
  append initrd=centos8/initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
EOF

ddコマンド

Linux上で実施します。こちらを参考としました。

デバイス名確認

USBメモリを挿入すると、dmesgコマンドでデバイス名を確認できます。私の環境では下記のように出力されており、デバイス名はsdbです。また、既にsdb1とsdb2のパーティションが存在しています。

[root@centos ~]# dmesg
[1204670.351934] usb 2-4: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
[1204670.365079] usb 2-4: New USB device found, idVendor=8564, idProduct=1000, bcdDevice=11.00
[1204670.365080] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1204670.365081] usb 2-4: Product: Mass Storage Device
[1204670.365081] usb 2-4: Manufacturer: JetFlash
[1204670.365082] usb 2-4: SerialNumber: SerialNumber
[1204670.510818] usb-storage 2-4:1.0: USB Mass Storage device detected
[1204670.511011] scsi host4: usb-storage 2-4:1.0
[1204670.511058] usbcore: registered new interface driver usb-storage
[1204670.513318] usbcore: registered new interface driver uas
[1204671.826407] scsi 4:0:0:0: Direct-Access     JetFlash Transcend 32GB   1100 PQ: 0 ANSI: 6
[1204671.826676] sd 4:0:0:0: Attached scsi generic sg1 type 0
[1204671.827301] sd 4:0:0:0: [sdb] 59725824 512-byte logical blocks: (30.6 GB/28.5 GiB)
[1204671.827408] sd 4:0:0:0: [sdb] Write Protect is off
[1204671.827409] sd 4:0:0:0: [sdb] Mode Sense: 43 00 00 00
[1204671.827526] sd 4:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[1204671.832937]  sdb: sdb1 sdb2
[1204671.833604] sd 4:0:0:0: [sdb] Attached SCSI removable disk

マウント状態確認

念のためマウント状態を確認しておきます。何も表示されなければマウントされていません。もしマウントされていたらumountコマンドでアンマウントしましょう。

[root@centos ~]# findmnt /dev/sdb1
[root@centos ~]# findmnt /dev/sdb2

既存パーティション削除

念のためfdiskで既存のパーティションを削除しておきます(おそらく不要な手順です)。対象のデバイスを間違えないように注意して下さい。

[root@centos ~]# fdisk /dev/sdb

pコマンドでパーティションを一覧表示し、dコマンドで削除します。最後にwコマンドで書き込み、終了します。

ISOイメージ書き込み

ifがISOイメージ、ofが書き込み先デバイスです。bsはブロックサイズとなりますが、指定したほうが良いものの特に推奨値は無いようなのでマニュアルに記載の512kを指定しました。

[root@centos ~]# dd if=CentOS-Stream-8-x86_64-20210402-dvd1.iso of=/dev/sdb bs=512k
18874+0 レコード入力
18874+0 レコード出力
9895411712 bytes (9.9 GB, 9.2 GiB) copied, 360.686 s, 27.4 MB/s

この後、問題なければ特に経過状況などは表示されずに終了します。私の環境では5分程度かかりました。

ddコマンド以外でUSBメモリ作成

Fedora Media Writer

Fedora Media Writerはブート可能なUSBメモリを作成できるWindows用アプリケーションです。使い方に特に難しいことは無く、ISOイメージを指定して書き込むだけです。このUSBメモリを使用してインストールは可能ですが推奨はddコマンドです。

Rufus

Rufusはブート可能なUSBメモリを作成できるWindows用アプリケーションです。使い方に特に難しいことは無く、ISOイメージを指定して書き込むだけです。このUSBメモリを使用してインストールは可能ですが推奨はddコマンドです。

目次に戻る

CentOS 8 PXE Boot

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る