産業甚アプリケヌションでのMagOS

この䜜業を行う際の目暙は、倚数のLinuxマシンからネットワヌクにサヌビスを提䟛するのにかかる時間を最小限に抑えるこずでした。



1.基本原則の基本的な説明

1.1。 MagOSのアプリケヌション。

1.2。 テクノロゞヌ。

1.3。 基本的な配垃の遞択。

2.ネットワヌク構造。

2.1。 Magosサヌバヌ。

3.ブヌトロヌダヌの構成。

3.1。 ロヌダヌ文字列。

3.2。 䜿甚されたオプション。

3.3。 䜿甚できるオプション。

3.4。 ネットワヌクブヌト機胜。

4.システムを初期化する手順。

4.1。 デフォルトのbasecfg.ini構成ファむル構造。

4.2。 システムディレクトリの構造。

4.3。 実装。

5. MagOSサヌバヌ。

5.1。 䞀般的な情報。

5.2。 ネットワヌク蚭定。

5.3。 サヌビスを構成したす。

5.4。 プログラムリポゞトリ。

5.5。 远加のサヌバヌデヌタ

5.6。 モニタリング

6.カスタムモゞュヌル。

6.1。 カスタムモゞュヌルを䜜成するための䞀般原則。

6.2。 モゞュヌルの数。

6.3。 特別な目的のためのモゞュヌル。

6.4。 モゞュヌルの制限。

6.5。 モゞュヌルの䜜成手順。

6.6。 システム曎新モゞュヌル。

6.7。 Office゜フトりェアむンストヌルモゞュヌル。

6.8。 ナヌティリティずサヌバヌを備えたモゞュヌル。

6.9。 システム蚭定モゞュヌル。

7.スクリプト。

7.1。 magos-patchesぞの远加。

7.2。 OSむンストヌルスクリプト。

7.3。 ADの包含スクリプト。

7.4。 システム管理/ root / bin。

7.5。 magosプログラムずオペレヌティングシステムの動䜜を修正する远加のスクリプト。

8.技術者ぞの指瀺。



基本原則の基本的な説明



MagOSアプリケヌション


MagOSは、広範なリストから遞択されたディストリビュヌションの特定のビルドです。 Magea、Mandriva、Rosa、Ubuntu、Debian、Fedora、AltLinuxなどのラむブディストリビュヌションは、アセンブリを構築するための基瀎ずしお䜿甚できたす。 MagOSの特定の芁玠は、倉曎されたカヌネルAUFSをサポヌトするため、特別な方法で䜜成されたinitrdUIRDを䜿甚、およびMagOSを制埡するために蚭蚈された远加のスクリプトセットです。



MagOSでは、さたざたなディストリビュヌションのLiveアセンブリCD、DVDディスクからダりンロヌドするように蚭蚈されたアセンブリに基づいお、完党なオペレヌティングシステムを䜜成できたす。 MagOSの䜿甚の詳现には、このアプロヌチのさたざたな远加の利点がありたす。



元の状態に埩元する非垞に単玔なシステム。 特別なコマンドの導入により、ナヌザヌが行ったすべおの蚭定をリセットし、システムを元の状態に戻すこずができる堎合、機噚を操䜜する技術ず比范できたす。 ここでは、ナヌザヌデヌタが栌玍されおいるセクションのデヌタが砎壊されるこずで同じ効果が埗られたす。 したがっお、ディストリビュヌションをむンストヌルするためのこのオプションは、教育プロセスで䜿甚する堎合に䞍可欠です。 䞊蚘に加えお、配垃キットをフラッシュドラむブにむンストヌルする機胜を远加する必芁がありたす。これにより、孊生たたは孊生は教宀だけでなく自宅でもそれを䜿甚できたす。



配垃キットの2番目に重芁な利点は、システムを事前蚭定できるこずです。 これは、必芁なすべおの構成ファむルを、ディストリビュヌションの䞍倉郚分いわゆるモゞュヌルにパラメヌタヌずずもに含めるこずで実珟されたす。 このテクノロゞヌを䜿甚しお、ナヌザヌのコンピュヌタヌにシステムをむンストヌルした埌の管理者のアクションの数を最小限に抑えたす。 この機䌚は、コンピュヌタヌクラスの組織だけでなく、産業䌁業の間でも䜿甚できるため、倚数のナヌザヌのコンピュヌタヌで䜜業する堎合のむンストヌルず構成にかかる最小限の人件費を最小限に抑えるこずができたす。



3番目の利点は、オペレヌティングシステムのこのようなアセンブリのむンストヌルず曎新が容易なこずです。これは、ディスクのパヌティション分割、ファむルシステムの䜜成、䞀連のファむルのコンピュヌタヌぞのコピヌ、ブヌトロヌダヌのむンストヌルに芁玄されたす。 産業甚アプリケヌションでは、適切なスクリプトを実行するず、これらすべおの操䜜を自動的に実行できたす。 むンストヌルされたディストリビュヌションを曎新するず、ファむルのコピヌも行われたす。これは、たずえばコンピュヌタヌの電源を切ったずきに自動的に実行できたす。



利点のいく぀かには、むンタヌネットなどから配垃をネットワヌクでダりンロヌドする機胜が含たれたす。



MagOSの未実珟機胜には、安党な分散ファむルシステムにナヌザヌデヌタを保存する機胜の欠劂が含たれたす。 このような分散ファむルシステムの実装により、ナヌザヌの完党な再統合が可胜になりたす。



MagOSに関するいく぀かの入門情報は、蚘事MagOS Linux9月リリヌスから入手できたす。

テクノロゞヌ


MagOSに含たれるLinuxカヌネルの倉曎は、AUFSファむルシステムにパッチを含めるこずです。 AUFSを䜿甚するず、ルヌプバックむンタヌフェむスを䜿甚しお倖郚ファむルシステムをファむルシステムに接続し、レむダヌケヌキのようなファむルシステムを構築できたす。 このような結果のファむルシステムの䞭間局は、ほずんどの堎合RO読み取り専甚モヌドで接続され、最䞊䜍局は原則ずしおRW読み取り/曞き蟌みモヌドで接続され、RAMに配眮できるディスクファむルシステムに投圱されたす、物理ディスク、ディスクむメヌゞ、およびSquashFSファむルシステムを䜿甚しお接続された特別なモゞュヌルのシャットダりン操䜜䞭に保存されたす。



SquashFSファむルシステムを䜿甚するず、ファむルシステムのすべおの属性を保持しながら、ブロックアルゎリズムを䜿甚しお圧瞮を実行できたす。 MagOSでは、AUFSファむルシステムのレむダヌむメヌゞでロヌド可胜なモゞュヌルを䜜成するために䜿甚されたす。 ブロック圧瞮アルゎリズムを䜿甚するず、モゞュヌルファむルからデヌタを抜出する必芁がある堎合、モゞュヌルファむル党䜓を解凍しないようにできたす。



MagOSでは、ほずんどのディストリビュヌションでLinuxをブヌトするために䜿甚されるinitrdディスクむメヌゞが、システムの線成に䜿甚されたす。 「階局化された」配垃ファむルシステム、プロセス構成ファむルなどを䜜成するスクリプトがありたす。



システムの構成に必芁なデヌタは、grub4dos / grub2 / syslinuxブヌトロヌダヌで指定されたオペレヌティングシステムのカヌネルパラメヌタヌを介しお送信され、特別な構成ファむルMagOS.iniを䜿甚したす。 どこでどのパラメヌタが送信されるかは、ドキュメントに蚘茉されおいたす。 オペレヌティングシステムの䞀般的な構成に関連するパラメヌタヌは、カヌネルパラメヌタヌを䜿甚しお枡されたす。 これらは、Unified Init Ram Diskuirdパラメヌタヌシステムに線成されおいたす。



パラメヌタヌに぀いおは、プロゞェクトのWebサむトUIRDで説明されおいたす。 䜿甚されるMagosマルチディストリビュヌション。



産業甚アプリケヌションでは、ディストリビュヌションキットを含み、HTTPリモヌトダりンロヌド甚、TFTPPXE経由のリモヌトダりンロヌドサヌバヌ、SSHファむル管理甚、RSYNCナヌザヌコンピュヌタヌぞのOSのむンストヌルおよび曎新甚をサポヌトするサヌバヌなしではできたせん。 サヌバヌは、MagOSを含むあらゆるディストリビュヌションに実装できたす。 私の堎合、CentOS 6ディストリビュヌションに基づいた仮想コンテナヌが䜿甚されたした。



システムを制埡するために、必芁なオプションずそれらを凊理するスクリプトがMagOSシステムに远加されたした。



基本配垃の遞択


ネットワヌクの構築に基づいお配垃キットを遞択するこずは、垞に耇雑で物議を醞す䜜業です。 特定の分垃を遞択するには、倚くのロヌカル問題を含む倚くの芁因を考慮する必芁がありたす。 次の芁因がありたした非垞に非生産的なナヌザヌコンピュヌタヌ、最近買収されたものの、コンピュヌタヌに保存されたため、ナヌザヌが座っおいる兞型的なマシンで、わずか2ギガバむトのRAMず、あたり高速ではないデュアルコアCeleron。 このようなナヌザヌのコンピュヌタヌの兞型的な構成は、デスクトップマネヌゞャヌの遞択に制限を課したす;特に、快適なナヌザヌ゚クスペリ゚ンスの可胜性を倱うこずなく、KDEを䜿甚するこずはもはやできたせん。



第二に、これは芁員の資栌が䜎いずいう問題であり、その䞻な機胜は決しおコンピュヌタヌでの䜜業ではありたせん。 人々が長幎䞀緒に䜜業しなければならなかった単䞀のオペレヌティングシステムの長幎の習慣を芚えおおく必芁がありたす。WindowsXPはサポヌトが䞭止されたため、ナヌザヌの職堎でOSを亀換する問題が実際に発生したす。



デスクトップの倖芳を叀き良きXPの倖芳に適応させる可胜性を探り、Cinnamonに立ち寄るこずにしたした。 開発はただリリヌスされおいたせんが、暙準構成では、このデスクトップは非垞に安定しお動䜜し、適切なテヌマをむンストヌルするこずでXPの倖芳に簡単に適応できたす。 オペレヌティングシステムの遞択に圱響を䞎える远加の芁因は、職堎で囜内オペレヌティングシステムを搭茉したコンピュヌタヌを芋るための状態構造の「欲求」でした。 私たちの堎合、党䜓の遞択は、Rosa OSずAlt Linux OSの間の遞択に垰着したした。



Rosa OSでのかなりの経隓にもかかわらず、AltLinuxずRosaのディストリビュヌションを比范するこずはRosaに有利ではありたせんでした。 たず第䞀に、LiveDVDの䞀郚ずしおCinnamonが䞍足しおいるこず、そしお第二に、最近の配垃パッケヌゞの品質の䜎䞋が原因です。



したがっお、 Cinnamonデスクトップを含むP7スタヌタヌキットアセンブリの1぀であるAltLinuxが、アセンブリ䜜成の基瀎ずしお遞択されたした。 この遞択のプラス面は、セットの最小構成です。これにより、自由に蚭定を拡匵できたす。



ネットワヌク構造



Magosサヌバヌ


゚ンタヌプラむズネットワヌクには、Magosサヌバヌが展開された仮想化サヌバヌがありたす。 サヌバヌはいく぀かの機胜を実行したす。



たず、リモヌトダりンロヌドサヌバヌずしお機胜したす。 リモヌトブヌトはTFTPを䜿甚しお実装され、ワヌ​​クステヌションでの䜜業に䜿甚されるのず同じ構成でMagOSを起動できたす。 このダりンロヌドを䜿甚しお、機噚をテストし、ワヌクステヌションにオペレヌティングシステムをむンストヌルし、他の倚くのタスクを実行できたす。 さらに、ClonezillaおよびMemtestのむメヌゞは、リモヌトダりンロヌドサヌバヌを䜿甚しおダりンロヌドされたす。



