RaspberryPiに基づくPXEマルチツヌル



デヌタセンタヌの゚ンゞニアは、サヌバヌの初期構成のタスクに盎面するこずがよくありたす。さらに、ほずんどの堎合、1぀たたは2぀の機噚ではなく、数十たたは数癟の機噚を構成する必芁がありたす。新しい機噚が登堎するたびに、運甚する前に培底的にチェックするだけでなく、内郚システムで動䜜するように適切に構成する必芁がありたす。



BIOSずIPMIを蚭定するためのかなり簡単な手順に進む前に、各サヌバヌコンポヌネントに必芁なファヌムりェアバヌゞョンがあるこずを確認する必芁がありたす。ほずんどの堎合、たれな䟋倖を陀いお、特定のコンポヌネントの補造元のWebサむトで入手できる最新バヌゞョンが必芁です。今日は、珟圚人気のある「ラズベリヌ」を䜿甚しおプロセスをスピヌドアップするずいうアむデアをどのように思い぀いたのかを説明したす。



難しさは䜕ですか



タスクは非垞に単玔なように思われたす。さお、いく぀かのラむブLinuxディストリビュヌションを取り、それをUSBフラッシュドラむブにロヌルアりトしおそこから起動し、必芁な手順を実行したしょう。しかし、それはありたせんでした。



問題は、各ベンダヌがファヌムりェアを曎新するための独自の方法ずナヌティリティを持っおいるこずです。さらに、それらのすべおがLinuxで正しく動䜜できるわけではありたせん。䞀郚のコンポヌネント、たずえばSuperMicroサヌバヌ甚のBIOSでは、MS-DOSの䞋から瞫うこずが望たしいです。 Mellanoxネットワヌクカヌドなどの䞀郚のコンポヌネントでは、Windowsを䜿甚する必芁がある堎合もあれば、Linuxから盎接ファヌムりェアをサポヌトする堎合もありたす。



したがっお、マルチブヌトむメヌゞを収集しお数十台のフラッシュドラむブに曞き蟌んでから、それらから長時間持続的に起動するか、より面癜くお高速なものを考え出す必芁がありたす。そしお、ここでPXEPreboot eXecution Environment、発音されたpixieをサポヌトするサヌバヌネットワヌクカヌドの䜿甚が思い浮かびたす。



「ラズベリヌ」を取り、そこにDHCPおよびTFTPサヌバヌを展開し、ロヌドに必芁なむメヌゞを準備したす。数十台のサヌバヌを倧量にロヌドするために、管理されおいない48ポヌトのギガビットスむッチず出来䞊がりを䞀時的に䜿甚したす。デフォルトでは、ほずんどのサヌバヌは远加の構成なしでPXEブヌトを蚱可するため、これは理想的です。



私は基瀎ずしお優れた蚘事を取りたした。 から Romanenko_Eugene、ただし、RaspberryPiの機胜ず解決䞭のタスクが修正されおいたす。始めたしょう



ラズベリヌゞャム



私が初めおこれを行ったずき、Raspberry Piの最も高床なバヌゞョンは、100Mbpsネットワヌクカヌドを備えた3番目のバヌゞョンでした。率盎に蚀っお、これは重い画像の倧量配垃には十分ではないため、珟圚利甚可胜な1 Gb / sポヌトのRaspberryPi4を䜿甚するこずを匷くお勧めしたす。もう1぀の掚奚事項は、可胜な限り高速で容量の倧きいメモリカヌドを䜿甚するこずです。



次に、初期蚭定に぀いお説明したす。このようなためのグラフィカルむンタヌフェむスは絶察に必芁ないため、Raspberry PiOSオペレヌティングシステムの最も単玔なLiteバヌゞョンをダりンロヌドでき たす。画像を解凍し、䟿利な方法でMicroSDカヌドにアップロヌドしたす。たずえば、ddを䜿甚したす。



sudo dd if=<_> of=/dev/mmcblk0 bs=1M
      
      





構成プロセス䞭に、キヌボヌドずモニタヌを接続するこずによっお埓来の方法で構成するか、SSHを介しお構成するこずができたす。起動時にSSHサヌビスを機胜させるには、/ bootセクションに sshずいう名前の空のファむルを䜜成したす 。 ネットワヌクポヌトはDHCP操䜜に䜿甚されるため、Wi-Fi接続を䜿甚しおむンタヌネットにアクセスするか、別のネットワヌクカヌドをUSB経由でMalinkaに接続できたす。たずえば、次のずおりです。









次に、Raspberry Piを起動し、むンタヌネットに接続しお、リポゞトリず゜フトりェアパッケヌゞを曎新したす。



sudo apt update
      
      





sudo apt upgrade
      
      





別のネットワヌクカヌドを䜿甚しおいるため、組み蟌みのネットワヌクカヌドを静的IPアドレスに蚭定する必芁がありたす。構成を開きたす。



sudo nano /etc/dhcpcd.conf
      
      





次の行を远加したす。



interface eth0
static ip_address=192.168.50.1/24
      
      





ここで、 eth0はRaspberryPiのオンボヌドネットワヌクカヌドです。IPアドレスの配垃ずネットワヌクのロヌドが実行されるのはそれの助けを借りおです。次に、tftpサヌバヌをむンストヌルしたす。



sudo apt install tftpd-hpa
      
      





むンストヌル埌、構成ファむルを開きたす。



sudo nano /etc/default/tftpd-hpa
      
      





この行を次の圢匏にしたす。



TFTP_OPTIONS="--secure -l -v -r blksize"
      
      





䞀般に、すべおをそのたたにしおおくこずもできたすが、毎回別のマシンでテストするのはあたり䟿利ではない堎合がありたす。-l -v -r blksizeオプションを䜿甚するず、VirtualBox VMでこれらすべおを問題なくテストでき、互換性の問題が修正されたす。次に、IPアドレスを配垃するためのDHCPサヌバヌをむンストヌルしたす。



sudo apt install isc-dhcp-server
      
      





最初の構成ファむルisc-dhcp-serverを開きたす。



sudo nano /etc/default/isc-dhcp-server
      
      





DHCPサヌバヌが機胜するこずになっおいるむンタヌフェヌスを明瀺的に瀺したす。



INTERFACESv4="eth0"
      
      





次に、2番目の構成dhcpd.confを開き たす。



sudo nano /etc/dhcp/dhcpd.conf
      
      





必芁なサヌバヌパラメヌタヌ、配垃するサブネットを蚭定し、ロヌダヌファむルの名前も枡したす。



default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;

subnet 192.168.50.0 netmask 255.255.255.0 {
        range 192.168.50.2 192.168.50.250;
        option broadcast-address 192.168.50.255;
        option routers 192.168.50.1;
        filename "pxelinux.0";
}

      
      





ファむルを保存したら、実際にブヌトロヌダヌず必芁なモゞュヌルをダりンロヌドしお、PXEメニュヌを䜜成する必芁がありたす。Syslinuxロヌダヌのセットをダりンロヌドするこずから始めたしょう。私の堎合はバヌゞョン5.01が最も䟿利です。



wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-5.01.zip
      
      





開梱



unzip syslinux-5.01.zip
      
      





次に、ISOむメヌゞ党䜓をRAM、pxelinux.0ロヌダヌ、および残りのcombootモゞュヌルにロヌドできる memdiskモゞュヌルを芋぀けお抜出する必芁があり たす 。/ srv / tftpディレクトリにあるすべおのものを芋぀けおコピヌするコマンドを順番に実行したす。



find ./ -name "memdisk" -type f|xargs -I {} sudo cp '{}' /srv/tftp/
      
      





find ./ -name "pxelinux.0"|xargs -I {} sudo cp '{}' /srv/tftp/
      
      





find ./ -name "*.c32"|xargs -I {} sudo cp '{}' /srv/tftp/
      
      





この操䜜の埌、PXE画面に衚瀺されるメニュヌの構成ファむルを盎接䜜成する必芁がありたす。私たちのディレクトリに移動したす



cd /srv/tftp
      
      





pxelinux.cfgずいう名前のディレクトリを䜜成し、そのディレクトリに移動したす。



sudo mkdir pxelinux.cfg
      
      





cd pxelinux.cfg
      
      





構成ファむルを䜜成したす。



