䟋ずしおArchLinuxを䜿甚しおLinuxのむンストヌルずブヌトを理解する

たず、Archlinuxをむンストヌルし、ブヌトサヌバヌに倉換したす。 そこから盎接、新しいコンパクトなシステムを準備し、そこに最小限のグラフィカル環境ず最も必芁な機胜Firefoxなどを远加したす。 UEFIを搭茉したコンピュヌタヌ䞊でも、ネットワヌクを介しおブヌトするようにシステムを孊習したす。 次に、これを読み取り専甚モヌドに完党に倉換しラむブにしたす、1台のブヌトサヌバヌで少なくずも50台の異なるコンピュヌタヌで同時にシステムを䜿甚できるようにしたす。 これらはすべお、安䟡な100 Mbネットワヌク内でも機胜したす。このネットワヌクは、さらに数回「分散」したす。



ドラむブがないため、ハヌドドラむブのブックマヌクを恐れるこずはありたせん。 再起動埌にシステムが元の状態に戻るため、クレむゞヌなナヌザヌペンが䜕かを壊すこずはありたせん。 もちろん、必芁な機胜のみが含たれるように、起動可胜なシステムを個別に倉曎しお孊習するこずができたす。 その間に、Linuxがどのように、どのような順序でブヌトするか、たたそれが䜕で構成されおいるかを調べたす。 ご存知のように、知識は貎重であるため、無料で共有しおいたす。



あたり議論せずに、䜕が起こっおいるのかを説明しようず詊みたす。時には少し先を走りたすが、その埌は必ず敎理しおください。 理解に問題がないように、既補のLinuxディストリビュヌションで既に䜜業しおおり、nanoたたは別のテキスト゚ディタヌを䜿甚しお簡単なスクリプトを蚘述しようずしおいるこずを前提ずしおいたす。 ArchLinuxを初めお䜿甚する堎合、倚くのこずを孊びたす。「老人」であれば、あたり孊ばないでしょうが、いずれにしおもLinuxをもっず愛するこずを願っおいたす。



倚くの情報がありたした。 そしお、確立されたハリりッドの䌝統によれば、いく぀かのパヌトのシリヌズがあなたを埅っおいたす。

継続 ;

終了したす。



ここで、VirtualBoxにArchlinuxをむンストヌルしたす。これは、远加の蚭定なしで、レガシヌBIOSを備えたほずんどすべおのコンピュヌタヌで耇補および実行できたす。 その間に、systemdを操䜜するための基本的なテクニックを孊び、ブヌト時に任意のサヌビスずプログラムを開始するためにそれを䜿甚する方法も孊びたす。 たた、Linuxがブヌト時にどの段階を通過するかを確認し、initramfsに独自のフックを䜜成したす。 initramfsが䜕であるかわかりたせんか その埌、猫の䞋に行きたす。



Archlinuxが遞択された理由はたくさんありたす。 最初の理由圌は私の叀い颚倉わりな友人であり、忠実なアシスタントです。 Gentooはむンタヌネット䞊で曞いおいるように、もっず危険なものですが、゜ヌスからシステムを構築したくありたせん。 2番目の理由既補のアセンブリには垞に倚くの䜙分なデヌタが含たれおおり、倧量のデヌタを送信するずネットワヌクパフォヌマンスに重倧な圱響を䞎える可胜性がありたす。 4番目systemdは埐々にすべおのディストリビュヌション、 さらにはDebianにたで浞透したす。Archlinuxの䟋を䜿甚しお、今埌の既補のディストリビュヌションを深く掘り䞋げるこずができたす。 このすべおのために、埌で準備するシステムは、仮想マシンで実行されおいるサヌバヌからだけでなく、たずえばRaspberry PiやWestern Digital My Cloud怜蚌枈みなどの通垞のコンピュヌタヌからもネットワヌク経由でダりンロヌドできたす。 Debianで動䜜したす。



準備䜜業



公匏りェブサむトのリンクから最新の画像をダりンロヌドしおください 。 たずえば、モスクワでは、Yandexサヌバヌからのダりンロヌドは非垞に高速です。プロセスが匕きずられおいる堎合は、他の堎所でダりンロヌドしおみおください。 この情報はただ有甚であるため、どちらを芚えおおくこずをお勧めしたす。



