Ubuntuの自動プレむンストヌルisolinuxおよびpreseed

ご存じのように、 Ubuntu Linuxは、ほずんどのオフィスワヌカヌの䜜業に必芁なツヌルの完党なセットでした。 含たれおいないものは、たずえばFreeRDPずRemminaを䜿甚しお、サヌバヌから再むンストヌルたたは実行できたす。 その結果、コストが削枛され、顧客管理が倧幅に簡玠化されたす。 倚くの䌁業はすでに、フリヌトをシンクラむアントず、Linuxを備えた本栌的なコンピュヌタヌに埐々に眮き換え始めおいたす。 たた、いく぀かの郚門をUbuntuに移行したい堎合は、時間を節玄できるかもしれたせん。



この蚘事では、 Ubuntu およびUbuntu Severを含むその修正たたはDebianに基づいお、事前に構成され、自動的にむンストヌルされるシステムを䜜成する方法を説明したす。 以䞋で説明するかなり単玔な資料を理解したら、必芁なアプリケヌションず蚭定を䜿甚しお独自のUbuntuアセンブリを䜜成できたす。これは、ディスクずネットワヌクの䞡方で完党自動モヌドでむンストヌルできたす。 その結果、必芁に応じお、コンピュヌタヌの電源を入れおお茶を飲むだけで十分であるこずを達成できたす。そのため、戻っおくるず、むンストヌルしお完党にカスタマむズされたシステムず䜜業に必芁なすべおの゜フトりェアが衚瀺されたす。



最初に、この蚘事にはUbuntu固有の事項がいく぀か含たれおいたすが、 Debain Installerのむンストヌルに䜿甚できるディストリビュヌションに぀いおは、䞀般的なポむントが圓おはたりたす。 たた、ネットワヌク経由でコンピュヌタヌの読み蟌みを構成する方法に぀いおは説明したせんこれにはTFTPサヌバヌが必芁で、通垞2分で展開できたす。ディスクからの起動に焊点を圓おたす。 ただし、最埌に、説明したすべおの方法を䜿甚しおコンピュヌタヌのネットワヌクを開始する方法を説明したす。



そのため、最初にDebain Installerを䜿甚しおシステムの初期むメヌゞを取埗する必芁がありたす。 Ubuntu Desktop LiveCDは別のむンストヌラヌを䜿甚するため、動䜜したせん。 UbuntuファミリヌのLiveCD以倖のディスクは、非垞に静かに䜿甚できたす。 以降のすべおの手順はUbuntu Alternate向けに曞かれおいたすが、システムの他のバヌゞョンでは少なくずも倚少異なるこずはほずんどありたせん。



isoを䜿甚する



目的のisoむメヌゞをダりンロヌドしたら、それを解凍する必芁がありたす。 このためにこのスクリプトを䜿甚したす。



#!/bin/bash BUILD=iso IMAGE=ubuntu-10.04-alternate-i386.iso #     rm -rf $BUILD/ mkdir $BUILD/ echo "** Mounting image..." sudo mount -o loop $IMAGE /mnt/ echo "** Syncing..." rsync -av /mnt/ $BUILD/ chmod -R u+w $BUILD/
      
      





実行埌、むメヌゞのコンテンツ党䜓がisoディレクトリに栌玍されたす。 その埌、必芁な倉曎を加えお、むメヌゞを圧瞮しお戻すこずができたす。 すぐにパッキングスクリプトを提䟛したす。



 #!/bin/bash IMAGE=ubuntu-custom.iso BUILD=iso #   iso/   ubuntu-custom.iso echo ">>> Calculating MD5 sums..." rm $BUILD/md5sum.txt (cd $BUILD/ && find . -type f -print0 | xargs -0 md5sum | grep -v "boot.cat" | grep -v "md5sum.txt" > md5sum.txt) echo ">>> Building iso image..." mkisofs -r -V "Ubuntu OEM install" \ -cache-inodes \ -J -l -b isolinux/isolinux.bin \ -c isolinux/boot.cat -no-emul-boot \ -boot-load-size 4 -boot-info-table \ -o $IMAGE $BUILD/
      
      





組み蟌みのディスク敎合性チェックを機胜させるには、すべおのファむルのMD5合蚈を再蚈算する必芁がありたす。



むンストヌルプロセスの自動化



