FreeBSD 15.0

დავით მაჭახელიძე

რელიზი გამოვიდა ვერსია 14.0-ის გამოსვლიდან რამდენიმე თვის შემდეგ, გამოცხადდა FreeBSD 15.0-ის რელიზი. ხელმისაწვდომია გამოსახულებები შემდეგი არქიტექტურებისთვის: amd64, aarch64, armv7, powerpc64, powerpc64le და riscv64. დამატებით, ხელმისაწვდომია გამოსახულებები ვირტუალიზაციის სისტემებისთვის (QCOW2, VHD, VMDK, raw) და ღრუბლოვანი პლატფორმებისთვის Amazon EC2, Google Compute Engine და Vagrant.

FreeBSD 15-ის ციკლში ცვლილებები, ვერსიის ციკლის ხანგრძლივობის (15.0) გადახედვის შემდეგ გაიზარდა 5-დან 4 წლამდე, ასევე გადაიხედა ყველა ვერსიის მხარდაჭერის პოლიტიკა. დამატებითი ვერსიები (15.1, 15.2, 15.3) გამოვა ძირითადი განვითარების ციკლის ფარგლებში, რომელთა მხარდაჭერის ხანგრძლივობა იქნება დაახლოებით 6 თვე და არა სამი წელი, როგორც ძირითადი ვერსიისთვის. მხარდაჭერის ხანგრძლივობის ოპტიმიზაციის მიზნით, გადაწყდა უფრო ხშირი ვერსიების გამოშვება, რათა უზრუნველყოფილიყო ბირთვების უფრო სტაბილური განახლება, რათა შენარჩუნებულიყო საშუალოდ 6-თვიანი ციკლები (მაგალითად, ვერსია 15.3 მხარდაჭერილი იქნება 2027 წლის ივლისამდე, 16.0 – 2027 წლის ოქტომბერში, 15.4 – 2028 წლის ივლისში, 16.1 – 2028 წლის ოქტომბერში).

FreeBSD 15.0-ის ძირითადი სიახლეები (დამატებითი რელიზის შენიშვნებიდან, რომლებიც ჩვეულებრივ განახლდება ყოველი 15.0 რელიზისთვის, ავსებს ცვლილებებს, რომლებიც შევიდა ვერსიებში 14.1, 14.2 და 14.3):

  • გადამუშავებულია pkg პაკეტის მართვის მექანიზმი ძირითადი სისტემის კომპონენტების ინსტალაციისა და განახლებისთვის. pkgbase კომპონენტების ინსტალაცია ახლა შესაძლებელია პაკეტების საცავიდან ოფლაინ განახლებებისთვის ან pkg.freebsd.org საცავიდან. pkg-ის კონფიგურაციაში (/etc/pkg/FreeBSD.conf) დამატებულია FreeBSD-base პაკეტებზე გადასასვლელად. bsdinstall ინსტალერი გადამუშავებულია ინსტალაციების შესაქმნელად: კლასიკური და პაკეტის სისტემით (pkgbase). კლასიკური სისტემების მხარდაჭერა, სადაც ძირითადი კომპონენტები იმართება წყაროებიდან ან განახლდება freebsd-update-ის მეშვეობით, შეწყდება FreeBSD 16 ციკლში. გარდა ამისა, სისტემის განახლების კლასიკური მეთოდები FreeBSD-base განახლებების მისაღებად, შეზღუდული იქნება ფუნქციონალში პაკეტებზე გადასასვლელად და მხოლოდ განახლებების მისაღებად, მაგრამ არა სისტემის აღდგენისთვის ინსტალაციისთვის.
  • გამარტივებულია FreeBSD სისტემების ინსტალაცია პროგრამული RAID-ით, რომელიც არ საჭიროებს root განყოფილების არსებობას. ახლა root-ის განთავსება შესაძლებელია პროგრამულ iso-გამოსახულებაზე და პროგრამულ მასივზე სისტემის ჩატვირთვისთვის. ჩატვირთვის ეტაპზე root სისტემა განთავსდება ჩატვირთვის განყოფილების შესანარჩუნებლად, რომელიც შემდეგ გამოიყენება დისკის განყოფილებების ავტომატური კონფიგურაციისთვის (მაგალითად, სისტემის განყოფილებების კონფიგურაციისთვის).
  • ოპტიმიზებულია კონტექსტის გადართვის პროცესი, რაც მნიშვნელოვნად ამცირებს ბირთვის კონტექსტიდან მომხმარებლის სივრცეში გადართვის დროს და არ საჭიროებს ბირთვის კონტექსტის შენახვას. კონტექსტის გადართვა მოიცავს პროცესორის მდგომარეობის გადართვას, რომელიც იმართება ბირთვის დონეზე და მომხმარებლის აპლიკაციის რეჟიმში.
  • შეწყვეტილია 32-ბიტიანი არქიტექტურების i386, armv6 და powerpc მხარდაჭერა. 32-ბიტიანი არქიტექტურებიდან შენარჩუნებულია armv7-ის მხარდაჭერა. 32-ბიტიანი არქიტექტურების და COMPAT_FREEBSD32 თავსებადობის რეჟიმის მხარდაჭერის მოხსნა 32-ბიტიანი მომხმარებლის აპლიკაციების გასაშვებად 64-ბიტიანი ბირთვის გარემოში დაგეგმილია FreeBSD 16-ის მომდევნო ვერსიის გამოშვებისთვის.
  • ბირთვში დამატებულია სისტემური გამოძახება Linux-თან თავსებადი inotify მექანიზმის ინტერფეისით ფაილურ სისტემაში ცვლილებების თვალყურის დევნებისთვის.
  • დამატებულია ფაილური ბმულების მექანიზმის მხარდაჭერა (Solaris-ის ბირთვში არსებული ფაილური ბმულების ანალოგი), რომელიც მომხმარებლის სივრცეში იძლევა სპეციალური ფაილური სისტემის დესკრიპტორების გამოყენების საშუალებას, რაც აუცილებელია ZFS-ისთვის და NFSv4-ისთვის. აღინიშნება, რომ FreeBSD-სა და Linux-ისთვის ბმულების მექანიზმს აქვს მნიშვნელოვანი განსხვავებები დესკრიპტორებთან მუშაობის მექანიზმებსა და ფაილური სისტემის ობიექტებზე წვდომის მექანიზმებში, რის გამოც მათი გამოყენება ერთმანეთთან შეუთავსებელი იქნება. ფაილურ ბმულებთან მუშაობა ასევე გაამარტივებს სისტემური გამოძახებების მუშაობას, მაგალითად, სისტემური გამოძახება readdir()-ისთვის.
  • დამატებულია სისტემური გამოძახება mac_do, რომელიც საშუალებას იძლევა გაუშვას მრავალდონიანი წვდომის კონტროლის სისტემით (MAC) მართული ბრძანებები. სისტემური გამოძახებისთვის დამატებულია მომხმარებლის უტილიტა mdo, რომელიც su-ს ანალოგია, მაგრამ არ საჭიროებს suid root-ს.
  • განახლებული DRM-დრაივერები i915 და amdgpu სინქრონიზებულია Linux 6.9-ის კოდის ბაზასთან. დამატებულია დრაივერები rtw88 (Realtek 802.11n/ac), rtw89 (Realtek 802.11ax) და iwlwifi (Intel 02.11a/b/g/n/ac/ax/be) სინქრონიზებულია Linux 6.17-ის კოდის ბაზასთან.
  • დამატებულია TLS აპარატურული აჩქარების მხარდაჭერა ბირთვის მხარეს (KTLS).
  • დამატებულია უტილიტა sndctl ხმოვანი მოწყობილობების სამართავად.
  • დამატებულია mididump უტილიტა MIDI 1.0 ფაილების ტექსტურ ფორმატში ჩასაწერად.
  • bhyve ჰიპერვიზორში დამატებულია “slirp” ოპერაციული რეჟიმი, რომელიც იყენებს libslirp ბიბლიოთეკას პაკეტების ტრანსლაციისა და ქსელური ურთიერთქმედების ორგანიზებისთვის. “slirp” რეჟიმი საშუალებას იძლევა ქსელური კავშირების დამყარებას სტუმარი სისტემის შიგნიდან ჰოსტის მხარეს ქსელური ხიდის კონფიგურაციის გარეშე, სტუმარი სისტემის გამჭვირვალე მუშაობისთვის.
  • FreeBSD-ის საბაზისო სისტემაში Kerberos-ის განახლება Heimdal Kerberos-დან გადატანილია MIT Kerberos-ზე. Heimdal Kerberos-ის შესანარჩუნებლად ბირთვის აწყობისას შესაძლებელია WITHOUT_MITKRB5 ოფციის გამოყენება. FreeBSD 16-ში Heimdal Kerberos-ის მხარდაჭერა მთლიანად მოიხსნება.
  • დამატებულია სისტემური გამოძახებების setgroups, getgroups და initgroups მხარდაჭერა მომხმარებლის სივრცეში დამატებითი ჯგუფების სიების სამართავად (ადრე FreeBSD-ში სისტემური გამოძახებები შეზღუდული იყო მომხმარებლის სივრცეში ჯგუფების სიის სამართავად და მხოლოდ ერთი მომხმარებლისთვის).
  • pkg პაკეტების საცავში მოხდა გადასვლა FreeBSD-kmods პაკეტებზე, რომლებიც შეიცავს ბირთვის მოდულებს, აწყობილს კონკრეტული 15.x-RELEASE ვერსიისთვის და არა მიმდინარე 15-STABLE ვერსიისთვის. FreeBSD-kmods პაკეტები ხელმისაწვდომი იქნება ცალკე საცავებში, რომლებიც განსხვავდება ძირითადი პაკეტების საცავისგან (მაგალითად, განახლებული სისტემისთვის). გარდა ამისა, /etc/pkg/FreeBSD.conf-ში სახელები “FreeBSD” და “FreeBSD-kmods” შეცვლილია “FreeBSD-ports” და “FreeBSD-ports-kmods”-ით.
  • NFS-ში დამატებულია CLONE ოპერაციების მხარდაჭერა, რაც საშუალებას იძლევა განხორციელდეს NFSv4.2-ის იმპლემენტაციაში და უზრუნველყოს ფაილების ასლების შექმნის შესაძლებლობა ფაილის სრული ასლის შექმნის გარეშე. გარდა ამისა, განხორციელებულია NFS ფაილური ბმულების მხარდაჭერა ZFS-ის მეშვეობით.
  • amd64 პლატფორმებზე დამატებულია 4TB-ზე მეტი ოპერატიული მეხსიერების (RAM) მხარდაჭერა.
  • დამატებულია ufshci დრაივერი Universal Flash Storage (UFSHCI) მეხსიერების კონტროლერების სამართავად.
  • Sysctl net.link.bridge.member_ifaddrs ნაგულისხმევად დაყენებულია 0-ზე, ანუ საბაზისო სისტემაში შესაძლებელი იქნება IP-მისამართებისთვის გადაცემის გამორთვა.
  • დამატებულია UFS ბირთვში მოვლენების ჟურნალირების მექანიზმი, რომელიც მხარს უჭერს 2,000,000,000-ზე მეტ inode-ს. UFS1 ბირთვის იმპლემენტაციაში ახლა მხარდაჭერილია 2038 წელი (ახლა მხარდაჭერილია თარიღები 2106 წლამდე).
  • დამატებულია SO_SPLICE სისტემური გამოძახების მხარდაჭერა TCP-კავშირების ოპტიმიზაციისთვის (სისტემური გამოძახების ანალოგი, რომელიც გამოიყენება მომხმარებლის სივრცეში კოპირების ოპტიმიზაციისთვის).
  • grep უტილიტაში ნაგულისხმევად ჩართულია რეგულარული გამოსახულებების მხარდაჭერა ფაილების მოსაძებნად.
  • დამატებულია nvmft მუშაობის რეჟიმი NVMe over Fabric კონტროლერების სამართავად და nvmecontrol უტილიტა NVMe over Fabric კონტროლერების მართვისა და კონფიგურაციისთვის.
  • date უტილიტაში დამატებულია დროის ნანოწამებში გამოტანის მხარდაჭერა, მაგალითად, “date -Ins” გამოაქვს “2024-04-22T12:20:28,763742224+02:00”.
  • jail-ში დამატებულია zfs.dataset ველის მხარდაჭერა ვირტუალურ jail-გარემოში ZFS ტომებისთვის შექმნილი ფაილური სისტემების სამართავად. jail უტილიტაში დამატებულია “meta” და “env” პარამეტრების მხარდაჭერა, რომლებიც საშუალებას იძლევა გამოიყენოს პარამეტრები შვილობილი პროცესების გასაშვებად. დამატებულია jail-გარემოს მართვის მხარდაჭერა jail-დესკრიპტორების მეშვეობით, რისთვისაც ბირთვში დამატებულია სისტემური გამოძახებები jail_set და jail_get, ასევე დამატებულია უტილიტები jail_attach_jd და jail_remove_jd. დამატებულია kevent შეტყობინების მექანიზმის მხარდაჭერა სისტემის მოვლენების თვალყურის დევნებისთვის, მაგალითად, Jail-ის შექმნა და წაშლა.
  • newsyslog უტილიტაში დამატებულია ჟურნალის როტაციული ფაილების შეკუმშვის მექანიზმი (bzip2, xz, zstd, gzip), რომელიც იმართება შესაბამისი ჟურნალის შეკუმშვის პარამეტრებით (J, X, Y, Z) newsyslog.conf ფაილში.
  • C-ენის კომპილატორებში ნაგულისხმევად ჩართულია SIMD სტრუქტურებთან მუშაობის მხარდაჭერა SIMD პროცესორებზე დაყრდნობით.
  • Gallant რელიზში, რომელიც გამოიყენება დესკტოპ სისტემებში, დამატებულია 4300-ზე მეტი ახალი პაკეტი, რომლებიც შეტანილია საბაზისო სისტემაში და მომხმარებლის უტილიტებში.
  • tty-ში ნაგულისხმევად ჩართულია IUTF8 დროშის მხარდაჭერა, რაც ამარტივებს UTF-8 სიმბოლოების მართვას Backspace-ზე დაჭერისას.
  • dialog უტილიტა, რომელიც გამოიყენება bsdconfig უტილიტებში და bsdinstall ინსტალერში, გადატანილია bsddialog-ზე.
  • adduser უტილიტაში, რომელიც გამოიყენება bsdinstall-ში, დამატებულია ZFS dataset-ის (ტომებისთვის შექმნილი ფაილური სისტემები) შექმნის მხარდაჭერა მომხმარებლის ანგარიშებისთვის, თუ ZFS dataset მომხმარებლისთვის უკვე გამოიყენება მომხმარებლის პროფილებისთვის. ასევე დამატებულია ZFS-ის მომხმარებლის პარამეტრების ავტომატური ინსტალაციის მხარდაჭერა. პარამეტრების სამართავად adduser.conf-ში დამატებულია “Zcreate” და “Zencrypt” პარამეტრები.
  • დამატებულია OCI-თან თავსებადი კონტეინერების გამოსახულებების მხარდაჭერა და Oracle Cloud-ისთვის ჩატვირთვის მხარდაჭერა.
  • დამატებულია “small” ინსტალაციის გამოსახულება ღრუბლოვანი პლატფორმებისთვის, რომელიც გამოიყენება AWS EC2-ში. ძირითადი გამოსახულებისგან განსხვავებით, ის არ შეიცავს ისეთ ბირთვის კომპონენტებს, როგორიცაა კონსოლი, 32-ბიტიანი ბიბლიოთეკები, LLDB დებაგერი, Amazon SSM Agent და AWS CLI. 76%-ით შემცირებულია “base” გამოსახულების ზომა EC2-ისთვის.
  • ბირთვის კონფიგურაციაში ნაგულისხმევად გამორთულია net.inet.tcp.nolocaltimewait ოფცია, ანუ დაშვებულია TIME_WAIT-კავშირების ქცევის მართვა TCP-კავშირებისთვის, რომლებიც დაყენებულია ლოკალური სისტემიდან. სისტემის ქცევის შესაცვლელად დაშვებულია sysctl net.inet.tcp.msl_local-ის შეცვლა.
  • ბირთვის კონფიგურაციაში ნაგულისხმევად გამორთულია localhost-თან კავშირების დამყარების მხარდაჭერა INADDR_ANY პარამეტრის გამოყენებით. მხარდაჭერის ჩასართავად შესაძლებელია sysctl net.inet.ip.connect_inaddr_wild sysctl-ის მნიშვნელობის 1-ზე შეცვლა.
  • მთლიანად მოხსნილია სისტემური გამოძახება gvinum-ის მხარდაჭერა, რომელიც გამოიყენებოდა RAID-ის სამართავად. Gvinum-ის იმპლემენტაცია 15 წელზე მეტი ხნის განმავლობაში არ განვითარებულა, რამაც გამოიწვია ის, რომ ბირთვში არ იყო ახალი ფუნქციები, რომლებიც აუცილებელი იქნებოდა თანამედროვე სისტემებისთვის. gvinum-ის ნაცვლად რეკომენდებულია gconcat, gmirror, gstripe, graid ან zfs-ის გამოყენება.
  • FreeBSD 16-ის ბირთვიდან და პორტებიდან მოხსნილია agp (Accelerated Graphics Port) მხარდაჭერა, რომელიც გამოიყენებოდა ძველი ვიდეო ბარათების მუშაობისთვის. ასევე მოხსნილია შემდეგი დრაივერების მხარდაჭერა: fdc (IBM PC Floppy Disk Controller), firewire (IEEE1394 Serial Bus), le (AMD Am7900 LANCE და Am79C9xx Ethernet) და upgt (USB 802.11g).
  • მოხსნილია readdir_r სისტემური გამოძახების მხარდაჭერა.
  • SNMP-აგენტ bsnmpd-ში დამატებულია UDP პროტოკოლის მხარდაჭერა.
  • გაუმჯობესებულია RSA გასაღებების მხარდაჭერა SSH-სთვის EC2 AMI-ში. OpenSSH-ში შეწყვეტილია DSA-ს მხარდაჭერა. publickey-ის მხარდაჭერა, რომელიც ადრე DES სტანდარტზე იყო დაფუძნებული.
  • საბაზისო სისტემიდან მოხსნილია ftpd და shar უტილიტები, რომელთა ნაცვლად ახლა უნდა იქნას გამოყენებული პორტები ftp/freebsd-ftpd და sysutils/freebsd-shar.
  • მოხსნილია fdisk უტილიტის მხარდაჭერა, რომლის ნაცვლად ახლა უნდა იქნას გამოყენებული უტილიტა gpart.
  • კონსოლის ქვესისტემიდან ამოღებულია მექანიზმი syscons, რომელიც არ არის თავსებადი UEFI-სთან, არ უჭერს მხარს UTF-8-ს და შეიცავს ბევრ მოძველებულ კოდს.
  • განახლებულია შემდეგი ვერსიები: LLVM 19.1.7, OpenSSH 10.0p2, OpenSSL 3.5.4, OpenZFS 2.4.0rc4, Lua 5.4.8, jemalloc 5.3.0, Awk 20250804 (UTF-8 მხარდაჭერით), bc 7.1.0, unicode 16.0.0, ncurses 6.5, libarchive 3.8.2, tcpdump 4.99.5, unbound 1.24.1, less 679, file 5.46, GoogleTest 1.15.2.

დაკავშირებული ბმულები:

  1. რელიზის შენიშვნები (https://www.freebsd.org/news/n…)