VirtualBoxで、新しい仮想マシンを䜜成したすたずえば、1 GBのRAMず8 GBのストレヌゞ。 ネットワヌク蚭定で、接続の皮類「ネットワヌクブリッゞ」ず、むンタヌネットにアクセスできる適切なネットワヌクアダプタヌを遞択する必芁がありたす。 ダりンロヌドしたむメヌゞをCD-ROMに接続したす。 ハヌドりェアの䜿甚を開始するのが埅ちきれない堎合は、USBフラッシュドラむブを䜿甚しおWin32 Disk Imagerを䜿甚しお画像を蚘録しWindowsで䜜業しおいる堎合、そこから将来のサヌバヌを盎接ダりンロヌドしたす。



マシンの電源を入れ、コマンドラむンが衚瀺されるのを埅ち、SSHが機胜しないパスワヌドを蚭定したす。



passwd
      
      





次のコマンドでSSHサヌバヌを起動したす。



 systemctl start sshd
      
      





コマンドの出力を調べお、マシンのIPアドレスを芋぀けるこずは残っおいたす。



 ip addr | grep "scope global"
      
      





アドレスは「inet」の盎埌に瀺されたす。



これで、Windowsナヌザヌはputtyを䜿甚しおマシンに接続できるようになり、ここからコマンドをコピヌしお貌り付けお右クリックしたす。



基本蚭定



さらに、できるだけ簡単にArchlinuxの暙準むンストヌルに぀いお説明したす。 質問がある堎合は、おそらく初心者向けのむンストヌルの詳现な説明に回答がありたす 。 wikiはすばらしいだけでなく、英語版のwikiも関連しおいるので、䜿甚しおみおください。



cfdiskを䜿甚しおメディアを準備したすこれは、シンプルで盎感的なむンタヌフェむスを備えたコン゜ヌルナヌティリティです。 1぀のセクションで十分です。ブヌト可胜ずしおマヌクするこずを忘れないでください。



 cfdisk /dev/sda
      
      





ext4でフォヌマットし、HABRなどのラベルを蚭定したす。



 mkfs.ext4 /dev/sda1 -L "HABR"
      
      





将来のルヌトパヌティションを/ mntにマりントしたす。



 export root=/mnt mount /dev/sda1 $root
      
      





通垞、Archlinuxはむンタヌネット経由でむンストヌルされるため、むンストヌル埌すぐに最新バヌゞョンを入手できたす。 リポゞトリのリストは/etc/pacman.d/mirrorlistファむルにありたす。 ディストリビュヌションのダりンロヌド元を芚えお、これらのサヌバヌをリストの䞀番最初に移動しおください。これにより、次のステップで時間を倧幅に節玄できたす。 通垞、これらは珟圚の堎所ず同じ堎所に地理的に配眮されたサヌバヌです。



 nano /etc/pacman.d/mirrorlist
      
      





パッケヌゞの基本セットず開発者甚セットをむンストヌルしたす。



 pacstrap -i $root base base-devel
      
      





次に、arch-chrootコマンドを䜿甚しお、ルヌトディレクトリを䞀時的にLinuxルヌトファむルシステムの構造を持぀他のディレクトリに眮き換えるこずができるようにしたす。 同時に、そこから起動するプログラムは、他に䜕かが存圚するこずを知りたせん。 私たちは、管理者暩限を持぀新しいシステムで実際に自分自身を芋぀けたす。



 arch-chroot $root
      
      





コマンドラむンプロンプトがどのように倉曎されたかに泚目しおください。



䜿甚する予定の蚀語を遞択したす。 en_US.UTF-8 UTF-8およびru_RU.UTF-8 UTF-8のたたにするこずをお勧めしたす。 テキスト゚ディタヌでは、反察のコメントを削陀するだけです。



 nano /etc/locale.gen
      
      





遞択したロヌカラむズを生成したす



 locale-gen
      
      







すべおがうたくいった堎合、次のようなものが衚瀺されたす。



 Generating locales... en_US.UTF-8... done ru_RU.UTF-8... done Generation complete.
      
      





デフォルトで䜿甚される蚀語を蚭定したす。



 echo LANG=ru_RU.UTF-8 > /etc/locale.conf
      
      





コン゜ヌルのレむアりトずフォント



 echo -e "KEYMAP=ru\nFONT=cyr-sun16\nFONT_MAP=" > /etc/vconsole.conf
      
      







タむムゟヌンを指定したすモスクワ時間を䜿甚したす。



 ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
      
      





将来のサヌバヌの名前を思い付きたす。



 echo "HabraBoot" > /etc/hostname
      
      





次に、管理者パスワヌドを蚭定したす。 これは䞻に、SSHではパスワヌドなしではシステムに接続できないためです。 パスワヌドで保護されおいないシステムの䞍圓な䜿甚のトピックは、ここでは開発したせん。



 passwd
      
      





パスワヌドを2回入力し、パスワヌドが正垞に曎新されたこずを確認したす 。



ナヌザヌ名を指定しお新しいナヌザヌを远加しいずれかを遞択できたす、同じ理由で管理者暩限ずパスワヌドを付䞎したす。たた、Archの珟圚のバヌゞョンのルヌトではAURArch Userリポゞトリは、メむンリポゞトリにないプログラムを含むArch Linuxナヌザヌコミュニティのリポゞトリです



 useradd -m username
      
      





nanoで蚭定ファむル/ etc / sudoersを線集したす。



 EDITOR=nano visudo
      
      





「root ALL =ALLALL」ずいう行の盎埌に別の行を远加したす。



 username ALL=(ALL) ALL
      
      





ナヌザヌ名のパスワヌドを蚭定したす。



 passwd username
      
      





次に、ブヌトロヌダヌを内郚ドラむブにむンストヌルしお、システムがそれから単独でブヌトできるようにする必芁がありたす。 GRUBをロヌダヌずしお䜿甚するこずをお勧めしたす。これは、埌で再び䟿利になるためです。 Archlinuxの暙準pacmanパッケヌゞマネヌゞャヌを䜿甚しおパッケヌゞをむンストヌルしたす。



 pacman -S grub
      
      





ブヌトロヌダヌは、内郚ドラむブのMBRマスタヌブヌトレコヌドに曞き蟌みたす。



 grub-install --target=i386-pc --force --recheck /dev/sda
      
      





すべおがうたくいった堎合、 むンストヌルが完了したこずがわかりたす。 ゚ラヌは報告されおいたせん 。



chrootの終了



 exit
      
      





そしお、コマンドラむンプロンプトがどのように倉化したかを確認したす。



ディスクラベルを䜿甚したすが、このステヌトメントの詳现な説明は埌で説明したす。



ドラむブUUIDが䜿甚されないように、 GRUB_DISABLE_LINUX_UUID = trueの行のコメントを倖したす 。



 nano $root/etc/default/grub
      
      





arch-chrootを䜿甚しおブヌトロヌダヌ蚭定ファむルを再床生成したす。 ログむンし、1぀のコマンドを実行しお、自動的に終了したす。



 arch-chroot $root grub-mkconfig --output=/boot/grub/grub.cfg
      
      





構成ファむルで/ dev / sda1ぞのすべおの参照をLABEL = HABRに眮き換える必芁がありたす。



 mv $root/boot/grub/grub.cfg $root/boot/grub/grub.cfg.autoconf && cat $root/boot/grub/grub.cfg.autoconf | sed 's/\(root=\)\/dev\/sda1/\1LABEL=HABR/g' > $root/boot/grub/grub.cfg
      
      





set lang = en_USの行を倉曎しお同じファむルでlang = ru_RUを蚭定するず、ブヌトロヌダヌは優れた匷力な通信を行いたす。



-Lスむッチを䜿甚しおfstabファむルを生成したす。これにより、ゞェネレヌタヌにディスクラベルの䜿甚を匷制したす。



 genfstab -p -L $root > $root/etc/fstab
      
      





これでArchLinuxの基本的なむンストヌルが完了したした。 システムは自動的に起動し、フレンドリヌなロシア語のコマンドラむンむンタヌフェむスであなたを歓迎したす。 その埌にdhcpcdコマンドを入力するず、ほずんどの堎合むンタヌネットも機胜したす。 しかし、今のずころ、再起動を急ぐこずはありたせん。



䟋ずしおNTPおよびSSHを䜿甚しおsystemdを䜿甚した起動時の起動



システムは他のコンピュヌタヌず通信するため、時間を同期する必芁がありたす。 サヌバヌずクラむアントの時間が異なる堎合、互いに接続できなくなる可胜性が高くなりたす。 同様に、sudoは各アクションの埌にパスワヌドの芁求を開始する堎合があり、蚱可タむムアりトが長い期限切れになったず考えたす。 そしお、私たちがただ盎面しなければならないこずを誰が知っおいたすか 安党である。



NTP経由でむンタヌネット経由でサヌバヌず時刻を同期するには、䞍足しおいるパッケヌゞをむンストヌルする必芁がありたす。 arch-rootを䜿甚できたすが、新しいむンストヌル堎所をパッケヌゞマネヌゞャヌに䌝えるキヌを䜿甚しお取埗したす。



 pacman --root $root --dbpath $root/var/lib/pacman -S ntp
      
      





ロシアのサヌバヌから正確な時間を蚭定したす。



 mv $root/etc/ntp.conf $root/etc/ntp.conf.old && cat $root/etc/ntp.conf.old | sed 's/\([0-9]\).*\(.pool.ntp.org\)/\1.ru\2/g' | tee $root/etc/ntp.conf
      
      







ブヌト時に䞀床時間を同期するだけで十分です。 以前は、正確なタむムサヌビスの開始をrc.localファむルに蚘録しおいたしたが、システムずサヌビスマネヌゞャヌsystemdが衚瀺され、システムの起動時間を短瞮するために元々はナニットず呌ばれるサヌビスを開始しようずしたした。 圓然、あるサヌビスのパフォヌマンスは別のサヌビスの機胜に䟝存する堎合がありたす。 たずえば、ネットワヌクがコンピュヌタヌ䞊で動䜜を開始する前に、むンタヌネットを介しお時刻を同期しようずするこずは圹に立ちたせん。 実行可胜ファむルの名前を単に説明するだけでは、これらすべおの関係を説明するのに十分ではないため、systemdから始めるこずは非垞に重芁な䜜業になりたした。 この目的のために、拡匵子が「.service」の特別なファむルが䜜成されたした。 これらは、䟝存関係、実行可胜ファむル名、および起動を成功させるために考慮する必芁があるその他のパラメヌタヌを瀺したす。 特に、systemdの読み蟌みステヌゞを制埡するために、タヌゲットが䜿甚されたす。これは、割り圓おられたタスクのランレベルレベルに䌌おいたす。 wikiの詳现を読んでください。



初心者に喜ばれるように、ntpdate.serviceはすでにntpパッケヌゞで提䟛されおいたす。 サヌビスの起動を蚘述するすべおのファむルは$ root / usr / lib / systemd / system /フォルダヌにあり、任意のテキスト゚ディタヌで開くか、通垞の方法で衚瀺できたす。 ここで、たずえば、$ root / usr / lib / systemd / system / ntpdate.service



 [Unit] Description=One-Shot Network Time Service After=network.target nss-lookup.target Before=ntpd.service [Service] Type=oneshot PrivateTmp=true ExecStart=/usr/bin/ntpd -q -n -g -u ntp:ntp [Install] WantedBy=multi-user.target
      
      





[Unit]ブロックの[Description]行に、サヌビスの簡単な説明が衚瀺され、どの条件でサヌビスを開始する必芁がありたすこの堎合、ネットワヌクが開始した埌、NTPサヌバヌが開始する前に開始したす。 正確な時間芁求はブヌト時に1回だけ発生し、[Service]ブロックのType = oneshot行がこれを担圓したす。 同じブロックの行ExecStartは、サヌビスを開始するために実行する必芁があるアクションを瀺したす。 この堎合の[むンストヌル]ブロックでは、multi-user.targetの目暙を達成するためにサヌビスの起動が必芁であるこずを瀺しおいたす。 [Install]ブロックず同じコンテンツを䜿甚しお、日曜倧工サヌビスを開始するこずをお勧めしたす。



最初の実甚的な䟋ずしお、ntpdate.serviceの機胜を少し拡匵し、ハヌドりェアクロックの時刻をさらに修正するように䟝頌したす。 その埌、同じコンピュヌタヌでWindowsを起動するず、GMT時間が衚瀺されるため、心配する必芁はありたせん。



systemdサヌビスの暙準動䜜の倉曎は次のずおりです。最初に、/ etc / systemd / system /フォルダヌに、サヌビスのフルネヌムず拡匵子「.d」で新しいディレクトリが䜜成されたす。ここで、任意の名前ず拡匵子「.conf」を持぀ファむルが远加され、すでにそこにありたす必芁な倉曎が行われたす。 続行



 mkdir -p $root/etc/systemd/system/ntpdate.service.d && echo -e '[Service]\nExecStart=/usr/bin/hwclock -w' > $root/etc/systemd/system/ntpdate.service.d/hwclock.conf
      
      





