Buildroot: زبڪس-سرور سان ڪراس پليٽ فارم فرمائيندڙ ٺاھيو

Buildroot: زبڪس-سرور سان ڪراس پليٽ فارم فرمائيندڙ ٺاھيو

ڪم جي تاريخ

هڪ طرف، ننڍيون ڪمپنيون انهن جي بنيادي ڍانچي جي اعلي معيار جي نگراني جي ضرورت آهي (خاص طور تي وسيع ورچوئلائيزيشن جي روشني ۾)، ٻئي طرف، انهن لاء نئين سامان خريد ڪرڻ لاء مالي طور تي ڏکيو آهي. اڪثر ڪري سرور / هارڊويئر سان مسئلا آهن: اڪثر ڪري 1-3 ٽاور-سرور صارف جي ڪم اسٽيشنن جي اڳيان يا هڪ ننڍڙي جڳهه / الماري ۾ آهن.

تيار ٿيل اسيمبلي (ڊسٽريبيوشن کٽ) استعمال ڪرڻ آسان آهي، جيڪا ڪافي آهي مائڪرو ايس ڊي ڪارڊ تي اپلوڊ ڪرڻ ۽ هڪ عام سنگل بورڊ ڪمپيوٽر ۾ داخل ڪرڻ (بيگل بون، راسبي پي ۽ نارنجي پي خاندانن، اسوس ٽينڪر بورڊ). ان کان سواء، اهڙي سامان سستو آهي ۽ ڪٿي به نصب ڪري سگهجي ٿو.

مسئلو جي ترتيب

ڪيترن ئي طريقن سان، پروجيڪٽ هڪ قسم جي ليبارٽري ڪم جي طور تي ترقي ڪئي، نتيجن کي لاڳو ڪرڻ جي امڪان سان.

زبڪس کي مانيٽرنگ سسٽم طور چونڊيو ويو، ڇاڪاڻ ته اهو هڪ طاقتور، آزاد ۽ سٺي دستاويزي نظام آهي.

سوال هارڊويئر پليٽ فارم تي پيدا ٿيو. هڪ الڳ مشين کي نگراني هيٺ رکڻ پڻ سٺو حل ناهي - يا ته اهو مهانگو آهي نوان سامان خريد ڪرڻ، يا پراڻا سامان ڳولڻ + ننڍين ڪمپنين ۾ سرور / هارڊويئر سان گڏ مسئلا آهن.

بلڊروٽ بلڊ سسٽم کي استعمال ڪندي توهان کي ڪسٽمائيز حل ٺاهڻ جي اجازت ڏئي ٿي جيڪا OS جي لينڪس فيملي جي گهٽ ۾ گهٽ ڄاڻ رکندڙ عملي طرفان هلائي سگهجي ٿي. هي سسٽم شروعاتي-دوست آهي، پر ساڳئي وقت هڪ تجربيڪار ڊولپر جي هٿن ۾ ڪسٽمائيزيشن جا ڪافي موقعا ڏئي ٿو. اهو مهانگو نه، پر آئي ٽي انفراسٽرڪچر جي مڪمل خصوصي نگراني جي مسئلي کي حل ڪرڻ لاءِ ڀرپور آهي، جنهن کي ڪم ڪندڙ اهلڪارن لاءِ گهٽ ۾ گهٽ تربيت جي ضرورت آهي.

حل قدم

اهو فيصلو ڪيو ويو ته شروعاتي طور تي هڪ فرم ویئر ٺاهي x86_64 لاءِ qemu ۾ هلائڻ لاءِ، ڇاڪاڻ ته هي هڪ آسان ۽ تيز ڊيبگنگ حل آهي. پوءِ ان کي پورٽ ڪريو هڪ بازو سنگل بورڊ ڪمپيوٽر (مون کي پسند آيو Asus ٽينڪر بورڊ).

buildroot تعميراتي نظام جي طور تي چونڊيو ويو. شروعات ۾، ان ۾ زيبڪس پيڪيج جي کوٽ آهي، تنهنڪري مون کي ان کي پورٽ ڪرڻو پيو. روسي لوڪل سان مسئلا هئا، جيڪي مناسب پيچ لاڳو ڪرڻ سان حل ڪيا ويا (نوٽ: نئين بلڊروٽ ورزن ۾، انهن پيچن جي هاڻي ضرورت ناهي).

زبڪس پيڪيج کي پورٽ ڪرڻ پاڻ کي هڪ الڳ مضمون ۾ بيان ڪيو ويندو.

جيئن ته هر شيء کي هڪ فرم ويئر وانگر ڪم ڪرڻ گهرجي (غير منقول سسٽم تصوير + وصولي قابل ترتيب فائلون / ڊيٽابيس)، اهو ضروري هو ته اسان جي پنهنجي سسٽم جي ٽارگيٽ، خدمتون ۽ ٽائمر (ٽارگٽ، سروس، ٽائمر) لکڻ لاء.

اهو فيصلو ڪيو ويو ته ميڊيا کي 2 حصن ۾ ورهايو وڃي - هڪ سيڪشن سسٽم فائلن سان ۽ هڪ سيڪشن تبديل ٿيندڙ ترتيبن ۽ زيبڪس ڊيٽابيس فائلن سان.

اهو نڪتو ته ڊيٽابيس سان لاڳاپيل مسئلا حل ڪرڻ لاء ٿورو وڌيڪ ڏکيو آهي. ان کي سڌو سنئون ڪيريئر تي رکڻ جي ٿوري خواهش هئي. ساڳي ئي وقت، بنياد جي ماپ هڪ سائيز تائين پهچي سگھي ٿو جيڪا ممڪن ريم ڊسڪ جي سائيز کان وڌي وڃي. تنهن ڪري، هڪ سمجھوتي حل چونڊيو ويو آهي: ڊيٽابيس ايس ڊي ڪارڊ جي ٻئي ورهاڱي تي واقع آهي (جديد SLC ڪارڊ 30 لکڻ جي سائيڪل تائين آهن)، پر اتي هڪ سيٽنگ آهي جيڪا توهان کي خارجي ميڊيا استعمال ڪرڻ جي اجازت ڏئي ٿي (مثال طور، USB- hdd).

RODOS-5 ڊوائيس ذريعي درجه حرارت جي نگراني تي عمل ڪيو ويو. يقينا، توهان ڊالس 1820 سڌو استعمال ڪري سگهو ٿا، پر اهو تيز ۽ آسان هو USB ۾ پلگ ان ڪرڻ.

grub86 x64_2 لاءِ بوٽ لوڊر طور چونڊيو ويو. ان کي هلائڻ لاءِ گھٽ ۾ گھٽ ترتيب لکڻ جي ضرورت ھئي.

qemu تي ڊيبگ ڪرڻ کان پوء، Asus ٽينڪر بورڊ ڏانهن پورٽ ڪيو ويو. منهنجي اوورلي جي ڍانچي ۾، ڪراس پليٽ فارم شروعاتي طور تي رکيل هو - هر بورڊ لاءِ مخصوص ترتيبن جي تخصيص (بورڊ ڊيف ڪنفيگيشن، بوٽ لوڊر، سسٽم ورهاڱي سان تصويري پيداوار) ۽ فائل سسٽم سيٽ اپ ۾ وڌ ۾ وڌ هڪجهڙائي / ڊيٽا سان هڪ تصوير ٺاهڻ. . انهيءَ تياريءَ کي نظر ۾ رکندي، بندرگاهه تيزيءَ سان هليو ويو.

اهو انتهائي صلاح ڏني وئي آهي ته تعارفي مضمون پڙهڻ لاء:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

گڏ ڪيئن ڪجي

پروجيڪٽ github تي ذخيرو ٿيل آهي
مخزن کي ڪلون ڪرڻ کان پوء، هيٺ ڏنل فائل جي جوڙجڪ حاصل ڪئي وئي آهي:

[alexey@comp monitor]$ ls -1
buildroot-2019.05.tar.gz
overlay
README.md
run_me.sh

buildroot-2019.05.tar.gz - صاف buildroot آرڪائيو
overlay منهنجي external-tree ڊاريڪٽري آهي. اهو ان ۾ آهي جيڪو توهان کي گهربل آهي هر شي کي محفوظ ڪيو ويو آهي گڏ ڪرڻ لاءِ فرم ویئر گڏ ڪرڻ لاءِ buildroot استعمال ڪندي
README.md - منصوبي جي وضاحت ۽ انگريزي ۾ دستياب.
run_me.sh هڪ اسڪرپٽ آهي جيڪو بلڊ سسٽم تيار ڪري ٿو. آرڪائيو مان تعمير روٽ کي وڌايو، ان تي هڪ اوورلي ڳنڍي ٿو (ٻاهرين وڻ جي ميڪانيزم ذريعي) ۽ توهان کي تعمير لاء ٽارگيٽ بورڊ چونڊڻ جي اجازت ڏئي ٿو.

[0] my_asus_tinker_defconfig
[1] my_beaglebone_defconfig
[2] x86_64_defconfig
Select defconfig, press A for abort. Default [0]