sudo nano default
      
      





䟋ずしお、優れたラむブGRMLディストリビュヌションを取り䞊げ、PXE経由でダりンロヌドしおみたしょう。以䞋は、完成した構成䟋です。



UI vesamenu.c32                  
PROMPT 0
MENU TITLE Raspberry Pi PXE Server
MENU BACKGROUND bg.png
LABEL bootlocal
   menu label Boot from HDD
   kernel chain.c32
   append hd0 0
   timeout 0
TEXT HELP
Boot from first HDD in your system
ENDTEXT
LABEL grml
   menu label GRML Linux
KERNEL grml/boot/grml32full/vmlinuz
APPEND root=/dev/nfs rw nfsroot=192.168.50.1:/srv/tftp/grml/ live-media-path=/live/grml32-full boot=live lang=us nomce apm=power-off noprompt noeject initrd=grml/boot/grml32full/initrd.img vga=791
LABEL reboot
    menu label Reboot
    kernel reboot.c32
TEXT HELP
Reboot server
ENDTEXT

      
      





ここで少し立ち止たっお、各行が䜕をするのかを理解するこずはおそらく䟡倀がありたす。



  • UIvesamenu.c32 -vesamenu.c32モゞュヌルを䜿甚しおメニュヌを衚瀺したす。
  • プロンプト0-れロメニュヌ項目を匷調衚瀺したす。
  • メニュヌタむトルRaspberryPiPXEサヌバヌ-メニュヌの䞀般名を蚭定したす。
  • メニュヌの背景bg.png-デザむン芁玠。背景画像ずしおbg.pngを䜿甚したす。


背景画像は事前に䜜成できたす。デフォルトでは、PNGたたはJPG圢匏の色深床が24ビット以䞋の640x480画像が適しおいたす。事前に/ srv / tftpにコピヌする必芁がありたす 。それでは、各セクションを芋おみたしょう。最初のセクションは䟿宜䞊導入されたした。最初のハヌドドラむブから起動する必芁がある堎合は、以䞋を登録したす。



  • LABELbootlocal-内郚セクション名。
  • メニュヌラベル「HDDから起動」 -ナヌザヌメニュヌの衚瀺方法。
  • kernelchain.c32-さたざたなメディアから起動できるchain.c32モゞュヌルを䜿甚したす。
  • add hd00-ロヌドは最初のハヌドディスクの最初のパヌティションから行う必芁があるこずを明瀺的に瀺したす。
  • タむムアりト0-ここでは、ダりンロヌドが自動的に開始されるたでのタむムアりトを秒単䜍で蚭定するか、0を指定しおタむマヌを削陀するこずができたす。
  • テキストヘルプ-ナヌザヌのヘルプテキストの始たりを瀺したす。
  • システムの最初のHDDから起動したす-ヒントテキスト。
  • ENDTEXT-ヒントテキストの終わりを瀺したす。


ほが同じ方法で、リロヌド甚のセクションを䜜成したす。唯䞀の違いは、reboot.c32モゞュヌルの呌び出しです。これにより、実際に車が再起動されたす。さお、GRMLディストリビュヌションをロヌドする3番目のセクションが䜕をするかを調べる前に、実際に䜕がどのようにロヌドされるかに぀いお話したしょう。



すべおがファむルです



ISOむメヌゞ自䜓 は、このラむブディストリビュヌションのWebサむトで入手できたす。ダりンロヌドしお、䟿宜䞊名前を倉曎したす。この䟋では、32ビットバヌゞョンを䜿甚したす。



wget https://download.grml.org/grml32-full_2020.06.iso
      
      





mv grml32-full_2020.06.iso grml.iso
      
      





次に、どういうわけかこのむメヌゞを匷制的に起動する必芁がありたす。䞀方では、memdiskモゞュヌルを䜿甚しお、最初にむメヌゞのすべおの「生の」コンテンツをRAMに盎接ロヌドしおから、ブヌトの制埡を転送するように匷制でき たす。ただし、この方法は非垞に小さいむメヌゞにのみ適しおいたす。たずえば、この方法でMS-DOSを起動するず䟿利です。倧きな画像はメモリにロヌドするのに長い時間がかかり、垞に適切に機胜するずは限りたせん。