サヌビスを開始した盎埌に、コマンド「/ usr / bin / hwclock -w」を実行するず、ハヌドりェアクロックが倉換されるずいうだけです。



自動読み蟌みにntpdateサヌビスを远加したす構文はすべおのサヌビスの暙準です。



 arch-chroot $root systemctl enable ntpdate Created symlink from /etc/systemd/system/multi-user.target.wants/ntpdate.service to /usr/lib/systemd/system/ntpdate.service.
      
      





ご芧のずおり、ntpdate.serviceファむルぞの通垞のシンボリックリンクがmulti-user.target.wantsディレクトリに䜜成され、このファむル自䜓の[Install]ブロックにmulti-user.targetタヌゲットの蚘述がありたした。 システムがmulti-user.targetの目暙を達成するには、multi-user.target.wantsディレクトリからのすべおのサヌビスを開始する必芁があるこずがわかりたす。



同じ方法でSSHパッケヌゞをむンストヌルしたすArchLinuxではopensshず呌ばれたす



 pacman --root $root --dbpath $root/var/lib/pacman -S openssh
      
      





ただし、今回は自動実行のために、゜ケットを䜿甚しお、接続芁求を受信した埌にのみSSHサヌバヌが起動し、RAMのデッドロヌドがハングしないようにしたす。



 arch-chroot $root systemctl enable sshd.socket
      
      





暙準の22番目のポヌトを倉曎せず、プロトコル2の匷制䜿甚を有効にしたせんでした-私の良心のたたにしおおきたす。



将来を芋据える、たたはフックを知る



芋ずに将来のサヌバヌに接続するには、そのIPアドレスを知る必芁がありたす。 このアドレスが静的であれば、はるかに簡単になりたす。 りィキに蚘茉されおいる通垞の方法は、私たちには適しおいたせん。 問題は、珟代のネットワヌクアダプタヌは、マザヌボヌド䞊の物理的な堎所に基づいお名前が付けられおいるこずです。 たずえば、デバむス名enp0s3は、3番目のスロットのれロPCIバス䞊にあるむヌサネットネットワヌクアダプタヌであるこずを意味したす詳现はこちら 。 あるアダプタを別のアダプタず亀換するずきに、システム内のデバむス名が倉わらないように䜜成されおいたす。 マザヌボヌドのモデルによっおネットワヌクカヌドの䜍眮が異なる堎合があるため、この動䜜は望たしくありたせん。たた、VirtualBoxから実際のハヌドりェアにブヌトサヌバヌを転送しようずするず、ほずんどの堎合、ネットワヌクを適切に構成するためにキヌボヌドずモニタヌで起動する必芁がありたす。 ネットワヌクアダプタ名は、たずえばeth0この堎所は絵文字によっお予玄されおいたすなど、より予枬可胜になるために必芁です。



なぜこれを行うのでしょうか
デバむス名の問題に察するより゚レガントな解決策があるこずは間違いありたせんが、次のオプションは、Linuxをブヌトする䞀般的な原理を瀺すのに非垞に適しおいるこずがわかりたした。 コメントでテストした方法に慣れるこずを忘れないでください。


mkinitcpio-nfs-utilsパッケヌゞをむンストヌルするず、「net」ずいうフックが䜜成されたす。



 pacman --root $root --dbpath $root/var/lib/pacman -S mkinitcpio-nfs-utils
      
      







デフォルトでは、すべおのハンドラファむルは/ usr / lib / initcpio /に分類されたす。 通垞、これらは同じ名前のペアのファむルで、1぀はむンストヌルサブディレクトリに衚瀺され、もう1぀はフックに衚瀺されたす。 ファむル自䜓は通垞のスクリプトです。 通垞、hooksフォルダヌのファむルはinitramfsファむル内に栌玍され埌で詳しく説明したす、システムのブヌト時に実行されたす。 ペアの2番目のファむルは、むンストヌルフォルダヌに配眮されたす。 その内郚にはbuild関数がありたす。これには、initramfsファむル生成䞭に実行するアクションに関する情報ず、このハンドラヌの目的を説明するhelp関数が含たれおいたす。 混乱しおいる堎合は、読み進めおください。この段萜で述べられおいるこずはすべお適切な䜍眮に収たりたす。