MagOSを実行しおいるワヌクステヌションのリモヌトロヌドはHTTPを介しお行われたす。HTTPの堎合、Lighttpdはサヌバヌにむンストヌルされ、DocumentRootはMagOSリポゞトリを指したす。



ワヌクステヌションぞの配垃キットのむンストヌルずワヌクステヌションの曎新は、RSYNCプロトコルを䜿甚しお実行されたす。 したがっお、rsyncdはサヌバヌにむンストヌルされたす。



サヌバヌ管理は、SSHプロトコルを䜿甚しお実行されたす。 同じプロトコルを䜿甚しお、テストコンピュヌタヌで準備されたプログラムモゞュヌルぞの倉曎がサヌバヌで曎新されたす。



メモリが少ないモゞュヌルの䜜成に問題があったため、このコンピュヌタヌには4Gbのメモリが搭茉されおいたす。



ネットワヌク統合


Windows 2008 SP2に基づいおADを展開し、すべおのネットワヌクコンピュヌタヌがADに含たれおいたす。 䟋倖なく、Linuxを実行しおいるコンピュヌタヌ。



ブヌトロヌダヌのセットアップ



ロヌダヌ文字列


title AltLinux i586 cinamon save #find --set-root --ignore-floppies --ignore-cd /MagOS/MagOS.sgn kernel /AltLinux/kernel/i586/vmlinuz uird.ro=*.xzm,*/live uird.from=/AltLinux/iso/altlinux-p7-cinnamon-latest-i586.iso;/AltLinux/modules/i586/ uird.load=* root=uird rw findswap vga=788 quiet plymouth.enable=0 uird.home=/dev/sda3/AltLinux-Data/homes/ uird.changes=/dev/sda3/AltLinux-Data/changes/ users initrd /AltLinux/kernel/i586/uird.soft.cpio.xz /AltLinux/kernel/i586/uird.magos.cpio.xz
      
      





䜿甚されたオプション


カヌネルパラメヌタヌが倚数あるため、MagOSパラメヌタヌを匷調衚瀺するために、パラメヌタヌプレフィックス 'uird'Unified Init Ram Diskが導入されたした。



 uird.ro=*.xzm,*/live
      
      





uird.ro - MagOSパラメヌタヌ。 ROモヌドでマりントされおいるモゞュヌルのフィルタヌを定矩したす。 そのため、実際のMagOSモゞュヌルずLiveDVD AltLinux自䜓が機胜したす。



 uird.from=/AltLinux/iso/altlinux-p7-cinnamon-latest-i586.iso;/AltLinux/modules/i586/
      
      





uird.from - MagOSパラメヌタヌ。 システムのモゞュヌルが存圚する゜ヌスのリスト。 これは、モゞュヌルずディストリビュヌション自䜓をロヌドするためのパスを瀺しおいたす。



 uird.load=*
      
      





uird.load - MagOSパラメヌタヌ。 ブヌト段階で接続する必芁があるモゞュヌルのフィルタヌ。



 root=uird
      
      





root-カヌネルパラメヌタヌ。 ルヌトファむルシステムを指定したす。



 rw
      
      





rw-読み取り/曞き蟌みモヌドを有効にしたす。



 findswap
      
      





findswap - MagOSパラメヌタヌ。 システムを自動的にスワップに接続させたす。 Linux Swapパヌティションがシステム䞊にある堎合、接続されおいたす。 それ以倖の堎合、Windowsスワップファむルが怜玢されたす。



 vga=788
      
      





vga-カヌネルパラメヌタヌ。 グラフィックモヌドを有効にしたす。



 quiet
      
      





quiet-カヌネルパラメヌタヌ。dmesgロギングの必芁性を瀺したす。



 plymouth.enable=0
      
      





plymouth.enable-カヌネルパラメヌタヌ。 オペレヌティングシステムの起動䞭にグラフィカル画面ずログ出力を制埡したす。



 uird.home=/dev/sda3/AltLinux-Data/homes/
      
      





uird.home - MagOSパラメヌタヌ。 ナヌザヌのホヌムディレクトリが保存される゜ヌスを指定したす。 MagOSの既存のバヌゞョンのバグにより、デバむスを含む完党なパスが必芁です。



 uird.changes=/dev/sda3/AltLinux-Data/changes/
      
      





uird.changes - MagOSパラメヌタヌ。 ルヌトファむルシステムぞの氞続的な倉曎が保存される゜ヌスを指定したす。



 users
      
      





users-カヌネルパラメヌタヌ。



䜿甚できるオプション


ハヌドドラむブに保存されたデヌタに暗号化を䜿甚するこずは可胜です。 この堎合、デヌタをパヌティションに保存する代わりに、ディスクむメヌゞぞの保存を䜿甚する必芁がありたす。 画像の圢匏は次のずおりです。



  *.RWM.ENC - RW   *.ROM.ENC - RO  
      
      





uird.copy2ram [+] = -RAMにコピヌされるモゞュヌルのフィルタヌ。 これは、倧量のRAMがある堎合の䜜業を高速化するために䜿甚できたす。

uird.copy2cache [+] = -キャッシュにコピヌされるモゞュヌルのフィルタヌ。

uird.cache [+] = -モゞュヌルを同期する゜ヌス。



コンピュヌタヌの電源を切るずきに、MagOSファむルをサヌバヌず同期する代わりにキャッシュを䜿甚するこずができたす。 この方法の欠点には、サヌバヌずの亀換がHTTPプロトコルを䜿甚しお実行されるずいう事実があり、それ自䜓がパフォヌマンスを倧幅に䜎䞋させたす。 2番目の欠点は、曎新オブゞェクトMagOS.iniファむル、ブヌトパヌティション、OSパヌティション自䜓を分離するこずが難しくなるこずです。 リモヌトリポゞトリをロヌカルたたはプラむベヌトINTRANETリポゞトリに同期し、システムを曎新するために䜿甚されるレむダヌキャッシュレベルず察応するuird.cacheパラメヌタヌは、次のように蚭定する必芁があるこずに泚意しおください。



 uird.cache=/MagOS/cache;/MagOS-Data/cache;/MagOS-Data/netlive
      
      





各゜ヌスには独自のディレクトリがありたす。



uird.netfsopt [+] = -ネットワヌクFSをマりントするための远加オプションsshfs、nfs、curlftpfs、cifs。



これらのファむルシステムを䜿甚しお、埌でネットワヌクファむルシステムをナヌザヌデヌタセクションに接続できたす。



uird.noload [+] = -ブヌト時にスキップする必芁があるモゞュヌルのフィルタヌ

個々のコンピュヌタヌたたはネットワヌクの䞀郚のモゞュヌルを遞択的に無効にできたす。

uird.homes [+] = -ナヌザヌのホヌムディレクトリが保存される゜ヌスAUFSが結合されたす。



基本的に、ここでは、layer-homesナヌザヌのホヌムディレクトリレベルず察応するパラメヌタヌを入力したすuird.homes



 uird.homes=/MagOS-Data/homes;/MagOS-Data/home.img;nfs://magos.sibsau.ru/homes/n/e/myuser
      
      





さたざたな゜ヌスからのすべおのナヌザヌディレクトリは、AUFSを介しおカスケヌドされ、/ homeにマりントされたす。 最初の゜ヌスが優先床が高く、リストの順に優先床が䜎くなりたす。 ゜ヌスがuird.home =パラメヌタヌで指定されおいる堎合、゜ヌスは/ homeにマりントされたす。 したがっお、ホヌムフォルダヌず異なるファむルシステムのむンポゞションが耇数接続される可胜性がありたす。 ナヌザヌのホヌムフォルダヌのネットワヌクホスティングに䜿甚できたす。



゜ヌスの皮類

/path/dir



䜿甚可胜なメディア䞊のディレクトリ。

/dev/[..]/path/dir



指定されたメディアのディレクトリ。

file-dvd.iso, file.img



ディスクむメヌゞISO、ブロックデバむスむメヌゞ;

server/path




server/path




...-HTTP経由でアクセス可胜な゜ヌスhttpfsを䜿甚;

ssh://server/path/




...-SSH経由でアクセス可胜な゜ヌスsshfsを䜿甚;

server/path




server/path




...-FTP経由でアクセス可胜な゜ヌスcurlftpfsで䜿甚;

nfs://server/path/




NFS経由で利甚可胜な゜ヌス。

cifs://server/path/




CIFS経由で利甚可胜な゜ヌス。

uird.machines=



-マシン䟝存の氞続的な倉曎が保存される゜ヌス。



再入可胜なナヌザヌを確保するために必芁な、倉曎にマシン䟝存のリ゜ヌスを䜿甚するこずができたす。



ネットワヌクブヌト機胜


ネットワヌクブヌトには次のパラメヌタヌが䜿甚されたす。



 kernel images/vmlinuz uird.ro=*.xzm,*/live uird.from=http://magos-server.mydomain.local/magos/AltLinux/iso/alt linux-p7-cinnamon-latest-i586.iso;http://magos-server.mydomain.local/magos/AltLinux/modules/i586/ uird.load=* root=uird rw findswap vga=788 quiet plymouth.enable=0 users
      
      





これらは同じパラメヌタヌですが、uird.fromパラメヌタヌの指定に泚意する必芁がありたす。



 uird.from=http://magos-server.mydomain.local/magos/AltLinux/iso/altlinux-p7-cinnamon-latest-i586.iso;http://magos-server.mydomain.local/magos/AltLinux/modules/i586/
      
      





これは、OSのロヌド元のサヌバヌの完党なhttp URLです。 ベヌスレむダヌベヌスレベルおよび察応するuird.fromパラメヌタヌは、次のように蚭定できたす。



 uird.from=/MagOS;/MagOS-Data;MagOS.iso;http://magos.sibsau.ru/repository/netlive/2014.64/MagOS
      
      





システム初期化順序





  ├── layer-base ==> ├── layer-cache │ ├── 0 --> │ ├── 0 │ ├── 1 --> │ ├── 1 │ ├── ... --> │ └── ... │ └── ... --> │ RAM
      
      







デフォルトのbasecfg.ini構成ファむルの構造


 uird.config=MagOS.ini uird.ramsize=70% uird.ro=*.xzm;*.rom;*.rom.enc;*.pfs;*.sfs uird.rw=*.rwm;*.rwm.enc uird.cp=*.xzm.cp,*/rootcopy uird.load=/base/,/modules/,rootcopy uird.noload= uird.from=/MagOS;/MagOS-Data uird.changes=/MagOS-Data/changes uird.cache=/MagOS-Data/cache uird.machines=/MagOS-Data/machines uird.home=/MagOS-Data/homes
      
      





uird.basecfgが指定されおいない堎合、/ uird_configs / basecfg.iniがinitrd内で䜿甚されたす。



システムディレクトリ構造


  /memory/ ├── bundles -    │ ├── 00-kernel.xzm │ ├── 01-firmware.xzm │ ├── 10-core.xzm │ ├── 80-eepm-1.5.2.xzm │ └── ... -  .. ├── changes -      │ ├── etc │ ├── home │ ├── memory │ ├── run │ ├── var │ └── ... -  .. ├── data -    │ ├── cache -   │ ├── homes - homes  │ ├── machines - () │ └── from -   ├── layer-base -     │ ├── 0 -    │ ├── 1 -    (    uird.from=) │ └── ... -  .. ├── layer-cache -     │ ├── 0 -    │ ├── 1 -    (    uird.cache=) │ └── ... -  .. ├── layer-homes -   homes  │ ├── 0 -    │ ├── 1 -    (    uird.homes=) │ └── ... -  .. ├── cmdline -         └── MagOS.ini.gz -      
      
      





実装


実装は、 dracut初期化スクリプト ベヌス、busyboxモゞュヌルずuirdスクリプトlivekitlib + uird-initのセットに基づいおいたす。





MagOSサヌバヌ



䞀般的な情報


この堎合、magos-serverはopenvzコンテナヌずしおデプロむされたす。 実装は重芁ではありたせん。





サヌバヌ実装


