لینکس کرنل ریلیز 6.1

دو ماہ کی ترقی کے بعد، Linus Torvalds نے Linux kernel 6.1 کی ریلیز پیش کی۔ سب سے زیادہ قابل ذکر تبدیلیوں میں سے: زنگ کی زبان میں ڈرائیوروں اور ماڈیولز کی ترقی کے لیے سپورٹ، استعمال شدہ میموری پیجز کا تعین کرنے کے طریقہ کار کی جدید کاری، بی پی ایف پروگرامز کے لیے ایک خصوصی میموری مینیجر، میموری کے مسائل کی تشخیص کے لیے ایک نظام KMSAN، KCFI (Kernelk کنٹرول) فلو انٹیگریٹی) پروٹیکشن میکانزم، میپل اسٹرکچر ٹری کا تعارف۔

نئے ورژن میں 15115 ڈویلپرز کی جانب سے 2139 اصلاحات شامل ہیں، پیچ کا سائز 51 MB ہے، جو کرنل 2 اور 6.0 کے پیچ کے سائز سے تقریباً 5.19 گنا چھوٹا ہے۔ تبدیلیوں نے 13165 فائلوں کو متاثر کیا، کوڈ کی 716247 لائنیں شامل کی گئیں، اور 304560 لائنوں کو حذف کر دیا گیا۔ 45 میں متعارف کرائی گئی تمام تبدیلیوں میں سے تقریباً 6.1% کا تعلق ڈیوائس ڈرائیورز سے ہے، تقریباً 14% تبدیلیاں ہارڈ ویئر آرکیٹیکچرز کے لیے مخصوص کوڈ کو اپ ڈیٹ کرنے سے متعلق ہیں، 14% کا تعلق نیٹ ورک اسٹیک سے ہے، 3% فائل سسٹمز سے متعلق ہے، اور 3% تبدیلیاں ہیں۔ اندرونی کرنل سب سسٹم سے متعلق ہیں۔