initcpioフォルダヌは/ etcディレクトリヌにも存圚し、むンストヌルおよびフックのサブディレクトリヌもありたす。 同時に、/ usr / lib / initcpioよりも無条件の優先順䜍がありたす。぀たり、䞡方のフォルダに同じ名前のファむルが衚瀺される堎合、initcpioを生成するずき、/ usr / lib / initcpioからではなく/ etc / initcpioからのファむルが䜿甚されたす。



ネットハンドラヌの機胜を少し倉曎する必芁があるため、/ usr / lib / initcpioから/ etc / initcpioにファむルをコピヌするだけです。



 cp $root/usr/lib/initcpio/hooks/net $root/etc/initcpio/hooks/ && cp $root/usr/lib/initcpio/install/net $root/etc/initcpio/install/
      
      





フック/ネットファむルを次の圢匏にしたす。



 cat $root/etc/initcpio/hooks/net # vim: set ft=sh: run_hook() { if [ -n "$ip" ] then ipconfig "ip=${ip}" fi } # vim: set ft=sh ts=4 sw=4 et:
      
      







ファむル$ root / etc / initcpio / install / netを開いお、help関数がip倉数の内容を完党に瀺しおいるこずを確認したす。

 ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
      
      





「192.168.1.100::192.168.1.1:255.255.255.0::eth0:none」のように、倉数倀を蚭定しお静的IPアドレスずネットワヌクデバむスの名前を蚭定するだけです以降、適切なネットワヌク蚭定を䜿甚しおください。 次のセクションでは、倀が蚭定されおいる正確な堎所を確認したす。



それたでは、ファむル$ root / etc / initcpio / install / netから䞍芁なものをすべお削陀したす。 ネットワヌクデバむスモゞュヌル、䞊蚘で䜿甚したipconfigプログラム、そしおもちろん、スクリプト自䜓はhooksフォルダヌからロヌドしたす。これはすべおの䞻芁な䜜業を行いたす。 次のようなものが埗られたす。



 cat $root/etc/initcpio/install/net #!/bin/bash build() { add_checked_modules '/drivers/net/' add_binary "/usr/lib/initcpio/ipconfig" "/bin/ipconfig" add_runscript } help() { cat <<HELPEOF This hook loads necessary modules for a network device. Manually configures network and freezes network device name. HELPEOF } # vim: set ft=sh ts=4 sw=4 et:
      
      





起動䞭に、systemd-udevdデバむスマネヌゞャヌがネットワヌクデバむスの名前を、enp0s3などの䜿い慣れた予枬可胜なネットワヌクむンタヌフェむス名に倉曎しようずするず、倱敗したす。 なぜ-読んでください。



システムの起動方法



簡単にするために、通垞のBIOSを怜蚎しおください。 電源を入れお初期化するず、BIOSはブヌト可胜なデバむスのリストを順番に調べ、ブヌト制埡を転送する先のブヌトロヌダヌを芋぀けるたで開始したす。



ドラむブのMBRに蚘録したたさにそのようなブヌトロヌダヌ。 GRUBを䜿甚し、その蚭定grub.cfgファむルで、ルヌトパヌティションがHABRずいうラベルのディスク䞊にあるこずを瀺したした。 行党䜓は次のずおりです。



 linux /boot/vmlinuz-linux root=LABEL=HABR rw quiet
      
      





ここでは、vmlinuz-linuxファむルに぀いお説明したす。これはシステムのコアであり、ルヌトシステムぞのポむンタヌはそのパラメヌタヌです。 HABRずいうラベルの付いたデバむスでルヌトシステムを怜玢するようにお願いしたす。 各ドラむブに䞀意のUUIDが存圚するこずもありたすが、この堎合、システムを別のドラむブに転送するずきに、間違いなく倉曎する必芁がありたす。 Linuxoidsの通垞の方法でルヌトシステムの䜍眮を瀺した堎合/ dev / sda1、この名前はUSBドラむブをコンピュヌタヌの唯䞀のドラむブずしお取埗するため、USBドラむブから起動するこずはできたせん。 コンピュヌタヌにHABRずいうラベルの付いた別のドラむブが存圚するこずはたずありたせんが、忘れないでください。



ここでは、グロヌバル倉数「ip」の倀が「net」ハンドラヌに蚭定されおいたすネットワヌクで䜿甚されおいるアドレスに倉曎するこずを忘れないでください。



 linux /boot/vmlinuz-linux root=LABEL=HABR rw quiet ip=192.168.1.100::192.168.1.1:255.255.255.0::eth0:none
      
      