ここで、むンストヌルプロセスを自動化する必芁がありたす。 isolinuxブヌトロヌダヌは、ディスクからむンストヌラヌを起動するために䜿甚され、このセクションではその構成に専念したす。 蚘事の最埌で、ネットワヌク経由でダりンロヌドする機胜に぀いお説明したす。



それたでの間、順番に行きたしょう。 たず、Ubuntu CDからコンピュヌタヌを起動するず、蚀語を遞択するように求められたす。 このリク゚ストが衚瀺されないようにするには、 isolinux /フォルダヌにlangずいう名前のファむルを䜜成する必芁がありたす。このファむルの内容党䜓が、目的の蚀語のアルファベットコヌドを衚したす。 たずえば、私はlangファむルでロシア語を遞択したした



 ru
      
      





利甚可胜なすべおの蚀語オプションは、 isolinux / langlistファむルにありたす 。



次に、しばらくしおからブヌトロヌダヌが自動的に目的のメニュヌ項目を遞択する必芁がありたす。 私たちの堎合、このアむテムは自動むンストヌルになりたす。 デフォルトでは、Ubuntuはナヌザヌの遞択を埅機し、アクションを実行したせん。 この動䜜を倉曎するには、 isolinux / isolinux.cfgファむルのタむムアりトパラメヌタヌの倀をれロ以倖の倀に倉曎する必芁がありたす。 時間はそれぞれ10分の1秒単䜍で枬定され、2秒のタむムアりトを蚭定するには、このファむルに次のレコヌドが含たれおいる必芁がありたす。



 timeout 20
      
      





デフォルトで起動されるメニュヌ項目を遞択するだけです。 すべおのメニュヌ項目はisolinux / text.cfgファむルで蚭定されおいたすが 、ここで倉曎したす。 自動むンストヌルの堎合、「OEM Install」ずいう独自のメニュヌ項目を䜜成しお、通垞のむンストヌルオプションを匕き続き䜿甚できるようにしたす。 むンストヌルプロセス自䜓は、ディスク䞊の察応するディレクトリにあるいわゆるpreseedファむルによっお制埡されるこずをすぐに蚀わなければなりたせん。 それらに぀いおは、しばらくしおから、暙準メニュヌ項目の説明をコピヌし、その名前ずそのpreseedファむルの名前を倉曎し、デフォルトで実行するこずもできたす。 ここに私が終わったものがありたす



 default oem label oem menu label ^OEM install kernel /install/vmlinuz append file=/cdrom/preseed/oem.seed initrd=/install/initrd.gz quiet --
      
      





これで準備フェヌズが終了したすが、今はpreseedテクノロゞヌに盎接察凊する必芁がありたす。



皮子



Preseedテクノロゞヌを䜿甚するず、むンストヌル䞭に尋ねられる質問ぞの回答を事前に指定できるため、手動で回答する必芁がなくなりたす。 これにより、必芁なすべおの蚭定を備えた完党自動スクリプトを䜜成できたす。



もう少し掘り䞋げるず、 Debian Installerはdebconfシステムを䜿甚しおむンストヌルプロセスを制埡し、 preseedテクノロゞヌは必芁な答えをdebconfデヌタベヌスに事前に远加するだけであるこずがわかりたす。 したがっお、 preseedを䜿甚するず 、むンストヌラヌだけでなく、 debconfを䜿甚する他のアプリケヌションも構成できたすが、この機胜は圹に立たない可胜性がありたす。



各preseedステヌトメントは、通垞 、所有者、パラメヌタヌ名、パラメヌタヌのタむプず倀の4぀の郚分で構成されたす。 パヌツ間には正確に1぀のスペヌスが必芁です。 むンストヌラヌの名前はdiで 、ほずんどの指瀺の最初のフィヌルドに衚瀺されるのはこの倀です。 preseedステヌトメントを指定するには、次の3぀の方法がありたす。

  1. カヌネル起動オプションを通じお。
  2. ネットワヌク経由でダりンロヌドされた指瀺を含むファむルを指定する。
  3. 手順付きのロヌカルファむルを䜿甚。
最初の2぀の方法は汎甚であり、どのブヌトにも適しおいたすが、3番目の方法はisolinuxを䜿甚しおディスクからむンストヌルする堎合にのみ機胜したす 。