ان کان پوء، صرف وڃو buildroot-2019.05 ڊاريڪٽري ۽ ٺاهيو حڪم هلائڻ.
تعمير مڪمل ٿيڻ کان پوء، سڀني تعمير جا نتيجا آئوٽ / تصويرون ڊاريڪٽري ۾ هوندا.

[alexey@comp buildroot-2019.05]$ ls -1 output/images/
boot.img
boot.vfat
bzImage
data
data.img
external.img
external.qcow2
grub-eltorito.img
grub.img
intel-ucode
monitor-0.9-beta.tar.gz
qemu.qcow2
rootfs.cpio
sdcard.img
sys
update

گهربل فائلون:

  • sdcard.img - ايس ڊي ڪارڊ تي لکڻ لاءِ ميڊيا تصوير (ڊي ڊي يا روفس ذريعي وائڊ ڊائونز تحت).
  • qemu.qcow2 - ميڊيا تصوير qemu ۾ هلائڻ لاءِ.
  • external.qcow2 - ڊيٽابيس لاءِ خارجي ميڊيا تصوير
  • مانيٽر-0.9-beta.tar.gz - ويب انٽرفيس ذريعي اپڊيٽ ڪرڻ لاءِ آرڪائيو

دستي نسل

اهو ساڳيو هدايتون ڪيترائي ڀيرا لکڻ جي لائق ناهي. ۽ سڀ کان وڌيڪ منطقي ڳالهه اها آهي ته ان کي هڪ ڀيرو مارڪ ڊائون ۾ لکو، ۽ پوءِ ان کي ڊائون لوڊ لاءِ PDF ۽ ويب انٽرفيس لاءِ html ۾ تبديل ڪريو. اهو ممڪن آهي Pandoc پيڪيج جي مهرباني.

ساڳئي وقت، توهان کي سسٽم جي تصوير کي گڏ ڪرڻ کان پهريان اهي سڀئي فائلون پيدا ڪرڻ جي ضرورت آهي، اهي پوسٽ-بلڊ اسڪرپٽ اڳ ۾ ئي بيڪار آهن. تنهن ڪري، نسل هڪ پيڪيج جي دستياب جي صورت ۾ ٺاهيو ويو آهي. توھان ان کي اوورلي / پيڪيج / دستياب ۾ ڏسي سگھو ٿا.

manuals.mk فائل (جيڪو سڀ ڪم ڪري ٿو)

################################################################################
#
# manuals
#
################################################################################

MANUALS_VERSION:= 1.0.0
MANUALS_SITE:= ${BR2_EXTERNAL_monitorOverlay_PATH}/package/manuals
MANUALS_SITE_METHOD:=local

define MANUALS_BUILD_CMDS
    pandoc -s -o ${TARGET_DIR}/var/www/manual_en.pdf ${BR2_EXTERNAL_monitorOverlay_PATH}/../README.md
    pandoc -f markdown -t html -o ${TARGET_DIR}/var/www/manual_en.html ${BR2_EXTERNAL_monitorOverlay_PATH}/../README.md
endef

$(eval $(generic-package))

سسٽم

لينڪس دنيا فعال طور تي سسٽم ڊي ڏانهن منتقل ٿي رهي آهي، مون کي اهو پڻ ڪرڻو هو.
خوشگوار جدت مان - ٽائمرز جي موجودگي. عام طور تي، انهن جي باري ۾ هڪ الڳ مضمون لکيو پيو وڃي (۽ نه رڳو انهن جي باري ۾)، پر مان مختصر طور تي انهن بابت ڳالهائيندس.

اهڙا عمل آهن جيڪي وقتي طور تي انجام ڏيڻ گهرجن. مون کي lighttpd ۽ php-fpm لاگز کي صاف ڪرڻ لاءِ logrotate هلائڻ جي ضرورت هئي. ڪرون ۾ حڪم لکڻ لاءِ سڀ کان وڌيڪ عام هوندو، پر مون فيصلو ڪيو ته سيسٽم ڊي جي نراسائي ٽائمر کي استعمال ڪيو وڃي. تنهنڪري لاگروٽ سخت وقت جي وقفي کانپوءِ هلندو آهي.

يقينن، اهو ممڪن آهي ته ٽائمر ٺاهڻ جيڪي ڪجهه تاريخن تي فائر ڪن، پر مون کي ان جي ضرورت نه هئي.
ٽائمر مثال:

  • ٽائمر فائل
    
    [Unit]
    Description=RODOS temp daemon timer

[ٽائمر] OnBootSec = 1 منٽ
OnUnitActiveSec = 1 منٽ

[انسٽال ڪريو] WantedBy=timers.target