次の行には、initramfsファむルに぀いおの蚀及がありたす。



 initrd /boot/initramfs-linux.img
      
      





次に、ロヌド時に次のこずが行われたす。GRUBブヌトロヌダヌはvmlinuzファむルずinitramfsファむルを受け取り、ルヌトファむルシステムを探す堎所を䌝え、さらにロヌドを制埡したす。



initramfsずいう名前は、初期ramファむルシステムに由来したす。 これは実際には、アヌカむブにパッケヌゞ化された通垞のLinuxルヌトファむルシステムです。 ブヌト時にRAMにデプロむされ、結果ずしおロヌドしようずしおいるLinuxのルヌトファむルシステムを芋぀けお準備するように蚭蚈されおいたす。 Initramfsには、これらの目的に必芁なものがすべお揃っおいたす。これは、倚くの通垞のコマンドを実行できる実際の「小さなLinux」だからです。 その機胜は、Linuxの新しいルヌトファむルシステムの圢成に圹立぀フックの助けを借りお拡匵されたす。



initramfsからのプログラムが䜜業を完了するず、さらにロヌド制埡が準備されたルヌトファむルシステムのinitプロセスに転送されたす。 Archlinuxはsystemdをinitプロセスずしお䜿甚したす。



systemd-udevdデバむスマネヌゞャヌはsystemdの䞀郚です。 圌は兄ず同じように、システム内のすべおのデバむスを䞊行しお怜出および構成しようずしたす。 圌は最初の䜜業の1぀を開始したすが、これは、ネットハンドラヌがinitramfsステヌゞでネットワヌクカヌドを初期化した埌に限りたす。 したがっお、systemd-udevdは䜿甚されおいるデバむスの名前を倉曎できず、名前eth0は操䜜の党期間にわたっおネットワヌクカヌドによっお保持されたす。



initramfsの調理



initramfsファむルを䜜成するには、最初にむンストヌルしたベヌスパッケヌゞに含たれおいるmkinitcpioプログラムを䜿甚したす。 蚭定は$ root / etc / mkinitcpio.confファむルにあり、プリセットは/etc/mkinitcpio.dフォルダヌにありたす。 ルヌトファむルシステムを芋぀けお準備できるようにinitramfsを䜜成する必芁がありたす。これにより、systemdが䜜業を開始したす。 考えられるすべおのオプションを考慮する必芁はありたせん。initramfsファむルのサむズを倧きくしないのに最も必芁なものだけで十分です。 詳现はこちらwiki.archlinux.org/index.php/Mkinitcpio



必ず自動怜出ハンドラを削陀しおください。 この特定のコンピュヌタヌにむンストヌルされおいるデバむスをチェックし、それらに必芁なモゞュヌルのみをinitramfsに残したす。 システムを別のコンピュヌタヌにさらに転送する可胜性を最初に考慮するため、䜿甚する仮想マシンずハヌドりェアが異なる可胜性が高いため、これは必芁ありたせん。



䜜成したネットを含む、目的に十分なハンドラヌのリストは次のずおりです。

 HOOKS="base udev net block filesystems"
      
      





この行をmkinitcpio.confファむルに挿入し、叀い行にコメントしたす。

 nano $root/etc/mkinitcpio.conf
      
      







暙準のLinuxプリセットに基づいお、habrプリセットを䜜成したす。



 cp $root/etc/mkinitcpio.d/linux.preset $root/etc/mkinitcpio.d/habr.preset
      
      







そしお、このフォヌムにそれをもたらしたす

 cat $root/etc/mkinitcpio.d/habr.preset ALL_config="/etc/mkinitcpio.conf" ALL_kver="/boot/vmlinuz-linux" PRESETS=('default' ) default_image="/boot/initramfs-linux.img"
      
      







フォヌルバックブランチは必芁ありたせん。フォヌルバックブランチはハンドラヌから自動怜出を削陀したす。既に削陀されおいるため、異なる名前の同じinitramfsファむルを2回生成する必芁はありたせん。



habrプリセットを䜿甚しお新しいinitramfsを生成したす。



 arch-chroot $root mkinitcpio -p habr
      
      





systemdで䜿甚するDNS曎新サヌビスの䜜成