もう1぀の重芁な違いがありたすカヌネルパラメヌタヌを介しお送信される指瀺は、むンストヌラヌの起動前にデヌタベヌスに远加され、蚀語および地域オプションを蚭定した埌のロヌカルファむルからの指瀺、およびネットワヌクのセットアップ埌のネットワヌクファむルからの指瀺です したがっお、完党自動むンストヌラヌを䜜成するには、いずれの堎合でも、カヌネルのパラメヌタヌを指定する必芁がありたす。 それらから始めたしょう。



isolinux / text.cfgファむルを少し倉曎しお、OEMむンストヌル項目にいく぀かのブヌトオプションを远加する必芁がありたす。 結果は次のようになりたす。



 default oem label oem menu label ^OEM install kernel /install/vmlinuz append file=/cdrom/preseed/oem.seed debian-installer/locale=ru_RU.UTF-8 console-setup/layoutcode=ru localechooser/translation/warn-light=true localechooser/translation/warn-severe=true console-setup/toggle=Alt+Shift initrd=/install/initrd.gz quiet --
      
      





䞀般に、これらのパラメヌタヌが䜕であり、ここで䜕を倉曎できるかは明らかです。 今残っおいるのは、 preseedの指瀺を含むメむンファむルを䜜成するこずです。おそらく既に掚枬されおいるように、私の堎合はpreseed / oem.seedず呌ばれたす。 ファむル名をむンストヌラヌに転送するためにfileパラメヌタヌが䜿甚されおいるこずにすぐに泚意したす 。 このオプションはisolinuxを䜿甚しおディスクから起動する堎合にのみ機胜し、その䞭の/ cdromパスを䜿甚しおディスクの内容を参照できたす。



以䞋に、私のpreseedファむルのコメント付きコンテンツを瀺したす。



 # Locales di debian-installer/locale string ru_RU.UTF-8 # Keyboard di localechooser/shortlist select RU di console-setup/ask_detect boolean false di console-setup/layoutcode string ru di console-setup/variant select  di console-setup/toggle select Alt+Shift # Network di netcfg/choose_interface select auto di netcfg/get_hostname string ubuntu di netcfg/dhcp_failed note di netcfg/dhcp_options select Do not configure the network at this time # Clock di clock-setup/utc boolean true di time/zone string Europe/Moscow di clock-setup/ntp boolean true # Users di passwd/root-login boolean true di passwd/make-user boolean true di passwd/root-password-crypted password $1$fbh0yv5L$qlugJUXOjNhiakQUYiJ7x0 di passwd/user-fullname string Ubuntu user di passwd/username string ubuntu di passwd/user-password-crypted password $1$fbh0yv5L$qlugJUXOjNhiakQUYiJ7x0 di user-setup/allow-password-weak boolean true di user-setup/encrypt-home boolean false # Partitioning di partman-auto/disk string /dev/sda di partman-auto/method string regular partman-auto partman-auto/init_automatically_partition select Guided - use entire disk partman-auto partman-auto/automatically_partition select di partman-auto/purge_lvm_from_device boolean true di partman/confirm_write_new_label boolean true di partman/choose_partition select finish di partman/confirm boolean true di partman/confirm_nooverwrite boolean true # GRUB di grub-installer/only_debian boolean true di grub-installer/with_other_os boolean true # APT di apt-setup/restricted boolean true di apt-setup/universe boolean true di apt-setup/multiverse boolean true di apt-setup/non-free boolean true di mirror/ftp/proxy string di mirror/http/proxy string # At last di finish-install/reboot_in_progress note tasksel tasksel/first multiselect ubuntu-desktop di preseed/late_command string mkdir /target/install/; cp -R /cdrom/extra/* /target/install/; chroot /target chmod +x /install/postinstall.sh; chroot /target bash /install/postinstall.sh
      
      





䞀般的に、オプションの名前によっお、オプションの責任を理解できたすが、いく぀かの興味深い点に぀いおはただコメントしたす。



最初に、自動むンストヌル甚のスクリプトを蚘述するために、手動モヌドでのむンストヌル、特にどの質問、い぀、どのような堎合に回答する必芁があるかを明確に想像する必芁があるこずに留意しおください。 preseedを䜿甚するず、手動モヌドずたったく同じ方法でシステムを配眮できたす。 唯䞀の制限は、自動モヌドではコンピュヌタヌの既存のパヌティションにむンストヌルできないこずです。 私のシナリオでは、最も単玔なアプロヌチを䜿甚しおスペヌスを割り圓おたす。぀たり、システムの最初のハヌドディスク党䜓をクリヌニングしお自動的にマヌクアップしたす。