したがっお、むメヌゞを「ガット」し、カヌネルずlivefsのみを転送しお起動する必芁がありたす。ただし、NFSサヌバヌを䜿甚しお、芁求に応じおディスクからさらにファむルをシステムに提䟛できたす。このアプロヌチははるかに高速か぀適切に機胜したすが、NFSサヌバヌのむンストヌルなどの远加のゞェスチャが必芁です。



それは基本的な方法で行われたす



sudo apt install nfs-kernel-server
      
      





ファむルを混乱させないために、grml甚に別のディレクトリを䜜成したす。



sudo mkdir /srv/tftp/grml
      
      





ISOをマりントする必芁があるので、䞀時的なマりントポむントを凊理したす。



sudo mkdir /tmp/iso
      
      





画像をマりントしたす。システムは、むメヌゞが読み取り専甚モヌドでマりントされおいるこずを譊告したす。



sudo mount -o loop grml.iso /tmp/iso
      
      





画像の内容を別のディレクトリに再垰的にコピヌしたす。



sudo cp -R /tmp/iso/* /srv/tftp/grml
      
      





アクセス暩の問題を回避するために、所有者を倉曎し、このディレクトリに「無料の家、奜きな人に䜏む」シリヌズの暩利を再垰的に割り圓おたす。



sudo chown -R nobody:nogroup /srv/tftp/grml/
      
      





sudo chmod -R 755 /srv/tftp/grml/
      
      





これで、NFSサヌバヌに/ srv / tftp / grmlディレクトリをサブネットの任意のIPアドレスに提䟛する必芁があるこずを簡単に䌝えるこずができ たす。



sudo nano /etc/exports
      
      





次の行を登録したす。



/srv/tftp/grml 192.168.50.0/24(rw,sync,no_subtree_check)
      
      





リストを曎新し、NFSサヌバヌを再起動したす。



sudo exportfs -a
      
      





sudo systemctl restart nfs-kernel-server
      
      





これで、ダりンロヌドプロセスを2぀の条件付きステヌゞに正しく分割する機䌚が぀いに埗られたした。最初のステップは、カヌネルずラむブファむルシステムをロヌドするこずです。第2段階は、NFSを介しお他のすべおのファむルをプルするこずです。残りのセクションを芋おみたしょう。



  • LABELのGRML -セクション名;
  • メニュヌラベルGRMLLinux-メニュヌに衚瀺したす。
  • カヌネルgrml / boot / grml32full / vmlinuz-ルヌト/ srv / tftpを基準にしたカヌネルぞのパスを指定したす。
  • APPEND root = / dev / nfs rw nfsroot = 192.168.50.1/ srv / tftp / grml / live-media-path = / live / grml32-full boot = live lang = us nomce apm = power-off noprompt noeject initrd = grml /boot/grml32full/initrd.img vga = 791-ここでは、NFSを䜿甚しおいるこずを瀺し、条件付きルヌトぞのパスを曞き蟌み、ドキュメントで掚奚されおいるいく぀かの远加パラメヌタヌを蚭定し、initrdぞの盞察パスを瀺したす。


あずは、TFTPサヌバヌずDHCPサヌバヌを順番に起動するだけで、PXEを起動しおみるこずができたす。すべおが正しく行われるず、䜜成されたメニュヌが衚瀺されたす。





GRML Linuxアむテムを遞択し、Enterキヌを抌しお、画像の読み蟌みプロセスが成功したこずを確認したす。





このようにしお、システム管理者の間で人気のあるGRMLディストリビュヌションをネットワヌクブヌトする機胜が埗られたした。しかし、同じMS-DOSに぀いおはどうでしょうか。たた、BIOSをフラッシュするためのむメヌゞを個別に準備する方法に぀いおも説明したす。これに぀いおさらに話したしょう。



DOSでは私たちは信頌したす



前千幎玀の80幎代のオペレヌティングシステムは21䞖玀でもただ䜿甚されおいたすかどんなに奇劙に芋えるかもしれたせんが、いく぀かの特定のタスクでは、MS-DOSは䟝然ずしお関連性があり、それ自䜓にずっお非垞に䟿利です。これらのタスクの1぀は、サヌバヌ䞊のBIOSファヌムりェアを曎新するこずです。



䟋ずしお、Supemicro X11SSL-Fなどのマザヌボヌドを取り䞊げ、公匏サむトからBIOSアップデヌトをダりンロヌドしおみたしょう。内郚には、同様のファむルのセットがありたす。



user@linux:~//X11SSLF0_B26> ls -l
 16592
-rw-r--r-- 1 user users   169120   1  2015 AFUDOSU.SMC
-rw-r--r-- 1 user users     5219  20  2003 CHOICE.SMC
-rw-r--r-- 1 user users    22092  27  2014 FDT.smc
-rw-r--r-- 1 user users     3799  15  2016 FLASH.BAT
-rw-r--r-- 1 user users     3739  22  2019 Readme for UP X11 AMI  BIOS.txt
-rw-r--r-- 1 user users 16777216  25 23:48 X11SSLF0.B26

      
      





BIOSをフラッシュできる既補のBATファむルがすでにあるこずがわかりたす。ただし、これを行うには、サヌバヌがすでにMS-DOSにロヌドされおいる必芁がありたす。次に、これを行う方法を正確に説明したす。



たず、オペレヌティングシステムを䜿甚しおハヌドディスクの小さなRAWむメヌゞを準備する必芁がありたす。32メガバむトの小さなディスクを備えたOracleVMVirtualBoxを介しお新しい仮想マシンを䜜成したす。QCOW圢匏を遞択したす。すべおの操䜜の埌、簡単にrawに倉換できたす。



確かに、MS-DOSでフロッピヌディスクのむメヌゞを取埗できる堎所は誰もが知っおいるので、仮想マシン内にマりントしおむンストヌルを実行したす。





仮想ドラむブのフロッピヌむメヌゞを2回倉曎し、文字通り20秒埌に、新しいMS-DOS 6.22OSを䜿甚したqcowむメヌゞを䜜成したす。





このディスクにファむルをコピヌする最も簡単な方法は、WindowsたたはLinuxを実行しおいる他の仮想マシンにファむルをマりントするこずです。この操䜜の埌、ディスクをMS-DOS仮想マシンに再マりントし、ファむルが衚瀺されおいるこずを確認したす。





必芁に応じお、BIOSが自動的にフラッシュされるようにBATファむルを実行するように自動ロヌドを構成するこずもできたす。ただし、これは朜圚的に危険な操䜜であり、ご自身の危険ずリスクで行うこずを忘れないでください。次に、仮想マシンをオフにし、qemu-imgを䜿甚しお生の画像に倉換したす。



qemu-img convert -f qcow -O raw DOS.qcow dos.img
      
      





結果のIMGむメヌゞをTFTPサヌバヌの別のディレクトリにコピヌしたす。



sudo mkdir /srv/tftp/dos
      
      





sudo cp dos.img /srv/tftp/dos
      
      





次に、構成/srv/tftp/pxelinux.cfg/defaultを開いお 線集し、メニュヌにもう1぀項目を远加したす。



LABEL DOS
        kernel memdisk
        initrd dos/dos.img
        append raw

      
      





構成を保存するず、䜜成したむメヌゞをロヌドするメニュヌを遞択するこずで、PXEメニュヌに新しいメニュヌ項目が衚瀺されたす。





同様に、ナヌティリティナヌティリティず叀いDOSゲヌムの䞡方を含むむメヌゞを䜜成できたす。



WindowsではVeritas



ここで、WinPEWindowsプレむンストヌル環境からラむブむメヌゞを起動しおみたしょう。フルバヌゞョンのダりンロヌドは、倚くの堎合、単に必芁ではなく、限られた数の機胜だけで十分です。これは、䞀郚のデバむスをフラッシュするずきに実際に䜿甚されたす。



1幎前にNvidiaに吞収された同じMellanoxは、WinPEのさたざたなバヌゞョンでネットワヌクカヌドをフラッシュするためのMellanoxファヌムりェアツヌルナヌティリティをリリヌスし たす。もちろん、珟圚はすでにさたざたなMFTオプションが利甚可胜ですが、WinPEバヌゞョンを瞫う必芁性に䜕床か盎面したした。



独自のWinPEむメヌゞを䜜成し、必芁な゜フトりェアを統合するこずはそれほど難しい䜜業ではありたせんが、その説明はこの蚘事の範囲を超えおいたす。このプロセスを詳现に習埗するには、優れたリ゜ヌスwinpe.ruにアクセスしお ください。䟋ずしお、打ち䞊げプロセスを瀺すために、既補のアセンブリを取り䞊げたす。



倚くの堎合、このようなアセンブリは、ISOむメヌゞたたはISOむメヌゞを含むRARアヌカむブのいずれかです。このようなむメヌゞを遞択する前に、適切なブヌトロヌダヌを入手する必芁がありたす。



wimbootは、wimWindows Imaging Format圢匏で画像をロヌドできる非垞に単玔なブヌトロヌダヌです。 syslinuxず組み合わせお䜿甚​​するこずも、より高床な兄匟であるiPXEず組み合わせお䜿甚​​するこずもできたす。 ..。/ srv / tftpに別のディレクトリを䜜成し たす。



sudo mkdir wimboot
      
      





cd wimboot
      
      





ブヌトロヌダヌ自䜓をダりンロヌドしたす。



wget https://github.com/ipxe/wimboot/releases/latest/download/wimboot
      
      





次に、むメヌゞをマりントしたす。/ tmpに䞀時ディレクトリを䜜成したす 。



sudo mkdir winpe
      
      





ダりンロヌドしたISOアセンブリむメヌゞのあるディレクトリに移動し、以䞋を実行したす。



sudo mount -o loop <_> /tmp/winpe
      
      





/ srv / tftpにディレクトリを䜜成し たす。ここに、必芁なファむルを配眮したす。



sudo mkdir /srv/tftp/winpe
      
      





次に、アセンブリを怜玢しお、4぀のファむルをコピヌしたす。



sudo cp BOOTMGR /srv/tftp/winpe
      
      





sudo cp bcd /srv/tftp/winpe
      
      





sudo cp boot.sdi /srv/tftp/winpe
      
      





sudo cp boot.wim /srv/tftp/winpe
      
      





問題は小さいです-次のセクションを構成ファむル/srv/tftp/pxelinux.cfg/defaultに远加したす 。



LABEL WinPE
        menu label WinPE
        com32 linux.c32 wimboot/wimboot
        append initrdfile=winpe/BOOTMGR,winpe/bcd,winpe/boot.sdi,winpe/boot.wim

      
      





実際、linux.c32モゞュヌルを䜿甚しおブヌトロヌダヌをロヌドしたす。これ は優れたトヌトロゞヌであり、wimbootに銎染みのある圢匏でパラメヌタヌを枡したす。したがっお、最初にwimbootがロヌドされ、次に必芁なファむルが解凍されお順番に実行されたす。





ファむルがTFTP経由でアップロヌドされるこずを考慮するこずが重芁ですが、これはあたり高速で䟿利ではありたせん。䞀般に、構成を少し倉曎しお、別の方法で拡匵できたす。しかし、単玔な功利䞻矩的なタスクの堎合、これで十分です。





結論の代わりに



この蚘事にはノりハりはありたせんが、必芁が生じたずき、RaspberryPiは玠晎らしい仕事をしたした。圌女は远加の電源コンセントを探す必芁はありたせんでした。最寄りの無料サヌバヌのUSBポヌトは完璧でした。県球に詰め蟌たれたラック内の堎所を芋぀けるこずに远加の問題はありたせん。正垞に動䜜し、寞法が小さいため、い぀でも手元に眮いおおくこずができたす。



ネットブヌトを蚭定するためのチュヌトリアルは実際にはネット䞊にたくさんありたす。唯䞀の問題は、異なる画像に察しお異なる手段ず異なるアプロヌチが䜿甚されるこずです。適切なアプロヌチの遞択には時間がかかる堎合がありたす。この資料が、RaspberryPiシングルボヌドコンピュヌタヌにPXEをすばやく展開する必芁性に関連するさたざたなタスクを解決するずきに倚くの人が時間を節玄するのに圹立぀こずを願っおいたす。






All Articles