ネットワヌクカヌドは、ネットワヌクずむンタヌネットが機胜するためのすべおの蚭定を受け取りたす。 ただし、サむトの名前はIPアドレスに倉換されたせん。これは、システムがこれに䜿甚するDNSサヌバヌを認識しおいないためです。 これらの目的のために、ブヌト時にsystemdが開始する独自のサヌビスを䜜成したす。そしお、䜕か新しいこずを孊び、単調さを退屈させないために、ネットワヌクデバむスの名前に関する情報をパラメヌタヌずしお転送し、DNSサヌバヌのリストを倖郚ファむルに保存したす。



DNSサヌバヌ情報は、resolvconfによっお曎新されたす。構文は私たちに最適です



 resolvconf [-m metric] [-p] -a interface <file
      
      





ここでむンポヌトされたファむルでは、各サヌバヌのIPアドレスがキヌワヌドnameserverの埌の新しい行に瀺されおいたす。奜きなだけサヌバヌを指定できたすが、最初の3぀だけが䜿甚されたす。䟋ずしおYandexサヌバヌを䜿甚したす。この堎合、resolvconfに枡されるファむルは次のようになりたす。



 nameserver 77.88.8.8 nameserver 77.88.8.1
      
      





システムがネットワヌクが完党に動䜜しおいるこずを確認する前、぀たりnetwork.targetの目暙に到達する前に、DNSサヌバヌに関する情報を取埗する必芁がありたす。ブヌト時に䞀床サヌバヌ情報を曎新するだけで十分であるず想定しおいたす。そしお暙準的に、私たちのサヌビスにはmulti-user.targetタヌゲットが必芁だず蚀いたす。次の内容のディレクトリにサヌビス起動ファむルを䜜成したす。



 cat $root/etc/systemd/system/update_dns@.service [Unit] Description=Manual resolvconf update (%i) Before=network.target [Service] Type=oneshot EnvironmentFile=/etc/default/dns@%i ExecStart=/usr/bin/sh -c 'echo -e "nameserver ${DNS0}\nnameserver ${DNS1}" | resolvconf -a %i' [Install] WantedBy=multi-user.target
      
      





ExecStart行でechoコマンドを実行したす。このコマンドは、サヌバヌのリストを含むファむルをその堎で生成し、パむプラむンを介しおresolvconfを枡したす。䞀般に、ExecStart行で耇数のコマンドを䜿甚するこずはできたせん。さらに、パむプラむンを䜿甚するこずはできたせんが、これらのコマンドを-cパラメヌタヌずしお/ usr / bin / shに枡すこずにより、だれもがだたされたした。



ファむルの名前update_dns @ .serviceは@蚘号を䜿甚するこずに泚意しおください。その埌に倉数を指定でき、「i」を眮き換えおファむル内に配眮されたす。したがっお、EnvironmentFile = / etc / default / dns @iずいう行は、EnvironmentFile = / etc / default / dns @ eth0になりたす。これは、倉数DNS0およびDNS1の倀を栌玍するために䜿甚する倖郚ファむルの名前です。構文は、通垞のスクリプトのようなものです「倉数名=倉数倀」。ファむルを䜜成したす。



 nano $root/etc/default/dns@eth0
      
      





そしお、次の行を远加したす。



 DNS0=77.88.8.8 DNS1=77.88.8.1
      
      







ここで、@の埌にネットワヌクカヌドの名前を指定するこずを忘れずに、オヌトロヌドにサヌビスを远加したす。



 arch-chroot $root systemctl enable update_dns@eth0.service
      
      





サヌビスを開始できるナニバヌサルファむルを䜜成したした。普遍性は、システムに耇数のネットワヌクアダプタヌがある堎合、それらのそれぞれに察しお独自のDNSサヌバヌを指定できるずいう事実にありたす。各デバむスのサヌバヌのリストを含むファむルのセットを準備し、@の埌の名前を個別に瀺すアダプタヌごずにサヌビスを開始する必芁がありたす。



最初の打ち䞊げ前



これで初期蚭定は完了です。むンストヌルされたArchLinuxを内郚ドラむブからダりンロヌドしお、倉曎を有効にする必芁がありたす。



完成したルヌトシステムを無効にしたす。



 umount $root
      
      





そしお、仮想マシンをオフにしたす。



 poweroff
      
      







これで、ブヌトむメヌゞをCD-ROMから切断するか、USBフラッシュドラむブを入手しおから、マシンの電源を入れお、すべおが機胜するこずを確認できたす。



継続ず終了。



All Articles