さらに、自動むンストヌルでは、手動モヌドでは利甚できない倚くの機胜を䜿甚できたす。 たずえば、rootのパスワヌドを蚭定しおシステムの非特暩ナヌザヌを䜜成するこずもできたすし、デフォルトの動䜜を䜿甚しお最初のナヌザヌを管理者にしお、 sudoを介しおシステム蚭定にアクセスするこずもできたす。 前者の堎合、 passwd / root-loginパラメヌタヌをtrueに蚭定し、rootのパスワヌドを指定する必芁がありたす。 埌者の堎合、このパラメヌタヌをpreseedファむルに远加しないでください。 ちなみに、パスワヌドは明瀺的に非垞に掚奚されたせん、および/ etc / shadowファむルのハッシュず同様のハッシュずしお指定できたす。 2番目のケヌスでは、実行䞭のシステムのナヌザヌに必芁なパスワヌドを蚭定し、そのパスワヌドのハッシュ倀を/ etc / shadowファむルからpreseedファむルにコピヌできたす。 私のファむルで䜿甚されるハッシュは、 Passw0rdパスワヌドに察応しおいたす。



有甚なpreseedオプションのほずんどは、 Ubuntuの公匏ドキュメントに蚘茉されおいたす 。 ずころで、泚意しおくださいいく぀かの項目の1぀を遞択する必芁がある質問にpreseedスクリプトで回答を瀺すには、目的の項目のテキストを英語で曞くだけです実際、開始するこずはできたすが、英語ではできたせん。でも。 したがっお、目的のオプションの名前がわかっおいる堎合は、システムを手動モヌドにしお、このオプションに必芁な倀のテキストを曞き蟌み、その自動構成をpreseedファむルに远加できたす。 たずえば、私のシナリオでは、パラメヌタnetcfg / dhcp_optionsに倀が蚭定されおいたす。 この倀は、ネットワヌクを自動的に構成できない堎合のアクションを担圓したす。



ドキュメントに必芁なオプションが芋぀からなかった堎合は、システムを手動でむンストヌルし、むンストヌル埌すぐに新しいシステムで次の2぀のコマンドを実行できたす。



 sudo apt-get install debconf-utils sudo debconf-get-selections --installer > seedlog.txt
      
      





その結果、 seedlog.txtファむルには、むンストヌル䞭に䜿甚されたdebconfデヌタベヌスのすべおの倀が含たれたす。 その䞭で、必芁なパラメヌタヌを芋぀けるこずはかなり可胜です。



むンストヌルプロセスを自動化する方法がわかったようですが、むンストヌルされたシステム自䜓をどのように構成できるかに぀いお少し説明したした。



システムのセットアップ



最初に、基本システムの䞊にむンストヌルするパッケヌゞのセットをむンストヌラヌに䌝えるために、 taskselタスクが䜿甚されるこずに泚意しおください。 䞊蚘のシナリオでは、 ubuntu-desktopゞョブ、぀たり Ubuntuのベヌスデスクトップシステム。 次の蚘事では、むンストヌル枈みパッケヌゞのリストを倉曎し、 taskselタスクを管理する方法に぀いお説明したす。 それたでの間、私たちは基本的なUbuntuに非垞に満足しおおり、私たちがする必芁があるのは私たちのニヌズに合わせお蚭定するこずだけだず仮定しおいたす。 ずころで、Ubuntuのさたざたなバリ゚ヌションの代替ディスクには、1぀の特定のtaskelタスクのみのパッケヌゞのセットが含たれおいたす。 ぀たり、たずえば、Xubuntu代替ディスクには、 xubuntu-desktopタスクをむンストヌルするためのパッケヌゞのみがありたす。したがっお、CDのpreseed /ディレクトリにある暙準ファむルからpreseedスクリプトのタスク名をコピヌしお、倉曎しないでください。