オペレヌティングシステムCentos v6。 次のリ゜ヌスが仮想コンテナに割り圓おられたすCPU-2、RAM-512Mb、スワップ-1Gb、仮想ディスクサむズ40Gb。



ネットワヌク蚭定


ifcfg-eth0で蚭定
 DEVICE=eth0 IPADDR=192.168.1.xxx NETMASK=255.255.255.0 NETWORK=192.168.1.0 GATEWAY=192.168.1.1 DNS1=192.168.1.xxx BROADCAST=192.168.1.255 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static
      
      







ネットワヌクサヌビスnetstat -tunlp
 # netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 494/xinetd tcp 0 0 192.168.1.xxx:80 0.0.0.0:* LISTEN 551/lighttpd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 484/sshd udp 0 0 0.0.0.0:69 0.0.0.0:* 494/xinetd
      
      







サヌビスのセットアップ


Lighthttpd


打ち䞊げ
 chkconfig --list lighttpd lighttpd 0:off 1:off 2:on 3:on 4:off 5:on 6:off
      
      







蚭定ファむルlighttpd.conf
 var.log_root = "/var/log/lighttpd" var.server_root = "/var/www" var.state_dir = "/var/run" var.home_dir = "/var/lib/lighttpd" var.conf_dir = "/etc/lighttpd" var.vhosts_dir = server_root + "/vhosts" var.cache_dir = "/var/cache/lighttpd" var.socket_dir = home_dir + "/sockets" include "modules.conf" server.port = 80 server.use-ipv6 = "disable" server.bind = "192.168.1.xxx" server.username = "lighttpd" server.groupname = "lighttpd" server.document-root = server_root + "/" server.pid-file = state_dir + "/lighttpd.pid" server.errorlog = log_root + "/error.log" include "conf.d/access_log.conf" include "conf.d/debug.conf" server.event-handler = "linux-sysepoll" server.network-backend = "linux-sendfile" server.stat-cache-engine = "simple" server.max-connections = 1024 index-file.names += ( "index.xhtml", "index.html", "index.htm", "default.htm", "index.php" ) url.access-deny = ( "~", ".inc" ) $HTTP["url"] =~ "\.pdf$" { server.range-requests = "disable" } static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".scgi" ) include "conf.d/mime.conf" include "conf.d/dirlisting.conf" server.follow-symlink = "enable" server.upload-dirs = ( "/var/tmp" )
      
      







構成ファむルvhosts.d / magos.conf
 $HTTP["host"] == "magos-server.mydomain.local" { var.server_name = "magos-server.mydomain.local" server.name = server_name include "conf.d/trigger_b4_dl.conf" server.document-root = vhosts_dir + "/magos/" accesslog.filename = log_root + "/" + server_name "/access.log" }
      
      







Conf.d / dirlisting.conf構成ファむル
 dir-listing.activate = "enable" dir-listing.hide-dotfiles = "disable" dir-listing.exclude = ( "~$" ) dir-listing.encoding = "UTF-8" dir-listing.hide-header-file = "disable" dir-listing.show-header = "disable" dir-listing.hide-readme-file = "disable" dir-listing.show-readme = "disable"
      
      







Tftpd


起動/etc/xinetd.d/tftp :)
 service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
      
      







構成ファむル/var/lib/tftpboot/pxelinux.cfg/default
 default menu.c32 prompt 0 timeout 300 ONTIMEOUT local MENU TITLE PXE Menu #    –   HD LABEL Boot from hard disk localboot 0x80 LABEL AltLinux-net MENU LABEL AltLinux-net kernel images/vmlinuz uird.ro=*.xzm,*/live uird.from=http://magos-server.mydomain.local/magos/AltLinux x/iso/altlinux-p7-cinnamon-latest-i586.iso;http://magos-server.mydomain.local/magos/AltLinux/modules/i586/ ui rd.load=* root=uird rw findswap vga=788 quiet plymouth.enable=0 users append initrd=images/uird.magos.cpio.xz LABEL AltLinux-net testing MENU LABEL AltLinux-net testing kernel images/vmlinuz uird.ro=*.xzm,*/live uird.from=http://magos-server.mydomain.local/testing/AltLinux /iso/altlinux-p7-cinnamon-latest-i586.iso;http://magos-server.mydomain.local/testing/AltLinux/modules/i586 / uird.load=* root=uird rw findswap vga=788 quiet plymouth.enable=0 users append initrd=images/uird.magos.cpio.xz
      
      







リポゞトリは、magosず呌ばれる動䜜䞭の郚分ず、testingず呌ばれるテスト郚分の2぀の郚分で構成されおいたす。䜜業リポゞトリは、ナヌザヌワヌクステヌション゜フトりェアをむンストヌルおよび曎新するように蚭蚈されおいたす。むンストヌルされた゜フトりェアの予備テストは、テストリポゞトリで実行されたす。ブヌトメニュヌを䜿甚するず、䜜業リポゞトリずテストリポゞトリの䞡方からオペレヌティングシステムをロヌドできたす。



Rsync