- Файл сервиса, вызываемого таймером:
```bash
[Unit]
Description=RODOS temp daemon

[Service]
ExecStart=/usr/bin/rodos.sh

سپورٽ ٿيل بورڊ

Asus ٽينڪر بورڊ بنيادي بورڊ آهي جنهن تي هر شي ڪم ڪرڻ گهرجي. سستو ۽ تمام طاقتور طور چونڊيو.

بيگلبون ڪارو پهريون بورڊ آهي جنهن تي ڪم آزمائشي هئي (وڌيڪ طاقتور بورڊ جي چونڊ دوران).

Qemu x86_64 - ڊيبگ ڊولپمينٽ لاءِ استعمال ڪيو ويو.

اهو ڪيئن ڪم ڪندو آهي

شروعاتي تي، سيٽنگن جي هڪ ٻه اسٽيج بحالي آهي:

  • شروع ڪندي settings_restore اسڪرپٽ (هڪ خدمت ذريعي). اهو بنيادي سسٽم سيٽنگون بحال ڪري ٿو - ٽائيم زون، لوڪل، نيٽ ورڪ سيٽنگون، وغيره.
  • تيار ڪيل اسڪرپٽ لانچ ڪرڻ (سروس ذريعي) - زبڪس، ڊيٽابيس تيار ٿي رهيو آهي هتي، IP ڪنسول ۾ ڏيکاريل آهي.

پهرين شروعات تي، ايس ڊي ڪارڊ جي ٻئي حصي جي ماپ مقرر ڪئي وئي آهي. جيڪڏهن اڃا تائين غير مختص ٿيل جڳهه آهي، ميڊيا ٻيهر ورهاڱي ڪئي وئي آهي، ڊيٽا ورهاڱي تمام مفت جاء وٺي ٿو. اهو ڪيو ويو آهي انسٽاليشن تصوير جي سائيز کي گهٽائڻ لاءِ (sdcard.img). انهي سان گڏ، postgresql ڪم ڪندڙ ڊاريڪٽري هن نقطي تي ٺاهي وئي آهي. اهو ئي سبب آهي ته نئين ميڊيا سان پهريون لانچ ايندڙن کان وڌيڪ ڊگهو ٿيندو.

جڏهن هڪ خارجي ڊرائيو کي ڳنڍيندي، شروعاتي وقت تي اهو هڪ مفت ڊرائيو ڳولي ٿو ۽ ان کي خارجي ليبل سان ext4 ۾ فارميٽ ڪري ٿو.

ڌيان! جڏهن ٻاهرين ڊرائيو کي ڳنڍيندي (انهي سان گڏ ان کي ختم ڪرڻ يا تبديل ڪرڻ)، توهان کي بيڪ اپ ڪرڻ ۽ سيٽنگون بحال ڪرڻ جي ضرورت آهي!

RODOS 5 ڊيوائس کي استعمال ڪيو ويندو آهي گرمي پد کي مانيٽر ڪرڻ لاءِ. ٺاهيندڙ هن ڊوائيس سان ڪم ڪرڻ لاءِ پنهنجي يوٽيلٽي جا سورس ڪوڊ مهيا ڪري ٿو. جڏهن توهان سسٽم کي ڦيرايو، روڊوس ٽائمر شروع ٿئي ٿو، جيڪو هڪ منٽ ۾ هڪ ڀيرو هن افاديت کي هلائي ٿو. موجوده درجه حرارت /tmp/rodos_current_temp فائل ۾ لکيو ويو آهي، جنهن کان پوء زيبڪس هن فائل کي سينسر طور مانيٽر ڪري سگهي ٿو.

ترتيب ڏيڻ واري اسٽوريج ميڊيا کي /ڊيٽا ڊاريڪٽري تي نصب ڪيو ويو آهي.

جڏهن سسٽم شروع ٿئي ٿو ۽ ان کي آپريشن لاء تيار ڪري ٿو، هيٺ ڏنل پيغام ڪنسول ۾ ظاهر ٿئي ٿو:

System starting, please wait

تياري جي ڪم مڪمل ٿيڻ کان پوء، اهو IP پتي جي پيداوار ۾ تبديل ٿي ويندو:

current ip 192.168.1.32
Ready to work

درجه حرارت جي نگراني لاءِ زبڪس قائم ڪرڻ

گرمي جي نگراني ڪرڻ لاء، اهو ڪافي آهي 2 قدم کڻڻ لاء:

  • RODOS ڊوائيس کي USB پورٽ سان ڳنڍيو
  • zabbix ۾ ڊيٽا شيون ٺاهيو

زبڪس ويب انٽرفيس کوليو:

  • سيڪشن کوليو Configuration → Hosts
  • اسان جي زبڪس سرور جي لائن ۾ شيون تي ڪلڪ ڪريو
  • تي ڪلڪ ڪريو شيون ٺاهيو

Buildroot: زبڪس-سرور سان ڪراس پليٽ فارم فرمائيندڙ ٺاھيو

ھيٺ ڏنل ڊيٽا داخل ڪريو:

  • نالو - توهان تي (مثال طور، سرور روم ٽيمپ)
  • قسم - زبڪس ايجنٽ
  • چاٻي - rodos
  • قسم- عددي
  • يونٽس-سي
  • تاريخ جي اسٽوريج جي مدت - تاريخ جي اسٽوريج جي مدت. باقي 10 ڏينهن
  • رجحان اسٽوريج جي مدت - اسٽوريج جي مدت تبديلين جي متحرڪ لاء. باقي 30 ڏينهن
  • نئون ايپليڪيشن-سرور روم ٽيمپ

۽ ADD بٽڻ کي دٻايو.
Buildroot: زبڪس-سرور سان ڪراس پليٽ فارم فرمائيندڙ ٺاھيو

ويب انٽرفيس ذريعي سيٽنگون منظم ڪريو

ويب انٽرفيس php ۾ لکيل آهي. مکيه ڪم آهن:

  • ڊوائيس جي حالت ڏسو
  • نيٽ ورڪ سيٽنگون تبديل ڪرڻ
    Buildroot: زبڪس-سرور سان ڪراس پليٽ فارم فرمائيندڙ ٺاھيو
  • استعمال ڪندڙ پاسورڊ تبديل
  • وقت زون جي چونڊ
  • بيڪ اپ / بحال / فيڪٽري ري سيٽ
  • ٻاهرين ڊرائيو کي ڳنڍڻ جي صلاحيت
  • سسٽم تازه ڪاري
    Buildroot: زبڪس-سرور سان ڪراس پليٽ فارم فرمائيندڙ ٺاھيو

ويب انٽرفيس ۾ لاگ ان پاسورڊ سان محفوظ ٿيل آهي. شروعاتي صفحو - دستياب.

zabbix انٽرفيس ايڊريس: ${ip/dns}/zabbix
مينيجمينٽ انٽرفيس ايڊريس: ${ip/dns}/manage
Buildroot: زبڪس-سرور سان ڪراس پليٽ فارم فرمائيندڙ ٺاھيو

قميص ۾ ڊوڙڻ

qemu-system-x86_64 -smp 4 -m 4026M -enable-kvm -machine q35,accel=kvm -device intel-iommu -cpu host -net nic -net bridge,br=bridge0 -device virtio-scsi-pci,id= scsi0 -drive file=output/images/qemu.qcow2,format=qcow2,aio=threads -device virtio-scsi-pci,id=scsi0 -drive file=output/images/external.qcow2,format=qcow2,aio=threads

هي حڪم 4 ڪور، 2048 رام، KVM فعال، برج 0 نيٽ ورڪ ڪارڊ ۽ ٻه ڊسڪ سان هڪ سسٽم شروع ڪندو: سسٽم لاءِ ۽ ٻاهرين پوسٽ گريسڪ ايل لاءِ.

تصويرون تبديل ڪري سگھجن ٿيون ۽ ورچوئل باڪس ۾ هلائي سگهجن ٿيون:

qemu-img convert -f qcow2  qemu.qcow2 -O vdi qcow2.vdi
qemu-img convert -f qcow2  external.qcow2 -O vdi external.vdi

پوء انھن کي ورچوئل باڪس ۾ درآمد ڪريو ۽ ساٽا ذريعي ڳنڍيو.

ٿڪل

ان عمل ۾، منهنجي لاءِ اها دلچسپ ٿي وئي ته هڪ پراڊڪٽ ڪم لاءِ تيار ڪيو وڃي - نه تمام خوبصورت انٽرفيس سان (مان انهن کي لکڻ پسند نٿو ڪريان)، پر اهو ڪم ڪري ٿو ۽ سيٽ ڪرڻ آسان آهي.

KVM ۾ zabbix-appliance کي نصب ڪرڻ جي آخري ڪوشش هن قدم جي صحيحيت ڏيکاري ٿي (تنصيب مڪمل ٿيڻ کان پوء، سسٽم شروع نه ٿيندو). ٿي سگهي ٿو مان ڪجهه غلط ڪري رهيو آهيان 😉

مواد

https://buildroot.org/

جو ذريعو: www.habr.com

تبصرو شامل ڪريو