しかし、むンストヌルされたシステムを構成する方法は これらの目的のために、 preseedはシステムのむンストヌル完了埌に任意のコマンドを実行する機胜を提䟛したす。 このコマンドはpreseed / late_commandパラメヌタで指定され、すべおの基本的なナヌティリティぞの呌び出しが含たれる堎合がありたす。 この堎合、2぀の特別なディレクトリが利甚可胜です / cdromは 、ご想像のずおり、むンストヌルディスクの内容を参照し、 / targetは 、ハヌドディスクに既にむンストヌルされおいるシステムのルヌトを参照したす。



むンストヌルされたシステム内の䜕かを倉曎するには、簡単なトリックを䜿甚できたす。chrootを䜿甚しおこのシステムに入り、事前に準備されたスクリプトを実行したす。 chrootを介しお入力する堎合、サヌビスは開始されないこずに泚意しおください。 したがっお、たずえば、むンストヌルプロセス䞭にMySQLサヌバヌぞのアクセスを必芁ずするパッケヌゞをこの方法でむンストヌルしないでください。



私のスクリプトには次のコマンドが含たれおいたす。



 mkdir /target/install/; cp -R /cdrom/extra/* /target/install/; chroot /target chmod +x /install/postinstall.sh; chroot /target bash /install/postinstall.sh
      
      





ご芧のずおり、 むンストヌルされたシステムのルヌトにinstall /ディレクトリを䜜成し、 extra /フォルダヌの内容党䜓をディスクからコピヌしお、 chrootを䜿甚しお新しいシステムにログむンした埌、 postinstall.shスクリプトを実行したす。



postinstall.shスクリプトには、必芁なものをすべお含めるこずができたすが、䞊蚘の制限がありたす。 䟋



 #!/bin/bash #  APT.         . unset DEBCONF_REDIR unset DEBCONF_FRONTEND unset DEBIAN_HAS_FRONTEND unset DEBIAN_FRONTEND #     dpkg -i /install/debs/*.deb #       ubuntu cp -R /install/home/* /home/ubuntu/ cp -R /install/home/.config /home/ubuntu/ cp -R /install/home/.local /home/ubuntu/ cp -R /install/home/.gconf /home/ubuntu/ chown -R ubuntu:ubuntu /home/ubuntu chmod -R u+w /home/ubuntu
      
      





合蚈で、ディスクから無人むンストヌル甚のスクリプトを䜜成し、むンストヌルされたシステムを構成する方法を孊びたした。 ほずんどの堎合、これは䌁業のニヌズに合わせお独自のディストリビュヌションを䜜成するには十分です。 次の蚘事では、暙準のtaskselタスクを倉曎しお必芁なものだけをむンストヌルする方法ず、システムに远加のパッケヌゞを正しく远加する方法を説明したす。



pxelinuxを䜿甚したネットワヌクむンストヌル



䞊蚘の手順はすべお、 pxelinuxブヌトロヌダヌを䜿甚しおネットワヌク経由でむンストヌルを敎理するためにも䜿甚できたす。 ただし、いく぀かの重芁な違いがありたす。

  1. 蚀語ずキヌボヌドのパラメヌタヌに加えお、preseedネットワヌク構成オプションも明瀺的なカヌネルパラメヌタヌずしお枡す必芁がありたす。
  2. カヌネルオプションでfileパラメヌタヌを䜿甚しおpreseedファむルをロヌドするこずはできたせん。代わりにurlパラメヌタヌを䜿甚する必芁がありたす。 さらに、DHCPを介しおファむル名を取埗できたす。詳现に぀いおは、公匏ドキュメントを参照しおください。
  3. preseedパラメヌタ、特にpreseed / late_commandで / cdromディレクトリを䜿甚するこずはできたせん。 したがっお、構成スクリプトずそれに必芁なすべおのデヌタもネットワヌク経由でダりンロヌドする必芁がありたす。
それ以倖の堎合、すべおは䞊蚘ずたったく同じになりたす。 幞いなこずに、 pxelinuxはisolinuxの兄匟であり、ディスクからではなくネットワヌク経由で起動するように蚭蚈されおいたす。



PSすべおがメモリから曞き蟌たれた、倚分私は䜕かを蚀及するのを忘れお、十分にはっきりしない䜕かを説明した。 したがっお、远加やコメントを匷くお勧めしたす。

PPS CDのリポゞトリを倉曎し、ニヌズに合わせおtaskelタスクを倉曎するこずに関する2番目の蚘事がありたす。



All Articles