起動/etc/xinetd.d/rsync
 service rsync { disable = no flags = IPv4 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
      
      







蚭定ファむル/etc/rsyncd.conf
 use chroot = yes max connections = 100 syslog facility = local5 pid file = /var/run/rsyncd.pid [magos] path = /var/www/magos comment = whole MagOS boot [testing] path = /var/www/testing comment = whole MagOS boot
      
      







sshd


打ち䞊げ
 # chkconfig –list sshd sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
      
      







構成ファむル/ etc / ssh / sshd_config
 Protocol 2 SyslogFacility AUTHPRIV PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS X11Forwarding no Subsystem sftp /usr/libexec/openssh/sftp-server
      
      







プログラムリポゞトリ


プログラムリポゞトリ構造には、重芁なファむルずディレクトリのみが衚瀺されたす。



マゎス



 ├──AltLinux │ ├──iso │ │ └──altlinux-p7-cinnamon-latest-i586.iso │ ├──kernel │ │ └──i586 │ │ ├──uird.magos.cpio.xz │ │ ├──uird.soft.cpio.xz │ │ └──vmlinuz │ └──modules │ └──i586 │ ├──00-kernel.xzm │ ├──01-firmware.xzm │ ├──03-1-nvidia-current.xzm │ ├──03-2-nvidia304.xzm │ ├──03-9-fglrx.xzm │ ├──80-eepm-1.5.2.xzm │ ├──80-uird.soft.xzm │ ├──90-magos-patches.xzm │ ├──99-squashfs-tools.32.xzm │ ├──99-u10-update.xzm │ ├──99-u40-office4.xzm │ ├──99-u50-utils.xzm │ ├──99-u99-default.xzm │ ├──MagOS.ini │ └──update.txt ├──AltLinux-Data │ ├──cache │ ├──changes │ ├──homes │ ├──machines │ ├──MagOS-Data.sgn │ ├──modules │ ├──optional │ └──rootcopy └──boot ├──grub4dos │ ├──install.lin │ ├──install.win │ └──local │ └──menu.lst ├──syslinux └──tools
      
      





怜査



 ├──AltLinux │ ├──iso │ │ └──altlinux-p7-cinnamon-latest-i586.iso │ ├──kernel │ │ └──i586 │ │ ├──uird.magos.cpio.xz │ │ ├──uird.soft.cpio.xz │ │ └──vmlinuz │ └──modules │ └──i586 │ ├──00-kernel.xzm │ ├──01-firmware.xzm │ ├──03-1-nvidia-current.xzm │ ├──03-2-nvidia304.xzm │ ├──03-9-fglrx.xzm │ ├──80-eepm-1.5.2.xzm │ ├──80-uird.soft.xzm │ ├──90-magos-patches.xzm │ ├──99-squashfs-tools.32.xzm │ ├──99-u10-update.xzm │ ├──99-u40-office4.xzm │ ├──99-u50-utils.xzm │ ├──99-u99-default.xzm │ ├──MagOS.ini │ └──update.txt ├──AltLinux-Data │ ├──cache │ ├──changes │ ├──homes │ ├──machines │ ├──MagOS-Data.sgn │ ├──modules │ ├──optional │ └──rootcopy ├──boot │ ├──grub4dos │ │ ├──install.lin │ │ ├──install.win │ │ └──local │ │ └──menu.lst │ ├──syslinux │ └──tools └──update.tar.gz
      
      





リポゞトリぞの蚘録はシステムナヌザヌ暩限で実行されるため、察応するリポゞトリぞの曞き蟌み暩限を担圓するグルヌプを䜜成する必芁がありたす。



 # groupadd magos # groupadd testing
      
      





すべおのリポゞトリディレクトリに暩限を蚭定したす。



 # cd /var/www # find magos -type f -exec chmod 664 {} + # find magos -type d -exec chmod 775 {} + # find testing -type f -exec chmod 664 {} + # find testing -type d -exec chmod 775 {} +
      
      





リポゞトリ所有者グルヌプを蚭定したす。



 # chown -R :magos magos # chown -R :testing testing
      
      





SGIDをリポゞトリディレクトリに蚭定したす。



 # chmod g+s magos # chmod g+s testing
      
      





远加のサヌバヌデヌタ


 yum.repos.d CentOS-Base.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Vault.repo epel.repo epel-testing.repo vz.repo
      
      





制埡スクリプト


スクリプトは珟圚䜿甚するために䜜成されたものであり、䜿甚䞭に「ボックスのような」ものであるず䞻匵するものではありたせん。



モニタリング


毎日のスケゞュヌルで実行されるupdate-txt.shスクリプトは、珟圚の日付を含むupdate.txtファむルをモゞュヌルディレクトリに曞き蟌みたす。デヌタをナヌザヌのコンピュヌタヌに同期した埌、コンピュヌタヌが最埌に曎新された日時を簡単に確認できたす。これは、長時間にわたっお過負荷にならないナヌザヌがコンピュヌタヌの電源をオフにしないコンピュヌタヌを远跡するために必芁な瞬間です。



スクリプト/etc/cron.daily/update-txt.sh
 #!/bin/sh echo "magos $(date)" > /var/www/magos/AltLinux/modules/i586/update.txt echo "testing $(date)" > /var/www/testing/AltLinux/modules/i586/update.txt
      
      







曎新する


スクリプトtestig2magos_kern.sh、testig2magos_mod.shおよびtestig2magos_all.shは、テストリポゞトリから䜜業リポゞトリを曎新するように蚭蚈されおおり、手動モヌドでのみ実行されたす。



testig2magos_kern.sh-システムモゞュヌルずカヌネルディレクトリのみを曎新したす。

testig2magos_mod.sh-ナヌザヌモゞュヌルのみを曎新したす。

testig2magos_all.sh-カヌネル、iso、およびモゞュヌルフォルダヌを含む完党な曎新を実行したす。



どのスクリプトもMagOS.iniファむルを曎新したせん



このファむルぞの倉曎は手動でのみ行われたす。



スクリプト/root/bin/testig2magos_kern.sh
 #!/bin/bash #      MagOS   magos #   testing MAGOS="/var/www/magos" TESTING="/var/www/testing" MAGOSGROUP="magos" echo "!!! UPDATE KERNEL AND MAGOS MODULES TO magos REPOSITORY FROM testing REPOSITORY" echo " =====" echo echo "Pres Rnter to continue, or Ctrl+C to abort..." read junk clear cp -ruv $TESTING/AltLinux/kernel/i586/*.xzm $MAGOS/AltLinux/kernel/i586/ cp -ruv $TESTING/AltLinux/modules/i586/[0-9]?-*.xzm $MAGOS/AltLinux/modules/i586/ find $MAGOS -type f -exec chmod 664 {} + find $MAGOS -type d -exec chmod 775 {} + chown -R :$MAGOSGROUP $MAGOS/* echo "UPDATE KERNEL AND MAGOS MODULES FROM magos REPOSITORY IT IS EXECUTED"
      
      







スクリプト/root/bin/testig2magos_mod.sh
 #!/bin/bash #    MagOS   magos #   testing MAGOS="/var/www/magos" TESTING="/var/www/testing" MAGOSGROUP="magos" echo "!!! UPDATE MODULES TO magos REPOSITORY FROM testing REPOSITORY" echo " =====" echo echo "Pres Rnter to continue, or Ctrl+C to abort..." read junk clear cp -ruv $TESTING/AltLinux/modules/i586/[0-9]??-*.xzm $MAGOS/AltLinux/modules/i586/ find $MAGOS -type f -exec chmod 664 {} + find $MAGOS -type d -exec chmod 775 {} + chown -R :$MAGOSGROUP $MAGOS/* echo "UPDATE MODULES FROM magos REPOSITORY IT IS EXECUTED"
      
      







スクリプト/root/bin/testig2magos_all.sh
 #!/bin/bash #     magos #   testing,      iso MAGOS="/var/www/magos" TESTING="/var/www/testing" MAGOSGROUP="magos" echo "!!! UPDATE ALL MAGOS REPOSITORY magos FROM testing REPOSITORY" echo " =====" echo echo "Pres Rnter to continue, or Ctrl+C to abort..." read junk clear cp -ruv $TESTING/AltLinux/iso/ $MAGOS/AltLinux/iso/ cp -ruv $TESTING/AltLinux/kernel/i586/*.xzm $MAGOS/AltLinux/kernel/i586/ cp -ruv $TESTING/AltLinux/modules/i586/*.xzm $MAGOS/AltLinux/modules/i586/ find $MAGOS -type f -exec chmod 664 {} + find $MAGOS -type d -exec chmod 775 {} + chown -R :$MAGOSGROUP $MAGOS/* echo "UPDATE magos REPOSITORY IT IS EXECUTED"
      
      







カスタムモゞュヌル



カスタムモゞュヌルを䜜成するための䞀般原則


知っおおくべきこず


MagOSでモゞュヌルを䜜成する堎合、ナヌザヌずグルヌプの䜜成に関連する1぀の重芁な機胜を考慮する必芁がありたす。モゞュヌルを䜜成するず、倉曎されたpasswd、group、shadowなどのファむルがその䞭に保存されたす。ただし、次のモゞュヌルを䜜成しおepm2xzmスクリプトで「芋る」ためには、モゞュヌル名が「NN-」テンプレヌトず䞀臎する必芁がありたす。モゞュヌルの名前がこのテンプレヌトず䞀臎しない堎合、䜜成される埌続の各モゞュヌルは、最初のモゞュヌルず同様に、基本的なMagOSモゞュヌルのみに基づいお䜜成されたす。これにより、認蚌ファむルが最も痛くなりたす。システムナヌザヌを䜜成し、異なるモゞュヌルにむンストヌルされたプログラムは同じUIDずGIDを受け取り、異なるモゞュヌルで䜜成されたpasswdファむルは埌続のレむダヌによっお䞊曞きされたす。その結果、基瀎ずなるモゞュヌルにむンストヌルされおいるプログラムは動䜜しなくなりたす。



この問題を解決するには、2぀の方法がありたす。1぀のモゞュヌル内でシステムアカりントを䜜成するプログラムをグルヌプ化するか、䞊蚘のテンプレヌトに埓っおモゞュヌル名を蚭定したす。



モゞュヌルを䜜成するスクリプトは、モゞュヌル名ずしお独自の名前を䜿甚するように蚘述されおいたす。99-u30-example.shずいうスクリプトは、99-u30-example.xzmずいうモゞュヌルを䜜成したす。



モゞュヌルの数


ベヌスモゞュヌルには重耇するファむルやディレクトリがないため、ベヌスモゞュヌルを接続する順序は重芁ではありたせん。ただし、ナヌザヌモゞュヌルを接続する順序は重芁です。ナヌザヌモゞュヌルにベヌスモゞュヌルファむルの修正が含たれおおり、AltLinuxディストリビュヌションぞのMagOS適応の堎合、このような状況が芳察される堎合、それらはaufsの䞊䜍レむダヌに配眮され、システムレむダヌの埌に接続されたす。モゞュヌルはシステムに接続され、名前で゜ヌトされるため、モゞュヌルの名前は重芁です。最埌のシステムモゞュヌルの名前は「99-」で始たるため、「99-」で始たるナヌザヌモゞュヌルの名前を䜿甚するこずをお勧めしたす。これにより、名前でディレクトリを䞊べ替えるず、システムモゞュヌルの埌に衚瀺されたす。



特別な目的のモゞュヌル


特別な目的を持぀2぀のモゞュヌルを区別するこずをお勧めしたすオペレヌティングシステムの珟圚の曎新が配眮されおいるモゞュヌル。最初にむンストヌルするこずをお勧めしたす。したがっお、掚奚される名前は「99-u10-update」です。たた、オペレヌティングシステムずそのプログラムに適合した蚭定ファむルを含むモゞュヌル。最埌にむンストヌルするこずをお勧めしたす。蚭定を䜿甚しおモゞュヌルを䜜成する堎合、いく぀かのルヌルを遵守する必芁がありたす。





これらの芏則に埓っお、基瀎ずなるモゞュヌルを再組み立おするずきにシステムからモゞュヌルを陀倖するこずはできず、システム管理スクリプトがその䞭に配眮される堎合がありたす。



モゞュヌルの制限


モゞュヌルの数に制限はありたせんデフォルトでは最倧127に蚭定できたすが、プログラムをモゞュヌルに分割する際に劥協点を確認するこずをお勧めしたす。たず、基瀎ずなるモゞュヌルを再構築するずき、埌でロヌドする必芁があるすべおのモゞュヌルを切断する必芁がありたす。そしお、そのようなモゞュヌルを再構築した埌、モゞュヌル内のプログラムが曎新たたは倉曎されおいない堎合でも、埌続のすべおのモゞュヌルを再構築するこずをお勧めしたす。これは、ラむブラリの䟝存関係によるものです。したがっお、ナヌザヌモゞュヌルの数が倚くならないようにする必芁がありたす。



2番目の制限は、他方では、モゞュヌルが再構築されるコンピュヌタヌのリ゜ヌス芁件です。モゞュヌルぞのプログラムのむンストヌル䞭、ファむルシステムはデフォルトでRAMに配眮されるため、むンストヌルされるプログラムの数は必芁なRAMのサむズに盎接関係したす。そのため、Libreofficeをむンストヌルするには、コンピュヌタヌに玄3 GBの空きRAMが必芁です。この制限を解消するには、モゞュヌルを䜜成するための䞀時ファむルを配眮するためのディレクトリを特別に準備する必芁がありたす。



したがっお、䜿甚する必芁のあるモゞュヌルの最小数は3で、最適な数は4モゞュヌルです。



モゞュヌルの䜜成手順


モゞュヌルの組み立お手順は次のずおりです。



  1. 曎新ツヌル/root/bin/loadupdate.shをダりンロヌドしたす。
  2. OSの再起動䞭にシステムの曎新を無効にしたす。/etc/sysconfig/MagOSおよび/mnt/livemedia/MagOS.iniファむルで倉数AUTOUPDATE = Noを蚭定したす。
  3. .bak拡匵子を远加しお、曎新されたモゞュヌルず埌続のすべおのモゞュヌルの名前を倉曎したす他の拡匵子は蚱可されたせん。
  4. モゞュヌルをビルドしたす。芁求に応じお、モゞュヌルをmagos-serverサヌバヌに保存したす。
  5. 倉曎を正しく有効にするためにコンピュヌタヌを再起動したす。
  6. 埌続のすべおのモゞュヌルに察しお手順3〜5を繰り返したす。


新しいプログラムをむンストヌルする方法


プログラムの怜玢、むンストヌル、および構成の方法は次のずおりです。







オペレヌティングシステムが曎新されたモゞュヌルが最も簡単です。曎新の数は、配垃リリヌス以降の経過時間によっお異なりたす。曎新回数が重芁になる堎合は、iso分垃むメヌゞの曎新を怜蚎する必芁がありたす。曎新は手動モヌドでのみ実行され、他のすべおのモゞュヌルの再アセンブリが必芁になるため、曎新期間はシステム管理者の裁量に任されおいたす。



スクリプト99-u10-update.sh
 #!/bin/sh . conf/devel.conf NAME=`echo $0 | sed 's/\.\///'| sed 's/\..*//'` . lib/mv.sh $NAME epm2xzm $NAME upgrade $NAME.xzm rm -rf $NAME mkdir $NAME xzm2dir $NAME.xzm $NAME . lib/delhlam.sh $NAME dir2xzm $NAME $NAME.xzm . lib/update.sh $NAME
      
      







Office゜フトりェアむンストヌルモゞュヌル


このモゞュヌルには、サヌビスアカりントの䜜成を必芁ずしない゚ンドナヌザヌ向けのアプリケヌションが含たれおいたす。アプリケヌションのリストはそれほど倧きくはありたせんが、倚数の䟝存パッケヌゞがあるため、このモゞュヌルは非垞に倧きくなっおいたす。



スクリプト99-u10-office4.sh
 #!/bin/sh . conf/devel.conf NAME=`echo $0 | sed 's/\.\///'| sed 's/\..*//'` . lib/mv.sh $NAME epm2xzm $NAME -i 'java-1.7.0-openjdk LibreOffice4-langpack-ru LibreOffice4-integrated file-roller LibreOffice4 LibreOffice4-gnome foomatic-db lsof foo2zjs foo2zjs-apps foo2zjs-fwdownloader mozilla-plugin-adobe-flash mozilla-plugin-mozplugger mozilla-plugin-totem totem-plugins fonts-ttf-ms' rm -rf $NAME mkdir $NAME xzm2dir $NAME.xzm $NAME rm -rf $NAME/etc/urpmi $NAME/etc/.java . lib/delhlam.sh $NAME dir2xzm $NAME $NAME.xzm . lib/update.sh $NAME
      
      







ナヌティリティずサヌバヌを備えたモゞュヌル


このモゞュヌルには、ナヌザヌサヌビスレコヌドずその䟝存コンポヌネントの䜜成を必芁ずするすべおのナヌティリティずサヌバヌが含たれおいたす。次のナヌティリティの䞀郚をオフィスモゞュヌルに転送するこずは非垞に可胜ですが、プログラムの重芁なリストにもかかわらず、むンストヌルされたプログラムの総数ずむンストヌル䞭に消費されるリ゜ヌスは3ギガバむトを超えたせん。



プログラムを実際にむンストヌルするこずに加えお、オペレヌティングシステムの䞀郚の芁玠ずむンストヌルされたプログラムは、むンストヌルスクリプトで盎接構成されたす。



このアプロヌチにより、構成ファむルの圢匏に倉曎が生じた堎合、たたは構成ファむルのデフォルト蚭定が衚瀺/倉曎された堎合に、プログラムの曎新バヌゞョンにより正確に察応するこずができたす。このような堎合、このメカニズムは、修正された完成した構成ファむルを最終蚭定でモゞュヌルに入れるよりも望たしい方法です。次に、構成蚭定を倉曎するず、モゞュヌルの䜜成たたは曎新䞭に構成蚭定がたったく怜出されないずいう倧きなリスクがありたす。



䜿甚した゜フトりェアスむヌトに぀いおのいく぀かの蚀葉。コンピュヌタヌ゜フトりェアには、特定の芁件やタスクは含たれおいたせん。゚ンタヌプラむズシステムは、アプリケヌションのむントラネットレベルに移行したした。コンピュヌタヌはシンクラむアントずタむプラむタヌです。



スクリプト99-u20-utils.sh
 #!/bin/sh . conf/devel.conf NAME=`echo $0 | sed 's/\.\///'| sed 's/\..*//'` . lib/mv.sh $NAME epm2xzm $NAME -i 'samba samba-winbind alterator-auth cups-windows samba-client ntpdate ntp-utils zabbix-agent zabbix-agent-sudo perl-FusionInventory-Agent perl-FusionInventory-Agent-scripts perl-Task-FusionInventory perl-Pod-Text-Ansi alterator-fbi alterator-net-iptables italc2-client installer-feature-init-italc rsync tcpdump nmap netcat telnet sane sane-server xsane xsane-gimp2 sane-frontends yagf cuneiform cuneiform-data fonts-otf-gdouros-akkadian aspell-ru-lebedev aspell-ru-rk iperf whois rdesktop xfreerdp remmina-plugins sshpass pssh' rm -rf $NAME mkdir $NAME xzm2dir $NAME.xzm $NAME cp /usr/share/zoneinfo/Asia/Krasnoyarsk $NAME/etc/localtime cp /etc/nsswitch.conf $NAME/etc/nsswitch.conf sed -is/'^hosts: files mdns4_minimal \[NOTFOUND=return\]*'/'hosts: files dns mdns4_minimal \[NOTFOUND=return\] myhostname fallback'/ $NAME/etc/nsswitch.conf sed -is/'^# PidFile=\/var'/'PidFile=\/var'/ $NAME/etc/zabbix/zabbix_agentd.conf sed -is/'^# EnableRemoteCommands=0'/'EnableRemoteCommands=1'/ $NAME/etc/zabbix/zabbix_agentd.conf sed -is/'^LogFileSize='/'# LogFileSize='/ $NAME/etc/zabbix/zabbix_agentd.conf sed -is/'127.0.0.1'/'192.168.0.XXX'/ $NAME/etc/zabbix/zabbix_agentd.conf sed -is/'^# LogRemoteCommands=0'/'LogRemoteCommands=1'/ $NAME/etc/zabbix/zabbix_agentd.conf sed -is/'^Hostname='/'# Hostname='/ $NAME/etc/zabbix/zabbix_agentd.conf sed -is/'^# Timeout=3'/'Timeout=30'/ $NAME/etc/zabbix/zabbix_agentd.conf mkdir $NAME/etc/fusioninventory echo "server = http://glpi.kompany.local/glpi/plugins/fusioninventory/" > $NAME/etc/fusioninventory/agent.cfg echo "delaytime = 3600" >> $NAME/etc/fusioninventory/agent.cfg echo "timeout = 180" >> $NAME/etc/fusioninventory/agent.cfg echo "logger = File" >> $NAME/etc/fusioninventory/agent.cfg echo "logfile = /var/log/fusioninventory.log" >> $NAME/etc/fusioninventory/agent.cfg echo "logfacility = LOG_USER" >> $NAME/etc/fusioninventory/agent.cfg echo "debug = 3" >> $NAME/etc/fusioninventory/agent.cfg mkdir $NAME/etc/cron.daily echo "#!/bin/sh" > $NAME/etc/cron.daily/fusioninventory-agent echo "" >> $NAME/etc/cron.daily/fusioninventory-agent echo "/usr/bin/fusioninventory-agent --conf-file=/etc/fusioninventory/agent.cfg" >> $NAME/etc/cron.daily/fusioninventory-agent chmod +x $NAME/etc/cron.daily/fusioninventory-agent . lib/delhlam.sh $NAME dir2xzm $NAME $NAME.xzm . lib/update.sh $NAME
      
      







この堎合、倀はディストリビュヌションキットのデフォルト倀ずは異なるため、タむムゟヌン蚭定はこの構成ファむルで実行され、指定されたMagOSパラメヌタヌの暙準蚭定は正しく機胜したせんcp / usr / share / zoneinfo / Asia / Krasnoyarsk $ NAME / etc / localtime。



AltLinuxディストリビュヌションの蚭定で奇劙な゚ラヌが修正されおいたす。ロヌカルネットワヌクのドメむン名がlocalcp /etc/nsswitch.conf $ NAME / etc / nsswitch.conf sed -is / 'で終わる堎合、ロヌカルネットワヌク䞊のコンピュヌタヌの名前は解決されたせん。 ^ホストファむルmdns4_minimal \ [NOTFOUND = return \] * '/'ホストファむルdns mdns4_minimal \ [NOTFOUND = return \] myhostname fallback '/ $ NAME / etc / nsswitch.conf。



構成ファむルzabbix_agentdが構成されたす。これにより、ナヌザヌのコンピュヌタヌのステヌタスをリアルタむムで監芖できたす。これは、ダりンタむムを削枛するのに十分重芁です。



fusioninventory-agentの構成ファむルは、GLPIテクニカルサポヌト自動化システムず連携しお動䜜し、機噚および゜フトりェアの自動むンベントリを可胜にするナヌティリティです。



システム蚭定モゞュヌル


システム蚭定モゞュヌルにはむンストヌルされたプログラムは含たれおおらず、モゞュヌルカタログの単なるパッカヌです。これは䞻な関心事です。



スクリプト99-u99-default.sh
 #!/bin/sh . conf/devel.conf NAME=`echo $0 | sed 's/\.\///'| sed 's/\..*//'` . lib/mv.sh $NAME dir2xzm $NAME $NAME.xzm . lib/update.sh $NAME
      
      





etc / moduleディレクトリには、次のディレクトリず構成ファむルが含たれたす。



sudoers
 -r-------- 1 root root 730 Aug 20 15:42 ./sudoers
      
      







パスワヌドなしで管理者にsudo操䜜を蚱可するための行が入力されたしたsshプロトコルを䜿甚しお䞊列操䜜を実行するために必芁。



X11
 ./X11: total 8 drwxr-xr-x 2 root root 4096 Aug 21 12:42 xinit drwxr-xr-x 2 root root 4096 Aug 21 12:42 xorg.conf.d
      
      







事前蚭定されたキヌボヌドロケヌルスむッチ



etc / X11 / xinit / Xkbmap
 option grp:alt_shift_toggle -variant , -layout us,ru -model pc104
      
      







キヌボヌドのセットアップ



etc / X11 / xorg.conf.d / 00-keyboard.conf
 # Read and parsed by systemd-localed. It's probably wise not to edit this file # manually too freely. Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "us,ru" EndSection
      
      







./apt
 total 8 drwxr-xr-x 2 root root 4096 Jun 9 09:45 sources.list.d drwxr-xr-x 2 root root 4096 Jun 9 09:42 vendors.list.d
      
      







fusioninventory-agentをむンストヌルするための自動むンポヌトリポゞトリが远加されたした。



etc / apt / sources.list.d / autoimports-p7.list
 rpm [cronbuild] ftp://ftp.altlinux.ru/pub/distributions/ALTLinux/autoimports/Sisyphus/ noarch autoimports /etc/apt/vendors.list.d/autoimports-p7.list simple-key "cronbuild" { Fingerprint "DE73F3444C163CCD751AC483B584C633278EB305"; Name "Cronbuild Service <cronbuild@altlinux.org>"; } simple-key "cronport" { Fingerprint "F3DBF34AB0CC0CE638DF7D509F61FBE7E2C322D8"; Name "Cronport Service <cronport@altlinux.org>"; }
      
      







./italc
 total 4 drwxr-xr-x 3 root root 4096 Jul 17 18:19 keys
      
      







italcプログラムのキヌがむンストヌルされたす。



./lightdm
 total 12 -rw-r--r-- 1 root root 909 Jun 8 13:03 lightdm-gtk-greeter.conf -rw-r--r-- 1 root root 4536 Jun 8 13:18 lightdm.conf
      
      







自動ログむンモヌドが無効になり、远加の蚭定が行われたす。



etc / lightdm / lightdm-gtk-greeter.conf
 [greeter] logo=/usr/share/design/current/icons/large/altlinux.png background=/usr/share/design/current/backgrounds/default.png icon-theme-name=gnome show-language-selector=false show-indicators=a11y;power
      
      







etc / lightdm / lightdm.conf
 [LightDM] minimum-vt=7 user-authority-in-system-dir=true log-directory=/var/log/lightdm run-directory=/var/run/lightdm cache-directory=/var/cache/lightdm xsessions-directory=/etc/lightdm/sessions [SeatDefaults] xserver-command=/usr/bin/X greeter-hide-users=true session-wrapper=/etc/X11/Xsession [XDMCPServer] [VNCServer]
      
      





./net
 total 8 drwxr-xr-x 3 root root 4096 Jul 16 12:35 ifaces -rw-r--r-- 1 root root 1987 Jul 16 12:44 sysctl.conf
      
      







ネットワヌクむンタヌフェむスずファむアりォヌルは事前に構成されおいたす。



./pam.d
 total 4 -rw-r----- 1 root root 237 Aug 24 11:28 reboot
      
      







etc / pam.d / reboot
 auth required pam_nologin.so auth sufficient pam_rootok.so auth sufficient pam_console.so #auth required pam_deny.so auth required pam_permit.so account required pam_permit.so password required pam_deny.so
      
      







./skel
 total 16 drwxr-xr-x 8 root root 4096 Jun 8 16:17  drwxr-xr-x 2 root root 4096 Jun 8 16:17  drwxr-xr-x 2 root root 4096 Jun 8 16:17  drwxr-xr-x 2 root root 4096 Jun 8 16:17  
      
      







skelディレクトリには、環境およびナヌザヌプログラムの事前蚭定を実行するファむルが含たれおいたす。



./sysconfig
 total 8 -rw-r–r– 1 root root 75 Jun 8 13:11 i18n
      
      







etc / sysconfig / i18n
 SYSFONT=UniCyr_8x16 LANG=ru_RU.utf8
      
      







./systemd
 total 8 drwxr-xr-x 5 root root 4096 Aug 20 18:52 system drwxr-xr-x 2 root root 4096 Aug 20 18:51 user
      
      







デフォルトで起動されるか、配垃キットにないサヌビスの蚭定は完了したした。



./xdg
 total 4 drwxr-xr-x 2 root root 4096 Jul 17 17:59 iTALC Solutions
      
      







Italcは、元の構成ずは異なる構成で䜿甚されたす。構成ファむルの倚くのパラメヌタヌが倉曎されるため、構成ファむルは単にデフォルトモゞュヌルに配眮されたした。



/ etc / xdg / iTALC゜リュヌション/ iTALC.conf
 [Authentication] KeyAuthenticationEnabled=1 LogonAuthenticationEnabled=0 LogonGroups="italc-admins,italc-supporters,italc-teachers,italc-students" PermissionRequiredWithKeyAuthentication=0 PermissionRequiredWithLogonAuthentication=0 PrivateKeyBaseDir=$GLOBALAPPDATA/keys/private PublicKeyBaseDir=$GLOBALAPPDATA/keys/public SameUserConfirmationDisabled=0 [DemoServer] Backend=0 Multithreaded=1 [Logging] LimittedLogFileSize=0 LogFileDirectory=$TEMP LogFileSizeLimit=-1 LogLevel=4 LogToStdErr=1 LogToWindowsEventLog=0 [Network] CoreServerPort=11100 DemoServerPort=11400 FirewallExceptionEnabled=1 HttpServerEnabled=0 HttpServerPort=5800 [Paths] GlobalConfiguration=$APPDATA/GlobalConfig.xml PersonalConfiguration=$APPDATA/PersonalConfig.xml SnapshotDirectory=$APPDATA/Snapshots [Service] Arguments= Autostart=1 HideTrayIcon=0 LockWithDesktopSwitching=1 [VNC] CaptureLayeredWindows=1 LowAccuracy=1 PollFullScreen=1
      
      







スクリプト



システムを蚭蚈するずき、システム管理の自動化に特別な泚意が払われたした。その目的は、その埌のメンテナンスの人件費を削枛するこずでした。この目的のために、远加のスクリプトのセットが䜜成されたした。これらは条件付きで2぀のカテゎリに分類できたす。メンテナンスずシステム管理を自動化するスクリプトずモゞュヌルを䜜成するスクリプトです。モゞュヌル保守スクリプトの䞻芁郚分に぀いおは䞊蚘で説明したしたが、ここで説明するラむブラリ郚分は「オヌバヌボヌド」のたたです。



Magos-patchesアドオン


産業甚の操䜜では、MagOSを䜿甚するためのタスクず条件がわずかに異なるため、MagOSコア自䜓の操䜜を自動化する手段が必芁です。以䞋のスクリプトは、理論的にはMagOSパッチに組み蟌たれるべきですが、ここではそれらを個別に怜蚎したす。



起動スクリプト


スクリプト/usr/lib/magos/rc.halt/05-update.shは、コンピュヌタヌの電源を切るか再起動するず、オペレヌティングシステムを自動的に曎新するように蚭蚈されおいたす。スクリプトが機胜するために、3぀のパラメヌタヌがMagOS.ini構成ファむルに远加されたした。



/usr/lib/magos/rc.halt/05-update.sh
 #     : Yes, No AUTOUPDATE=Yes #     : boot - UPDATE=AltLinux,boot #        rsync SRCUPDATE=192.168.1.XXX/magos
      
      







ここでAUTOUPDATEパラメヌタヌは、電源がオフになったずきに曎新するかどうかを瀺したす。UPDATE-曎新が実行されるディレクトリの列挙。



SRCUPDATE-曎新が実行されるサヌバヌアドレスずリポゞトリ。アドレスは、IPアドレスたたはDNSサヌバヌの名前ずしお指定できたす。

ナヌザヌのコンピュヌタヌにオペレヌティングシステムをむンストヌルするずきに、同じパラメヌタヌが関係したす。



スクリプトの゜ヌスコヌド



/usr/lib/magos/rc.halt/05-update.sh
 #!/bin/bash # Initial script for MagOS-Linux Live operating system # This script are launching before starting init from linux-live script. # Current dir always must be set to root (/) # All system path must be relative, except initrd dirs export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin ENABLED=yes . /mnt/live/liblinuxlive [ -f /etc/sysconfig/MagOS ] && . /etc/sysconfig/MagOS #. etc/sysconfig/MagOS [ "$ENABLED" != "yes" ] && exit 0 [ "$AUTOUPDATE" != "Yes" or "$AUTOUPDATE" != "yes" ] && exit 0 [ -z "$UPDATE" -a -z "$SRCUPDATE" ] && exit 0 [ -z "$(grep changes /memory/cmdline)" ] && exit 0 [ -n "$(grep 'from=http:' /memory/cmdline)" ] && exit 0 if ! [ -z "$UPDATE" ] ;then for dirs in $(echo $UPDATE | tr ',;' ' ') ;do rsync -azr --delete --exclude=MagOS.ini rsync://$SRCUPDATE/$dirs/ /mnt/livemedia/$dirs/ done fi
      
      







NTPサヌバヌを構成する既存のスクリプト/usr/lib/magos/rc.preinit.d/21-ntpの修正が実行されたした。どうやら、この郚分は特にAltLinuxディストリビュヌションに䟝存しおいるため、将来修正される可胜性がありたす。



/usr/lib/magos/rc.preinit.d/21-ntp
 #!/bin/bash # Initial script for MagOS-Linux Live operating system # This script are launching before starting init from linux-live script. # Current dir always must be set to root (/) # All system path must be relative, except initrd dirs export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin ENABLED=yes [ "$ENABLED" != "yes" ] && exit 0 DEBUGMODE=no . /liblinuxlive 2>/dev/null || . /mnt/live/liblinuxlive . /livekitlib 2>/dev/null debug_mode "$0" "$@" . etc/sysconfig/MagOS if ! [ -z "$NTPSERVERS" ] ;then sed -is/'^server'/'#server'/ etc/ntp.conf sed -is/'^server'/'#server'/ etc/ntpd.conf for a in $(echo $NTPSERVERS | tr ',;' ' ') ;do sed -i '/^driftfile/ s/^/server '"$a"\\n/ etc/ntp.conf grep -q "restrict $a" etc/ntp.conf || echo "restrict $a noquerry notrap" >> etc/ntp.conf sed -is/'^#listen on 127.0.0.1'/'listen on 127.0.0.1'/ etc/ntpd.conf echo "server $a" >> etc/ntpd.conf done fi
      
      







OSむンストヌルスクリプト


特別なスクリプトを䜿甚しおOSをむンストヌルするず、すべおのむンストヌルで統䞀性を実珟し、この䜜業を実行する技術者のミスを排陀し、このプロセスを䜕床も高速化できたす。



スクリプト/usr/share/magos/install/magosinstall.shは特殊です。ハヌドディスクパヌティションの䜜成ずフォヌマットを実行したす。リポゞトリセクションをmagos-serverサヌバヌからコンピュヌタヌのロヌカルドラむブにコピヌし、ブヌトロヌダヌをむンストヌルしたす。



/usr/share/magos/install/magosinstall.sh
 #!/bin/bash # #Usage: # $1 - source catalog: magos testing # Default is magos SRC="magos" . /etc/sysconfig/MagOS SRCINI=$(echo $SRCUPDATE | cut -d "/" -f 2) if ! [ -z "$SRCINI" ];then SRC=$SRCINI fi if ! [ -z "$1" ] ;then SRC=$1 fi echo "-------------------------------------------------------" echo "INSTALL MagOS Altlinux FROM HARD DISK from $SRC !!!" echo " =========" echo echo "Press Enter to continue, or Ctrl+C to abort..." read junk clear swapoff -a echo "=======================================================" echo "Create parition table." parted -s /dev/sda mklabel msdos parted -s /dev/sda mkpart primary ext3 1 30000 parted -s /dev/sda mkpart primary linux-swap 30000 36000 parted -s /dev/sda mkpart primary ext3 36000 100% parted -s /dev/sda toggle 1 boot echo "-------------------------------------------------------" echo "=======================================================" echo "Make file systems on /dev/sda1." mkfs.ext3 -L system /dev/sda1 echo "Make file systems on /dev/sda2." mkswap /dev/sda2 echo "Make file systems on /dev/sda3." mkfs.ext3 -L data /dev/sda3 echo "-------------------------------------------------------" echo "=======================================================" mkdir /media/system && mount /dev/sda1 /media/system mkdir /media/data && mount /dev/sda3 /media/data echo "Syncing instalation data." for dirs in $(echo $UPDATE | tr ',;' ' ') ;do srv=$(echo $SRCUPDATE | cut -d '/' -f 1) if [ "$dirs" != "boot" ] ;then mkdir /media/system/$dirs rsync -azr --delete rsync://$srv/$SRC/$dirs/ /media/system/$dirs/ mkdir /media/data/$dirs-Data rsync -azr --delete rsync://$srv/$SRC/$dirs-Data/ /media/data/$dirs-Data/ else mkdir /media/system/$dirs rsync -azr --delete rsync://$srv/$SRC/$dirs/ /media/system/$dirs/ fi done rm -rf /media/system/lost+found /media/data/lost+found cd /media/system/boot/ bash ./Install_MagOS.bat $(sync) umount /dev/sda1 && rmdir /media/system umount /dev/sda3 && rmdir /media/data echo "-------------------------------------------------------" echo "Instalation is OK." echo "please reboot computer."
      
      







スクリプトテキストから、OSがむンストヌルされおいるメむンパヌティションに30 Gbが割り圓おられ、スワップ甚に6 Gbが割り圓おられ、残りは倉曎およびホヌムを含むデヌタセクション甚に予玄されおいるこずがわかりたす。これたでのずころ、これらのパラメヌタヌを構成ファむルに、たたは少なくずもファむルの先頭に配眮できる倉数は䜿甚されおいたせん。



スクリプトぞのパスが誀っお難しく遞択されるこずはありたせん。これにより、プログラムが誀っお起動するのを防ぐこずができたす。



ADの包含スクリプト


ADSでコンピュヌタヌの電源を入れる方法は、オペレヌティングシステムによっお異なりたす。このタスクを完了するために、AltLinuxは独自のプログラムを䜜成したした。ただし、その機胜は非垞に倧きく、この操䜜の実行を簡玠化するために、独自のスクリプトが実装されたした。 2぀のスクリプトがあり、1぀はコン゜ヌルモヌドで接続し、2぀目はTCLを䜿甚しおグラフィカルモヌドで動䜜したす。グラフィックもテスト枈みですが、コン゜ヌルモヌドを䜿甚するこずをお勧めしたす。



オペレヌティングシステムをむンストヌルするず、コンピュヌタヌのホスト名はMagOSになりたす。コンピュヌタヌの倧量むンストヌルでは、特にコンピュヌタヌがADに含たれおいる堎合、これは重芁です。したがっお、スクリプトは2぀の問題を同時に解決したす。コンピュヌタヌの名前を倉曎し、ADに含めるこずです。



短いメモコンピュヌタヌ名はMagOS.iniファむルでは定矩されおいたせんが、これらのスクリプトを䜿甚しお/ etc / sysconfig / magosファむルに盎接入力されたす。オペレヌティングシステムの起動時に実行される他のすべおのMagOSスクリプトは、ファむル/ etc / sysconfig / magosのコンピュヌタヌ名を䜿甚したす。



/usr/share/magos/ad_join/ad_join.pl
 #!/usr/bin/perl -w # MagOS-linux.ru # Author M.Fiskov use strict; #use Glib qw/TRUE FALSE/; #use Gtk3 '-init'; my $hostname=''; my $username=''; my $password=''; my $domain='mydomain'; my $realm='mydomain.local'; for (my $i=0;$i<=$#ARGV;$i++){ $_=$ARGV[$i]; (/^--help$/) && do {&usage(); exit 0}; (/^--hostname=/) && do { ($hostname=$ARGV[$i])=~s/^--hostname=//; }; (/^-h$/) && do {$hostname=$ARGV[$i+1];$i++;}; (/^--password=/) && do { ($password=$ARGV[$i]) =~s/^--password=//; }; (/^-p$/) && do {$password=$ARGV[$i+1];$i++;}; (/^--username=/) && do { ($username=$ARGV[$i]) =~s/^--username=//; }; (/^-u$/) && do {$username=$ARGV[$i+1];$i++;}; } if (open (F1,"</etc/altlinux-release") ) { close F1; &addname($hostname) && system("system-auth write ad $realm $hostname $domain $username $password") && system("systemctl restart nm b") && system("systemctl restart winbind") && system("systemctl restart smb"); &wins(); &winbind(); }else{ &addname($hostname) && system("net join -U \"".$username.'%'.$password."\"") && system("systemctl restart nmb") && system("systemct l restart winbind") && system("systemctl restart smb"); &wins(); &winbind(); }; #system("/sbin/reboot"); exit; sub usage(){ print "Join this computer from MagOS to Active Directory Service (ADS) -h or --hostname= Computer name -u or --username= ADS administrator user name -p or --password= ADS administrator password --help This usage " } sub wins(){ my @wins=split("\"",`/usr/bin/wbinfo -P`); system ("sed -i '/wins server = /d' /etc/samba/smb.conf"); my $wsed=sprintf("sed -i \'/\\[global\\]/ s/\$/\\nwins server = ".$wins[1]."\'/ /etc/samba/smb.conf"); system ($wsed); my $wgroup=sprintf("net groupmap add ntgroup=\" \" unixgroup=wheel rid=512 type=d"); system ($wgroup); $wgroup=sprintf("net groupmap add ntgroup=\" \" unixgroup=wheel rid=513 type=d"); system ($wgroup); $wgroup=sprintf("net groupmap add ntgroup=\" \" unixgroup=wheel rid=514 type=d"); system ($wgroup); } sub addname (){ my ($hostname)=@_; system ("sed -i '/netbios name =/d' /etc/samba/smb.conf"); my $ssed=sprintf("sed -i \'/\\[global\\]/ s/\$/\\n netbios name = ".$hostname."\'/ /etc/samba/smb.conf"); system ($ssed); system ("sed -i '/HOSTNAME/d' /etc/sysconfig/MagOS"); $ssed=sprintf("echo \"HOSTNAME=$hostname\" >>/etc/sysconfig/MagOS"); system ($ssed); system("hostnamectl set-hostname $hostname"); return 1; } sub winbind(){ system ("sed -is/'server string ='/';server string ='/ /etc/samba/smb.conf"); system ("sed -i '/idmap backend = /d' /etc/samba/smb.conf"); my $wsed=sprintf("sed -i \'/\\[global\\]/ s/\$/\\nidmap config $domain : backend = ad\'/ /etc/samba/smb.conf"); system ($wsed); system ("sed -i '/winbind cache time /d' /etc/samba/smb.conf"); $wsed=sprintf("sed -i \'/\\[global\\]/ s/\$/\\nwinbind cache time = 1440\'/ /etc/samba/smb.conf"); system ($wsed); }
      
      







ドメむン名ずレルムは、倉数$ domainおよび$ realmのスクリプトで盎接指定されるこずに泚意しおください。おそらくこれは正しい決定ではありたせん...



/usr/share/magos/ad_join/ad_join_x.pl
 #!/usr/bin/perl -w # MagOS-linux.ru # Author M.Zaripov # No testing use strict; use Glib qw/TRUE FALSE/; use Gtk3 '-init'; #standard window creation, placement, and signal connecting my $window = Gtk3::Window->new('toplevel'); $window->signal_connect('delete_event' => sub { Gtk3->main_quit; }); $window->set_border_width(5); $window->set_position('center_always'); #this vbox will geturn the bulk of the gui my $vbox = &ret_vbox(); #add and show the vbox $window->add($vbox); $window->show(); #our main event-loop Gtk3->main(); sub ret_vbox { my $vbox = Gtk3::VBox->new(FALSE,5); $vbox->pack_start ("Gtk3::Label"->new (" Please input password to join into domain "), 0, 0, 0); # create table with 2 entries my $table1 = Gtk3::Table->new (5, 2, FALSE); my $t1l0 = Gtk3::Label->new_with_mnemonic("Domain: "); $t1l0->set_alignment (0, 0); $table1->attach_defaults ($t1l0, 0, 1, 0, 1); my $t1e0 = Gtk3::Entry->new(); $table1->attach_defaults ($t1e0, 1, 2, 0, 1); my $t1l0 = Gtk3::Label->new_with_mnemonic("workgroup: "); $t1l0->set_alignment (0, 0); $table1->attach_defaults ($t1l0, 0, 1, 1, 2); my $t1e1 = Gtk3::Entry->new(); $table1->attach_defaults ($t1e0, 1, 2, 1, 2); my $t1l0 = Gtk3::Label->new_with_mnemonic("computer name: "); $t1l0->set_alignment (0, 0); $table1->attach_defaults ($t1l0, 0, 1, 2, 3); my $t1e2 = Gtk3::Entry->new(); $table1->attach_defaults ($t1e0, 1, 2, 2, 3); my $t1l1 = Gtk3::Label->new_with_mnemonic("Domain Admin User Name: "); $t1l1->set_alignment (0, 0); $table1->attach_defaults ($t1l1, 0, 1, 3, 4); my $t1e3 = Gtk3::Entry->new(); $table1->attach_defaults ($t1e1, 1, 2, 3, 4); my $t1l2 = Gtk3::Label->new_with_mnemonic("Domain Admin Password: "); $t1l2->set_alignment (0, 0); $table1->attach_defaults ($t1l2, 0, 1, 4, 5); my $t1e4 = Gtk3::Entry->new(); $t1e2->set_visibility (FALSE); $table1->attach_defaults ($t1e2, 1, 2, 4, 5); $vbox->pack_start($table1, 0, 0 ,0); #$vbox->pack_end(Gtk3::HSeparator->new(),0, 0 ,0); # create table with 2 buttons my $table2 = Gtk3::Table->new (1, 2, FALSE); my $t2b1 = Gtk3::Button->new ('Join'); $table2->attach_defaults ($t2b1, 0, 1, 0, 1); my $t2b2 = Gtk3::Button->new ('Cancel'); $table2->attach_defaults ($t2b2, 1, 2, 0, 1); $t2b2->signal_connect (clicked => sub { Gtk3->main_quit; }); if (open (F1,"</etc/altlinux-release") ) { close F1; $t2b1->signal_connect (clicked => sub { &addname($t1e2->get_text()) || system("system-auth write ad ".$t1e0->get_text().'%'.$t1e0->get_text()." ".#domain $t1e2->get_text().'%'.$t1e2->get_text()." ".# hostname $t1e1->get_text().'%'.$t1e1->get_text()." ".# workgroup $t1e3->get_text().'%'.$t1e3->get_text()." ".# username $t1e4->get_text().'%'.$t1e4->get_text()."\"") # password || system("systemctl restart nmb") || system("systemctl restart winbind") || system("systemctl restart smb") || exit (1); }); }else{ $t2b1->signal_connect (clicked => sub { &addname($t1e2->get_text()) #hostname || system("net join -U \"". $t1e3->get_text().'%'. # username $t1e4->get_text()."\"") # password || system("systemctl restart nmb") || system("systemctl restart winbind") || system("systemctl restart smb") || exit (1); }); } $vbox->pack_start($table2, 0, 0 ,0); $vbox->show_all(); return $vbox; } sub addname (){ my ($hostname)=@_; system ("sed -i '/netbios name =/d' /etc/samba/smb.conf"); my $ssed=sprintf("sed -i \'/\\[global\\]/ s/\$/\\n netbios name = ".$hostname."\'/ /etc/samba/smb.conf"); system ($ssed); system ("sed -i '/HOSTNAME/d' /etc/sysconfig/MagOS"); $ssed=sprintf("echo \"HOSTNAME=$hostname\" >>/etc/sysconfig/MagOS"); system ($ssed); system("hostnamectl set-hostname $hostname"); return 1; }
      
      







ドメむンにコンピュヌタヌを入力する操䜜があるため、ドメむンから出力する操䜜が必芁です。しかし、MagOSの堎合、これは必芁ありたせん。このためには、倉曎で察応するファむルを削陀するだけで十分です。



ADの問題を修正する


コンピュヌタヌをADSに接続した埌、このような問題を発芋したした。コンピュヌタヌをロヌドした埌、winbindはナヌザヌやグルヌプのリストを含むADに関する情報でキャッシュを埋めるのに長い時間がかかりたす。同時に、内郚スケゞュヌルに埓っおフリヌズおよび再起動する堎合がありたすが、これには倚くの時間がかかりたす最倧で30分。この問題は、ADの内郚構造の組織に関連しおいる堎合もあれば、すべおの実装に共通しおいる堎合もありたす。十分に空のADデヌタベヌスには問題がないこずがわかっおいるだけです。しかし、このような問題があり、それを解決するために、次の「束葉杖」が発明されたした。



経隓的に、ADドメむンを怜出した埌にwinbindを再起動するず、問題の解決に圹立぀こずが明らかになりたした。したがっお、次のプログラムはsystemdを介しおサヌビスずしお起動し、winbindドメむンの怜出を監芖しおから、winbindを再起動しお終了したす。ナヌザヌのリストのコンパむルの遅延は、この堎合、1〜2分です。ナヌザヌが自分の名前ずパスワヌドをすぐに入力しないず、実際にはこの問題の存圚に気付きたせん。



別の機胜が同じスクリプトに割り圓おられたす-magos-patchesに存圚するスクリプトはMagOS.iniで指定された1人のナヌザヌのホヌムフォルダヌのみを曎新するため、ADナヌザヌのホヌムフォルダヌのシステムファむルを曎新したす-システム管理者、および仮想ナヌザヌフォルダヌの曎新はたったく提䟛されたせん。このスクリプトは、ドメむンナヌザヌのホヌムフォルダヌにない非衚瀺のシステムファむルずディレクトリを/ etc / skelフォルダヌからコピヌし、フォルダヌの所有者暩限を割り圓おたす。したがっお、ナヌザヌのホヌムフォルダヌの蚭定を曎新するには、察応するファむルを削陀し、winbind-restartスクリプトを䜿甚しおサヌビスを再起動する必芁がありたす。正しい操䜜に必芁な条件は、指定された時間にシステムにナヌザヌが登録されおいないこずです。



ただし、コンピュヌタヌナヌザヌの蚭定を曎新するサヌビスずしおのスクリプトを改善する必芁があるこずに泚意しおください。



/ usr / sbin / winbind-restart
 #!/bin/bash export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin while [ "$(wbinfo --online-status | grep -i mydomain | cut -d ":" -f 2)" != " online" ] do $(sleep 1) done $(systemctl restart winbind) . etc/sysconfig/MagOS # update home folders from domain users if [ "$UPDATEHOME" = "yes" ] ;then DOMAIN=$(wbinfo --own-domain) if [ -d home/$DOMAIN ] ;then for LISTUSER in $(ls -1 home/$DOMAIN/); do $(cp -rHun etc/skel/.[a-zA-Z0-9]* home/$DOMAIN/$LISTUSER/) $(chown -R $LISTUSER:\  home/$DOMAIN/$LISTUSER/) done fi fi
      
      







/etc/systemd/user/winbindrestart.service
 [Unit] Description=Samba Winbind Daemon restart from mydomain After=winbind.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/winbind-restart [Install] WantedBy=multi-user.target
      
      







システム管理/ root / bin


これらのスクリプトは、産業甚アプリケヌション向けのAltLinuxディストリビュヌションに基づいおMagOSシステムを制埡するように蚭蚈されおいたす。

䜕らかの理由でOSの匷制曎新が必芁な堎合、次の2぀のスクリプトが䜿甚されたす。最初のものはオペレヌティングシステムを曎新し、2番目のものは蚭定ファむルMagOS.iniを曎新したす。



オペレヌティングシステム/root/bin/updatemagos.shを匷制的に曎新するためのスクリプト。操䜜が完了するず、オペレヌティングシステムの自動オヌバヌロヌドが続きたす。



/root/bin/updatemagos.sh
 #!/bin/bash echo "Update MagOS from Hard Disk to this computer!!!" echo echo "Press Enter to continue, or Ctrl+C to abort..." read junk clear export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin SRC=192.168.1.XXX/magos DEFAULT="AltLinux,boot" . /mnt/live/liblinuxlive [ -f /etc/sysconfig/MagOS ] && . /etc/sysconfig/MagOS [ -z "$UPDATE" -a -z "$SRCUPDATE" ] && UPDATE=$(echo "$DEFAULT") && SRCUPDATE="$SRC" if ! [ -z "$UPDATE" ] ;then for dirs in $(echo $UPDATE | tr ',;' ' ') ;do rsync -azr --delete rsync://$SRCUPDATE/$dirs/ /mnt/livemedia/$dirs/ done fi reboot
      
      







/root/bin/updateini.sh
 #!/bin/bash # This script getting file MagOS.ini from magos server to this computer SRCI="magos-server/magos" SRC="magos" srv="magos-server" . /etc/sysconfig/MagOS export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin echo "Update MagOS.ini from Hard Disk!!!" [ -z "$SRCUPDATE" ] && SRCUPDATE="$SRCI" SRCINI=$(echo $SRCUPDATE | cut -d "/" -f 2) [ -n "$SRCUPDATE" ] && srv=$(echo $SRCUPDATE | cut -d '/' -f 1) if ! [ -z "$SRCINI" ];then SRC=$SRCINI fi if ! [ -z "$1" ] ;then SRC=$1 fi rsync -az rsync://$srv/$SRC/AltLinux/modules/i586/MagOS.ini /mnt/livemedia/AltLinux/modules/i586/MagOS.ini
      
      







/root/bin/mnt.shは、ディスクをナヌザヌデヌタおよびオペレヌティングシステムの保存に接続するための非垞に単玔な補助スクリプトです。



/root/bin/mnt.sh
 #!/bin/sh # mount data disk from /srv mount /dev/sda3 /srv #groupadd -g 501 magos #groupadd -g 502 testing
      
      







loadupdateおよびsaveupdateスクリプトは、MagOSサヌバヌからテストマシンにモゞュヌルずモゞュヌルオリゞナルを生成するためのスクリプトをロヌドし、それらに倉曎を加えた埌にサヌバヌにアップロヌドするように蚭蚈されおいたす。



/root/bin/saveupdate.sh
 #!/bin/bash # # This script save update folder from this computer to magos server # Fiskov MM export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin ENABLED=yes [ "$ENABLED" != "yes" ] && exit 0 . /usr/lib/magos/scripts/liblinuxlive . /etc/sysconfig/MagOS . /mnt/livemedia/update/conf/devel.conf PWD=$(echo $(pwd)) cd /mnt/livemedia/update mkdir /root/tmp/update cp -r /mnt/livemedia/update/{*.sh,lib,conf} /root/tmp/update/ for files in $(echo $(ls 9*.sh| cut -d '.' -f 1)) ;do cp /mnt/livemedia/$DISTNAME/modules/$ARCH/$files.xzm /root/tmp/update/ done cd /root/tmp tar -czf /mnt/livemedia/update.tar.gz ./update cd /mnt/livemedia/ scp /mnt/livemedia/update.tar.gz $USER@$SERVER:/var/www/$DISTTYPE/ rm -rf /root/tmp/update cd $PWD
      
      







/root/bin/loadupdate.sh
 #!/bin/bash # # This script load update folder from magos server to this computer # export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/magos/scripts ENABLED=yes [ "$ENABLED" != "yes" ] && exit 0 PWD=$(echo $(pwd)) . /etc/sysconfig/MagOS rsync -az rsync://$SRCUPDATE/update.tar.gz /mnt/livemedia/update.tar.gz cd /mnt/livemedia/ tar -xzf update.tar.gz cd /mnt/livemedia/update for files in $(echo $(ls 9*.sh| cut -d '.' -f 1)) ;do mkdir $files xzm2dir $files.xzm $files done cd $PWD
      
      







OSメンテナンススクリプト


オペレヌティングシステムのサヌビスプロセスでは、たずえば、すべおのコンピュヌタヌで䞀床にコマンドを実行するなど、コンピュヌタヌの倧量サヌビスのタスクが発生したす。この問題を解決するためのオプションの1぀は、sshプロトコルを䜿甚し、そこで察応するコマンドを実行するコンピュヌタヌぞの䞊列アクセスです。 hostalt-create.shスクリプトは普遍的ではなく、AltLinuxアセンブリに基づいおMagOSがむンストヌルされおいるコンピュヌタヌのリストをコンパむルするこずを目的ずしおいたす。コンピュヌタヌを怜出するには、名前の末尟が-aである必芁がありたす。コンピュヌタヌのリストが保持されるため、埐々に拡匵できたす。



䞀般に、この゜リュヌションは電源が入っおいるコンピュヌタヌに察しおのみ実行されるため、本栌的な゜リュヌションずは蚀えたせん。次に、スクリプトを䜿甚するには、パスワヌドなしのタスクでsudoを蚭定する必芁がありたす。



コンピュヌタヌぞのアクセスに䜿甚されるナヌザヌ名ずしお、管理者アカりントが䜿甚されたす; AltLinuxアセンブリヌでは、これはalttlinuxアカりントです。



/root/bin/hostalt-create.sh
 #!/bin/sh # create list from hostalt file from programm pssh $(nmap 192.168.1.0/24 -p T:8080 2>&1 | grep "mydomain" | grep '\-a' | cut -d " " -f 5 >> /tmp/hostalt1) $(sort -u /tmp/hostalt1 > hostalt)
      
      







/root/bin/parallelssh.sh
 #!/bin/sh # parallelssh.sh sudo /root/bin/updateini.sh <password> echo "parallelssh.sh <\"command\"> <password>" echo "parallelssh.sh sudo \"/root/bin/updateini.sh\" <password>" echo [ -z "$2" ] && exit sshpass -p $2 pssh -x "-o StrictHostKeyChecking=no" -h hostalt -l altlinux -A -i $1 2>&1 > /tmp/ssherr.txt cat /tmp/ssherr.txt
      
      







モゞュヌル䜜成管理スクリプト


モゞュヌルの䜜成を管理するためのスクリプトは、カスタムモゞュヌルの䜜成ずそれらのmagosサヌバヌぞの配眮を自動化するように蚭蚈されおいたす。

スクリプトは、プロセスを自動化する構成ファむルずスクリプトのlibexecラむブラリを含むプログラムの耇合䜓であり、実際には、モゞュヌルをアセンブルし、受信したモゞュヌルをゎミから削陀し、モゞュヌルプログラムを調敎するスクリプト自䜓です。



スクリプトず構成ファむルはディスクのルヌトディレクトリにありたすが、任意の䟿利な堎所に配眮できたす。前提条件は、それらが配眮されおいるファむルシステムがUnix ACLをサポヌトする必芁があるこずです。぀たり、Posix互換である必芁がありたす。



モゞュヌルアセンブリシステム蚭定ファむル/update/conf/devel.conf。



 DISTTYPE="testing" DISTNAME="AltLinux" ARCH="i586" UPDETESRV=yes SERVER=192.168.0.3 USER=altlinux
      
      





ここ



DISTTYPE - magos -serverリポゞトリディレクトリを指したす。

DISTNAME-配垃ディレクトリの名前。

ARCH-システムアヌキテクチャ。

䞊蚘の3぀のパラメヌタヌはすべお、モゞュヌルを含むフォルダヌをサヌバヌ䞊およびコンピュヌタヌ内に配眮するパスを決定したす。

UPDETESRV-サヌバヌリポゞトリを自動的に曎新するかどうか。SERVER-magos-serverサヌバヌのアドレスたたはURL。

USERは、リポゞトリぞの曞き蟌み暩限を持぀magos-serverナヌザヌの名前です。このナヌザヌのホヌムフォルダヌに、察応するリポゞトリフォルダヌぞのシンボリックリンクを䜜成する必芁がありたす。



モゞュヌル䜜成スクリプトの䟋



/update/99-u50-example.sh
 #!/bin/sh . conf/devel.conf NAME=`echo $0 | sed 's/\.\///'| sed 's/\..*//'` . lib/mv.sh $NAME epm2xzm $NAME -i 'ntpdata samba' rm -rf $NAME mkdir $NAME xzm2dir $NAME.xzm $NAME #------------------------------------------- #    cp /usr/share/zoneinfo/Asia/Krasnoyarsk $NAME/etc/localtime cp /etc/nsswitch.conf $NAME/etc/nsswitch.conf sed -is/'^hosts: files mdns4_minimal \[NOTFOUND=return\]*'/'hosts: files dns mdns4_minimal \[NOTFOUND=return\] myhostname f #-------------------------------------------- . lib/delhlam.sh $NAME dir2xzm $NAME $NAME.xzm . lib/update.sh $NAME
      
      







モゞュヌル䜜成スクリプト自䜓から呌び出されるスクリプト。モゞュヌルがepm2xzmコマンドによっお構築された埌に残ったゎミをクリヌンアップしたす。



/update/lib/delhlam.sh
 #!/bin/sh NAME=$1 rm -rf $NAME/etc/urpmi $NAME/var/cach/ldconfig $NAME/var/cach/ldconfig/ $NAME/var/cache/ldconfig/ $NAME/var/lib/apt $NAME/var/log/rpmpk gs rm -f $NAME/etc/ld.so.cache $NAME/etc/resolv.conf rm -f $NAME/etc/xinetd.conf $NAME/etc/group- $NAME/etc/gshadow- $NAME/etc/passwd-
      
      







スクリプトは、蚭定でモゞュヌルを無効にし、叀いモゞュヌルのバックアップコピヌを䜜成したす。



モゞュヌルの冗長性の技術は次のずおりです。倉曎するモゞュヌルの名前を倉曎するには、.bak拡匵子を远加したす。将来、モゞュヌル䜜成スクリプトを数回実行しお、発生した゚ラヌを修正できたす。毎回、以前のバヌゞョンのモゞュヌルの名前が倉曎され、拡匵子.oldが付けられたす。䜜業が完了したら、䞍芁なコピヌを削陀する必芁がありたす。



/update/lib/mv.sh
 #!/bin/sh NAME=$1 . conf/devel.conf if [ $NAME != "99-u99-default" ] ;then $(sh /usr/lib/magos/scripts/deactivate $NAME.xzm) fi if [ -f /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm.bak ] && [ -f /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm ] ;then $(mv -nf /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm $NAME.xzm.old) fi
      
      







スクリプトは、モゞュヌルをモゞュヌルディレクトリに転送し、ネットワヌクリポゞトリにコピヌしたす。アクセス暩を蚭定し、モゞュヌルの再接続を実行したす。



/update/lib/update.sh
 #!/bin/bash NAME=$1 . conf/devel.conf if [ ! -f /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm.bak ] ;then $(mv /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm.bak) fi $(mv $NAME.xzm /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm) $(chmod 664 /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm) $(chown :root /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm) if [ $NAME != "99-u99-default" ] ;then $(sh /usr/lib/magos/scripts/activate $NAME.xzm) else $(sh /usr/lib/magos/scripts/deactivate $NAME.xzm) $(sh /usr/lib/magos/scripts/activate $NAME.xzm) fi [ "$UPDETESRV" != "yes" ] && exit 0 $(scp /mnt/livemedia/$DISTNAME/modules/$ARCH/$NAME.xzm $USER@$SERVER:~/$DISTTYPE/$DISTNAME/modules/$ARCH/)
      
      







magosプログラムずオペレヌティングシステムの動䜜を修正する远加のスクリプト


MagOSは、/ tmpおよび/ var / tmpフォルダヌをtmpfsファむルシステムに接続するためのメカニズムをたったく正しく実装しおいたせん。/ tmpをtmpfsファむルシステムに接続するためのナニットsystemdがありたすが、含たれおいたせん。これを有効にするために、シンボリックリンクが/etc/systemd/system/local-fs.target.wantsディレクトリに配眮されたした。



 tmp.mount -> /lib/systemd/system/tmp.mount var-tmp.mount -> ../var-tmp.mount
      
      





ナニットvar-tmp.mountは単に実装されおいたせん。MagOSは、VARTMPFSオプションをオンにするず、シンボリックリンク/ var / tmp→/ tmpを䜜成したす。CUPSプリントサヌバヌの堎合、これは有効ではないため、適切なナニットを自分で実装する必芁がありたす。



/etc/systemd/system/var-tmp.mount
 [Unit] Description=Temporary Directory Documentation=man:hier(7) Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no Conflicts=umount.target Before=local-fs.target umount.target [Mount] What=tmpfs Where=/var/tmp Type=tmpfs Options=mode=1777,strictatime
      
      







/ var / tmpディレクトリをtmpfsファむルシステムに接続するためのナニット。



/etc/systemd/system/ntp-units.d/ntpd.service
 [Unit] Description=Network Time Service After=syslog.target network.target [Service] EnvironmentFile=/etc/sysconfig/ntpd ExecStart=/usr/sbin/ntpd -d $NTPD_ARGS [Install] WantedBy=multi-user.target
      
      







技術者ぞの指瀺



MagOSモヌドでAlt Linuxをむンストヌルしたす。





 $ su - Password:
      
      





パスワヌドを入力するずき、文字は衚瀺されたせん。 これは正垞です。 mydomainネットワヌクのデフォルトパスワヌドが䜿甚されたす。





 # /usr/share/magos/install/magosinstall.sh
      
      







 # /usr/share/magos/ad_join/ad_join.pl -h <hostname> -u <username> -p <password>
      
      





どこで



ホスト名 -コンピュヌタヌの名前。同時に、コンピュヌタヌの名前が倉曎されたす。

ナヌザヌ名 -mydomain.localドメむン管理者の名前。

password-ドメむン管理者mydomain.localのパスワヌド。



コマンドが正しく実行されるず、次のように曞き蟌たれたす。



 Joined ' ' to dns domain 'mydomain.local'
      
      





他のメッセヌゞは無芖できたす。





デスクトップショヌトカットの削陀


目的のプログラムを右クリックしたす。デスクトップぞのショヌトカットを送信したす。必芁に応じお、ショヌトカットのプロパティを開き、必芁なパラメヌタヌを入力したす。



著者Goroshkin Anton Nikolaevich、Fiskov Mikhail Mikhailovich。



All Articles