کرنل 6.1 میں اہم اختراعات:

  • میموری اور سسٹم کی خدمات
    • ڈرائیوروں اور کرنل ماڈیولز کو تیار کرنے کے لیے رسٹ کو دوسری زبان کے طور پر استعمال کرنے کی صلاحیت شامل کی گئی۔ رسٹ کو سپورٹ کرنے کی بنیادی وجہ میموری کے ساتھ کام کرتے وقت غلطیوں کے امکان کو کم کرکے محفوظ اور اعلیٰ معیار کے ڈیوائس ڈرائیورز کو لکھنا آسان بنانا ہے۔ زنگ سپورٹ کو بطور ڈیفالٹ غیر فعال کر دیا جاتا ہے اور اس کا نتیجہ یہ نہیں ہوتا ہے کہ Rust کو مطلوبہ کرنل بلڈ انحصار کے طور پر شامل کیا جائے۔ دانا نے اب تک پیچ کا ایک کم سے کم، سٹرپڈ ڈاؤن ورژن اپنایا ہے، جس کو کوڈ کی 40 سے 13 ہزار لائنوں تک کم کر دیا گیا ہے اور صرف ضروری کم از کم فراہم کرتا ہے، جو زنگ زبان میں لکھے گئے ایک سادہ کرنل ماڈیول کو بنانے کے لیے کافی ہے۔ مستقبل میں، Rust-for-Linux برانچ سے دیگر تبدیلیوں کو منتقل کرتے ہوئے، موجودہ فعالیت کو بتدریج بڑھانے کا منصوبہ بنایا گیا ہے۔ متوازی طور پر، NVMe ڈرائیوز، 9p نیٹ ورک پروٹوکول اور Rust زبان میں Apple M1 GPU کے لیے ڈرائیور تیار کرنے کے لیے مجوزہ بنیادی ڈھانچے کو استعمال کرنے کے لیے منصوبے تیار کیے جا رہے ہیں۔
    • EFI کے ساتھ AArch64، RISC-V اور LoongArch آرکیٹیکچرز پر مبنی سسٹمز کے لیے، کمپریسڈ کرنل امیجز کو براہ راست لوڈ کرنے کی صلاحیت کو لاگو کیا گیا ہے۔ کرنل امیجز کو لوڈ کرنے، چلانے اور اتارنے کے لیے شامل کیے گئے ہینڈلرز، جو براہ راست EFI zboot سے بلائے گئے ہیں۔ EFI پروٹوکول ڈیٹا بیس سے پروٹوکول کو انسٹال کرنے اور حذف کرنے کے ہینڈلرز کو بھی شامل کیا گیا ہے۔ پہلے، پیک کھولنے کا کام الگ بوٹ لوڈر کے ذریعے کیا جاتا تھا، لیکن اب یہ کرنل میں ہی ہینڈلر کے ذریعے کیا جا سکتا ہے - کرنل امیج کو EFI ایپلیکیشن کے طور پر بنایا گیا ہے۔
    • اس کمپوزیشن میں ایک ملٹی لیول میموری مینجمنٹ ماڈل کے نفاذ کے ساتھ پیچ کا کچھ حصہ شامل ہے، جو آپ کو مختلف کارکردگی کی خصوصیات کے ساتھ میموری بینکوں کو الگ کرنے کی اجازت دیتا ہے۔ مثال کے طور پر، سب سے زیادہ استعمال ہونے والے صفحات کو تیز ترین میموری میں ذخیرہ کیا جا سکتا ہے، جبکہ سب سے کم استعمال شدہ صفحات نسبتاً سست میموری میں محفوظ ہو سکتے ہیں۔ کرنل 6.1 اس بات کا تعین کرنے کے لیے ایک طریقہ کار متعارف کراتا ہے کہ سست میموری میں زیادہ استعمال شدہ صفحات کہاں واقع ہیں تاکہ انہیں تیز رفتار میموری میں ترقی دی جا سکے، اور میموری کے درجات اور ان کی متعلقہ کارکردگی کا ایک عمومی تصور بھی متعارف کرایا جاتا ہے۔
    • اس میں ایم جی ایل آر یو (ملٹی جنریشنل ایل آر یو) میکانزم شامل ہے، جو پرانے ایل آر یو (کم سے کم حال میں استعمال شدہ) عمل درآمد کو تبدیل کرتا ہے جو دو قطاروں کی بنیاد پر ملٹی اسٹیج ڈھانچہ کے ساتھ بہتر طور پر تعین کرتا ہے کہ کون سے میموری پیجز اصل میں استعمال میں ہیں اور کن کو آگے بڑھایا جا سکتا ہے۔ تبادلہ تقسیم.
    • اوریکل انجینئرز کی طرف سے تجویز کردہ "میپل ٹری" ڈیٹا سٹرکچر کے لیے سپورٹ میں اضافہ کیا گیا، جو "سرخ سیاہ درخت" کے ڈھانچے کے لیے زیادہ موثر متبادل کے طور پر رکھا گیا ہے۔ میپل ٹری بی ٹری کا ایک مختلف قسم ہے جو رینج انڈیکسنگ کو سپورٹ کرتا ہے اور جدید پروسیسرز کے کیشے کا موثر استعمال کرنے کے لیے ڈیزائن کیا گیا ہے۔ کچھ میموری مینجمنٹ سب سسٹم پہلے ہی میپل ٹری میں منتقل ہو چکے ہیں، جس کا ان کی کارکردگی پر مثبت اثر پڑا ہے۔ مستقبل میں، میپل کے درخت کو رینج لاکنگ کو لاگو کرنے کے لیے استعمال کیا جا سکتا ہے۔
    • "تباہ کن" BPF پروگرام بنانے کی صلاحیت جو خاص طور پر کریش_کیکسیک() کال کے ذریعے ہنگامی بندش شروع کرنے کے لیے تیار کی گئی ہے، کو BPF سب سسٹم میں شامل کر دیا گیا ہے۔ ایسے BPF پروگراموں کو ڈیبگنگ کے مقاصد کے لیے درکار ہو سکتا ہے تاکہ وقت کے ایک خاص مقام پر کریش ڈمپ کی تخلیق شروع کی جا سکے۔ BPF پروگرام لوڈ کرتے وقت تباہ کن کارروائیوں تک رسائی حاصل کرنے کے لیے، آپ کو BPF_F_DESTRUCTIVE جھنڈا بتانا ہوگا، sysctl kernel.destructive_bpf_enabled کو چالو کرنا ہوگا، اور CAP_SYS_BOOT حقوق حاصل کرنا ہوں گے۔
    • BPF پروگراموں کے لیے، یہ ممکن ہے کہ cgroup عناصر کی گنتی کے ساتھ ساتھ کسی مخصوص تھریڈ یا ٹاسک کے وسائل (فائلیں، vma، عمل وغیرہ) کی گنتی کریں۔ یوزر رِنگ بفرز بنانے کے لیے نقشہ کی ایک نئی قسم نافذ کی گئی ہے۔
    • بی پی ایف پروگرامز (میموری ایلوکیٹر) میں میموری ایلوکیشن کے لیے ایک خصوصی کال شامل کی گئی، جو بی پی ایف سیاق و سباق میں معیاری kmalloc() کے مقابلے میں محفوظ میموری مختص فراہم کرتا ہے۔
    • تبدیلیوں کے پہلے حصے کو مربوط کر دیا گیا ہے، جو BPF پروگراموں کی شکل میں لاگو HID (ہیومن انٹرفیس ڈیوائس) انٹرفیس کے ساتھ ان پٹ ڈیوائسز کے لیے ڈرائیور بنانے کی صلاحیت فراہم کرتا ہے۔
    • کرنل نے a.out ایگزیکیوٹیبل فائل فارمیٹ کو سپورٹ کرنے کے لیے کوڈ کو مکمل طور پر ہٹا دیا ہے، جسے ریلیز 5.1 میں فرسودہ کیا گیا تھا اور ورژن 5.18 اور 5.19 کے بعد سے بڑے فن تعمیرات کے لیے غیر فعال کر دیا گیا ہے۔ لینکس سسٹمز پر a.out فارمیٹ کو طویل عرصے سے فرسودہ کیا گیا ہے، اور ڈیفالٹ لینکس کنفیگریشنز میں جدید ٹولز کے ذریعے a.out فائلوں کی جنریشن کی حمایت نہیں کی جاتی ہے۔ a.out فائلوں کے لیے لوڈر کو مکمل طور پر صارف کی جگہ پر لاگو کیا جا سکتا ہے۔
    • لونگسن 3 5000 پروسیسرز میں استعمال ہونے والے لونگ آرچ انسٹرکشن سیٹ آرکیٹیکچر پر مبنی سسٹمز کے لیے اور MIPS اور RISC-V کی طرح نئے RISC ISA کو نافذ کرنے کے لیے، کارکردگی کی پیمائش کے واقعات (perf ایونٹس)، kexec، kdump اور BPF JIT کی تالیف کے لیے سپورٹ لاگو کیا جاتا ہے۔ .
    • io_uring غیر مطابقت پذیر I/O انٹرفیس ایک نیا موڈ پیش کرتا ہے، IORING_SETUP_DEFER_TASKRUN، جو رنگ بفر سے متعلق کام کو عارضی طور پر موخر کرنے کی اجازت دیتا ہے جب تک کہ درخواست کی درخواست نہ کی جائے، جس کا استعمال بیچ کے کام کے لیے کیا جا سکتا ہے اور پیشگی کی وجہ سے تاخیر کے مسائل سے بچنے کے لیے استعمال کیا جا سکتا ہے۔ غلط وقت
    • یوزر اسپیس میں پروسیسز کو یہ صلاحیت دی جاتی ہے کہ وہ عام میموری پیجز کی رینج کو بڑے میموری پیجز (ٹرانسپیرنٹ ہیج پیجز) کے سیٹ میں تبدیل کر سکتے ہیں۔
    • /dev/userfaultfd ڈیوائس کا اضافی نفاذ، جو FS میں رسائی کے حقوق کا استعمال کرتے ہوئے userfaultfd() سسٹم کال کی فعالیت تک رسائی کی اجازت دیتا ہے۔ userfaultfd فعالیت آپ کو صارف کی جگہ میں غیر مختص شدہ میموری صفحات (صفحہ کی خرابیوں) ​​تک رسائی کے لیے ہینڈلرز بنانے کی اجازت دیتی ہے۔
    • GNU Make یوٹیلیٹی کے ورژن کی ضروریات کو بڑھا دیا گیا ہے - کم از کم ورژن 3.82 اب دانا بنانے کے لیے درکار ہے۔
  • ڈسک سب سسٹم، I/O اور فائل سسٹم
    • Btrfs فائل سسٹم میں نمایاں کارکردگی کی اصلاح کی گئی ہے؛ دیگر چیزوں کے ساتھ ساتھ، FIEMAP ioctl کال کی کارکردگی کو آرڈرز کی شدت سے بڑھایا گیا ہے۔ io_uring کا استعمال کرتے ہوئے ایپلی کیشنز کے لیے غیر مطابقت پذیر بفرڈ رائٹ کے لیے معاونت شامل کی گئی ہے۔ "بھیجیں" آپریشن میں fs-verity کے ساتھ محفوظ فائلوں کے لیے تعاون شامل کیا گیا۔
    • ext4 فائل سسٹم نے جرنل کی دیکھ بھال اور صرف پڑھنے کے آپریشن سے متعلق کارکردگی کی اصلاح کو شامل کیا ہے۔
    • EROFS (Enhanced Read-only File System) فائل سسٹم، جو صرف پڑھنے کے موڈ میں قابل رسائی پارٹیشنز پر استعمال کے لیے ڈیزائن کیا گیا ہے، مختلف فائل سسٹمز میں ڈپلیکیٹ ڈیٹا کو شیئر کرنے کی صلاحیت کو نافذ کرتا ہے۔
    • statx() سسٹم کال کو اس بارے میں معلومات ظاہر کرنے کے لیے شامل کیا گیا ہے کہ آیا فائل پر ڈائریکٹ I/O لاگو کیا جا سکتا ہے۔
    • O_TMPFILE پرچم کے ساتھ عارضی فائلیں بنانے کے لیے سپورٹ کو FUSE (User Space میں فائل سسٹم) سب سسٹم میں شامل کر دیا گیا ہے۔
  • ورچوئلائزیشن اور سیکیورٹی
    • CFI (کنٹرول فلو انٹیگریٹی) پروٹیکشن میکانزم کے نفاذ کو تبدیل کر دیا گیا ہے، جس میں کسی فنکشن کی ہر بالواسطہ کال سے پہلے چیک شامل کیا جاتا ہے تاکہ غیر متعینہ رویے کی کچھ شکلوں کا پتہ لگایا جا سکے جو ممکنہ طور پر عام عمل درآمد کے حکم (کنٹرول فلو) کی خلاف ورزی کا باعث بن سکتا ہے۔ کارناموں کے استعمال کا نتیجہ جو میموری میں ذخیرہ شدہ افعال میں پوائنٹر کو تبدیل کرتا ہے۔ LLVM پروجیکٹ سے CFI کے معیاری نفاذ کو کلنگ کے استعمال پر مبنی ایک آپشن سے بدل دیا گیا ہے، لیکن خاص طور پر نچلے درجے کے سب سسٹمز اور آپریٹنگ سسٹم کے کرنل کی حفاظت کے لیے ڈھال لیا گیا ہے۔ LLVM میں، کلینگ 16 ریلیز میں ایک نیا نفاذ پیش کیا جائے گا اور "-fsanitize=kcfi" آپشن کے ساتھ فعال کیا جائے گا۔ نئے نفاذ کے ساتھ اہم فرق یہ ہے کہ یہ لنک ٹائم آپٹیمائزیشن (LTO) سے منسلک نہیں ہے اور اس کے نتیجے میں فنکشن پوائنٹرز کو جمپ ٹیبل میں لنکس سے تبدیل نہیں کیا جاتا ہے۔
    • LSM ماڈیولز (لینکس سیکیورٹی ماڈیول) کے لیے، ایسے ہینڈلرز بنانا ممکن ہے جو نام کی جگہیں بنانے کے لیے آپریشن کو روکتے ہیں۔
    • BPF پروگراموں میں PKCS#7 ڈیجیٹل دستخطوں کی تصدیق کے لیے ٹولز فراہم کیے جاتے ہیں۔
    • نان بلاکنگ موڈ (O_NONBLOCK) میں کھولنے کی اہلیت، جسے کرنل 5.6 میں نادانستہ طور پر ہٹا دیا گیا تھا، کو واپس /dev/random پر کر دیا گیا ہے۔
    • x86 آرکیٹیکچر والے سسٹمز پر، کرنل سب سسٹمز کے ذریعے میموری پیجز کی میپنگ کی صورت میں ایک انتباہ شامل کیا گیا ہے جو بیک وقت عمل درآمد اور لکھنے کی اجازت دیتے ہیں۔ مستقبل میں اس طرح کی میموری میپنگ کو مکمل طور پر ممنوع قرار دینے کے امکان پر غور کیا جا رہا ہے۔
    • KMSAN (Kernel Memory Sanitizer) ڈیبگنگ میکانزم کو شامل کیا گیا تاکہ کرنل میں میموری کے غیر شروع شدہ استعمال کا پتہ لگایا جا سکے، نیز صارف کی جگہ اور آلات کے درمیان غیر شروع شدہ میموری کے لیک کا پتہ لگایا جا سکے۔
    • گیٹرنڈم کال میں استعمال ہونے والے کرپٹو سیکیور سی آر این جی سیوڈو رینڈم نمبر جنریٹر میں بہتری لائی گئی ہے۔ یہ تبدیلیاں وی پی این وائر گارڈ کے مصنف جیسن اے ڈونن فیلڈ نے تیار کی ہیں، اور ان کا مقصد سیوڈو-رینڈم انٹیجر نکالنے کی سیکیورٹی کو بہتر بنانا ہے۔
  • نیٹ ورک سب سسٹم
    • TCP اسٹیک ہر نیم اسپیس کے لیے الگ الگ ساکٹ ہیش ٹیبلز استعمال کرنے کی صلاحیت (بذریعہ ڈیفالٹ غیر فعال) فراہم کرتا ہے، جو کہ بڑی تعداد میں نیم اسپیس والے سسٹمز کی کارکردگی کو بہتر بناتا ہے۔
    • میراثی DECnet پروٹوکول کو سپورٹ کرنے کے لیے کوڈ کو ہٹا دیا گیا۔ DECnet استعمال کرنے والی ایپلیکیشنز کو مرتب کرنے کی اجازت دینے کے لیے یوزر اسپیس API اسٹب کو جگہ پر چھوڑ دیا گیا ہے، لیکن یہ ایپلیکیشنز نیٹ ورک سے منسلک نہیں ہو سکیں گی۔
    • نیٹ لنک پروٹوکول دستاویزی ہے۔
  • سامان
    • amdgpu ڈرائیور نے لازلیس ڈیٹا کمپریشن کے لیے DSC (ڈسپلے اسٹریم کمپریشن) فارورڈنگ کے لیے معاونت شامل کی ہے جب اسکرین کے ساتھ معلومات کا تبادلہ کرتے ہیں جو بہت زیادہ ریزولوشنز کو سپورٹ کرتی ہیں۔ AMD RDNA3 (RX 7000) اور CDNA (Instinct) پلیٹ فارمز کے لیے تعاون فراہم کرنے کے لیے کام جاری ہے۔ DCN 3.2، SMU 13.x، NBIO 7.7، GC 11.x، PSP 13.x، SDMA 6.x اور GMC 11.x IP اجزاء کے لیے شامل کردہ تعاون۔ amdkfd ڈرائیور (مجرد AMD GPUs جیسے کہ Polaris کے لیے) GFX 11.0.3 کے لیے معاونت فراہم کرتا ہے۔
    • i915 (Intel) ڈرائیور میں Meteor Lake GPU کے لیے تعاون شامل ہے۔ Meteor Lake اور نئے GPUs DP 2.0 (DisplayPort) انٹرفیس کو سپورٹ کرتے ہیں۔ Alder Lake S microarchitecture کی بنیاد پر ویڈیو کارڈز کے لیے شناخت کنندگان کو شامل کیا گیا۔
    • Apple Silicon، Intel SkyLake اور Intel KabyLake پروسیسرز میں لاگو آڈیو سب سسٹمز کے لیے معاونت شامل کی گئی۔ CS35L41 HDA آڈیو ڈرائیور سلیپ موڈ کو سپورٹ کرتا ہے۔ انٹیگریٹڈ آڈیو چپس Apple Silicon, AMD Rembrant DSPs, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake اور Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSPs, QuP8280, NXP i.MX8250ULP DSPs, QuP8450, NXP i. SM4392 اور Texas Instruments SRCXNUMX
    • LCD پینلز Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux B120NW1J-R116, Innolux B01.6CA-116, Innolux. NT21WH M-N116, INX N2BCA- EA116، INX N1BCN-EA0800، ملٹی انو ٹیکنالوجی MI9FT-XNUMX۔
    • Baikal-T1 SoC میں استعمال ہونے والے AHCI SATA کنٹرولرز کے لیے اضافی تعاون۔
    • بلوٹوتھ چپس MediaTek MT7921، Intel Magnetor (CNVi، انٹیگریٹڈ کنیکٹیویٹی)، Realtek RTL8852C، RTW8852AE اور RTL8761BUV (Edimax BT-8500) کے لیے معاونت شامل کی گئی۔
    • Qualcomm وائرلیس ماڈیولز کے لیے ath11k ڈرائیور نے 160 میگاہرٹز رینج میں اسپیکٹرل اسکیننگ کے لیے سپورٹ شامل کیا ہے، ملٹی تھریڈڈ NAPI کو لاگو کیا ہے، اور Qualcomm WCN6750 Wi-Fi چپس کے لیے بہتر سپورٹ کیا ہے۔
    • پائن فون کی بورڈ، انٹر ٹچ ٹچ پیڈس (تھنک پیڈ P1 G3)، ایکس باکس اڈاپٹیو کنٹرولر، فینکس آر سی فلائٹ کنٹرولر، وی آر سی-2 کار کنٹرولر، ڈوئل سینس ایج کنٹرولر، آئی بی ایم آپریشن پینل، ایکس بکس ون ایلیٹ ریموٹ، ٹیبلیٹس ایکس پی این ایس پی اور Intuos Pro Small (PTH-460)۔
    • Aspeed HACE (Hash اور Crypto Engine) کرپٹوگرافک ایکسلریٹر کے لیے ڈرائیور شامل کیا گیا۔
    • مربوط Thunderbolt/USB4 Intel Meteor Lake کنٹرولرز کے لیے تعاون شامل کیا گیا۔
    • Sony Xperia 1 IV، Samsung Galaxy E5، E7 اور Grand Max، Pine64 Pinephone Pro اسمارٹ فونز کے لیے سپورٹ شامل کی گئی۔
    • ARM SoC اور بورڈز کے لیے شامل کردہ سپورٹ: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 اور RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064, IPQ2.0, IP8062, IP8065Qt8, IPQt8195, IPQ4/V BL i.MX4MM OSM-S, MT1 (Acer Tomato), Radxa ROCK XNUMXC+, NanoPi RXNUMXS Enterprise Edition, JetHome JetHub DXNUMXp۔ SoC Samsung، Mediatek، Renesas، Tegra، Qualcomm، Broadcom اور NXP کے لیے اپ ڈیٹ کردہ ڈرائیورز۔

اسی وقت، لاطینی امریکن فری سافٹ ویئر فاؤنڈیشن نے مکمل طور پر مفت کرنل 6.1 - Linux-libre 6.1-gnu کا ایک ورژن تشکیل دیا، جو فرم ویئر اور ڈرائیوروں کے عناصر سے پاک ہے جس میں غیر مفت اجزاء یا کوڈ کے حصے ہیں، جس کا دائرہ کار یہ ہے۔ کارخانہ دار کی طرف سے محدود. نئی ریلیز نئے rtw8852b ڈرائیور اور DTS فائلوں کو AArch64 فن تعمیر پر مبنی پروسیسرز کے ساتھ مختلف Qualcomm اور MediaTek SoCs کے لیے صاف کرتی ہے۔ ڈرائیوروں اور سب سسٹمز amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI میں بلاب کلیننگ کوڈ کو اپ ڈیٹ کیا گیا۔ پرانے ڈرائیورز tm6000 TV کارڈز، cpia2 v4l، sp8870، av7110 کی صفائی درست کر دی گئی ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں