إنشاء توزيعة generic مبنية على فيدورا


بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته


إنشاء توزيعة generic مبنية على فيدورا .

 



ماذا يعني هذا الكلام ؟

توفر فيدورا حزمتين بإسم fedora-release و fedora-logos تحتوي حزمة fedora-logos على شعار فيدورا وبعض الأيقونات الخاصة بها ومثلا ثيم plymouth وهو الشيء المتحرك الذي يظهر أثناء إقلاع النظام والحزمة الأخرى fedora-release توفر الملفات والإعدادات الضرورية التي تثبت هوية التوزيعة وإسمها على أنها إسما مثلا Fedora  وإصدارها مثلا 29 .

توفر أيضا فيدورا حزمتين بذات الهدف بإسم generic-release و generic-logos وتسمى generic أي تم نزع شعار فيدورا وإسم فيدورا إستبدل بإسم generic وبعدها يمكنك أن تفعل ما يحلو لك لاكن لا يمكنك أن تنشر شيء تعتبر خاص بك وفيه شعار فيدورا و إسمها .

الأن إذا أردت أن تقوم بعمل توزيعة للإستخدام الشخصي يمكنك بناء التوزيعة وإستبدال fedora-release و fedora-logos ب generic-release و generic-logos الذي سيختلف إسم التوزيعة سيصبح generic بدل Fedora وأيقونات وشعار فيدورا وثيم plymouth الذي يميزها لن تجده .

أما إذا أردت فعلا بناء توزيعة ونشرها بشكل رسمي ستحتاج ان تكون تعرف كيف تحزم وكيف تعمل مستودع خاص إن كان على copr مثلا أو غيره وتحتاج أن تعرف التصميم لإستبدال أيقونات فيدورا و ثيم plymouth بشيء خاص بتوزيعتك وهنا لن أدخل بهذا لأن الأمر معرفة متراكمة ولا يمكن شرحها بهذه السهولة لاكن يمكنك أن تبدأ بالتعديل على generic-release و generic-logos أو fedora-release و fedora-logos نفسهم (تحتاج معرفة بالتصميم وتحزيم rpm ) .

فإذا في هذا الشرح سأستخدم generic-release و generic-logos لإستبدال fedora-release و fedora-logos ,السبب لأنهم موجودين بالفعل في المستودعات الرسمية  .




ماذا أحتاج لأبدا العمل ؟

تحتاج فيدورا 64bit و مساحة فارغة كافية في القسم روت أظن 15 GB كافية .

تحتاج أن تعرف كيف تتعامل مع محرر النصوص vi .

سأستخدم sudo لبعض الصلاحيات الأفضل إستخدام sudo حتى تنتبه ما هي الأوامر التي تحتاج صلاحيات أغلبها لن يحتاج هذا .




لنبدأ .

1-أولا تثبيت mock وهو شيء مثل بيئة معزولة عن النظام الأساسي ,أيضا إضافة المستخدم الخاص بك لمجموعة mock حتى نسهل العمل.

sudo dnf install mock

sudo usermod -a -G mock $USER

بعد إضافة المستخدم الخاص بك لمجموعة mock نقوم بعمل إعادة إقلاع للنظام أو logout ثم ندخل من جديد وهذا أمر مهم .




2-من خلال mock عمل بيئة خاصة ب Fedora 29 64bit ,في المستقبل مع الوقت في حال توفر إصدارات أخرى من فيدورا فقط إستبدل 29 برقم الإصدار الجديد .

mock -r fedora-29-x86_64 --init




3-الأن إذا صح التعبير داخل بيئة mock نقوم بتثبيت بعض الأشياء كما في الأسفل (سأسمي الأمر ببيئة mock لتسهيل الشرح ) .

mock -r fedora-29-x86_64 --install lorax-lmc-novirt vim-minimal pykickstart git





4-من النظام الأساسي نعدل على إعدادات mock.

sudo vi /etc/mock/site-defaults.cfg

ندخل على هذا الملف ونبحث عن السطر الذي يحتوي config_opts['rpmbuild_networking'] نجعله True ونزيل التعليق من أول السطر إذا كان موجود أي نزيل علامة الشبكة # من أول السطر في حال وجودها .




5-نغلق selinux بشكل مؤقت هذا إن كان مفعل ,وهو ياتي مفعل بشكل إفتراضي في فيدورا .

sudo setenforce 0



6-ندخل على بيئة mock الأن كل شيء نفعله سيتم على هذه البيئة وليس النظام الأساسي .

mock -r fedora-29-x86_64 --shell --old-chroot



7-ندخل على مجلد ال home داخل بيئة mock ونستنسج المستودع الذي يحتوي ملفات فيدورا الرسمية التي تستخدم لبناء التوزيعة وهي ملفات تسمى kickstart (نلاحظ b f29 أي إخترت branch إصدار 29 إذا أردت التجريبية rawhide نختار master ).

ملفات kickstart شيء مثل إستمارة فيها أوامر محددة مثلا قم بإضافة االمستودع الفلاني أثناء بناء التوزيهة وقم بإضافة الحزمة الفلانية وقم بإضافة المستخدم الفلاني والكثير من الأمور (إبحثو في المدونة عن kickstart سبق وتكلمت عنها في شروحات قديمة غالبا ذات المبدأ لاكن قد تختلف طريقة بناء التوزيعة الان وإبحثو أيضا في وثائق fedora و redhat و centos)

cd /home

git clone -b f29 https://pagure.io/fedora-kickstarts





8-التعديل على ملفات kickstart .  

cd fedora-kickstarts

ls

ls |grep -i live
 
الان لو إستعرضنا الملفات نجد الكثير من الملفات الذي يهمنا الملفات التي تحتوي كلمة Live مثلا سأقوم بهذا الشرح ببناء توزيعة generic مبنية على Fedora Kde x86_64 وسأقوم بإضافة بعض المستودعات الحزم مثل flash player و ال codecs و مثلا vlc .

لهذا سأعدل على ملف بإسم  fedora-live-kde.ks لاكن بعد أن أقوم بعمل له ksflatten وهو بشكل بسيط إنشاء ملف جديد بإسم مختلف بعد قراءة ملف fedora-live-kde.ks وكل الملفات التي يعتمد عليها وإخراج كما قلت ملف kickstart أخر بإسم أخر وسيكون ملف وحيد يحتوي كل المعلومات وممكن أيضا التعديل على fedora-live-kde.ks والملفات التي يحتاجها قبل عمل له ksflatten لاكن هكذا أسهل للشرح .

ksflatten --config fedora-live-kde.ks -o flat-fedora-live-kde.ks --version F29


ls

 
نلاحظ سيتم إنشاء ملف جديد بإسم  flat-fedora-live-kde.ks وهذا الملف الذي سنعدل عليه .






9-التعديل على ملف flat-fedora-live-kde.ks .

vi flat-fedora-live-kde.ks


نلاحظ أضفت مستودعات من عندي بهذه الطريقة لاكن تجاهلو local-repo لأنه مستودع محلي وأعطيته أولوية من خلال cost=1.





نلاحظ أيضا في القسم %packages أولا ازلت fedora-release و fedora-logos من خلال عمل علامة ناقص قبل إسمهم ثم طلبت تثبيت generic-release و generig-logos .

مع الملاحظ إذا كان لديك حزم خاصة مثل حزم release و logos لتوزيعة خاصة بك يمكنك بذات الطريقة القيام بالامر أي إستبدال ال generic بالخاص بك لاكن بعد إضافة المستودع الخاص بك الذي يحتوي هذه الحزم شيء مثل إضافة المستودعات في أول صورة .



بذات القسم أي داخل packages% وقبل end% أضفت الحزم التي أريدها مثل ال codecs و vlc وغيره لاكن اكرر يجب أن تضمن انهم موجودين في المستودعات التي حدتها ويجب أن تتاكد أنهم لا يسببو مشاكل مثل تعارض في الحزم .





أخر ملاحظة إذا أضفت الكثير من الحزم حاول قدر الإمكان تقدير حجمهم وقم بتكبير part مثلا إلى 7500 أي 7.5GB تقريبا ,الأمر يعتمد على حسب ما أضفته لاكن حاول أن تقدر بشكل جيد على ان لا تكون الإضافة كبيرة جدا وإلا ستفشل عملية بناء التوزيعة .






10- أخيرا عملية البناء وقد تأخذ ساعات مثلا ساعتين على حسب سرعة جهازك وسرعة الإنترنت لديك وحجم الحزم الموجودة والتي أضفتها انت أيضا .

livemedia-creator --ks flat-fedora-live-kde.ks --no-virt --resultdir /var/lmc --project Generig-Kde-Live --make-iso --volid Generic-Kde-29 --iso-only --iso-name Generic-Kde-Live-29-x86_64.iso --releasever 29 --title Generic-Kde-Live --macboot

ممكن إستبدال كلمة Generic .






بعد الإنتهاء ستجد ملف ال iso داخل بيئة mock في var/lmc/ وفي الجهاز الحقيقي في هذا المسار .

ls /var/lib/mock/fedora-29-x86_64/root/var/lmc


أخر ملاحظة فشل البناء قد يحذف كل الحزم التي تم تنزيلها وإذا حاولة مرى أخرى سيقوم بإعادة تنزيل الحزم التي قد يصل حجمها على حسب مثلا 1.5GB أو أكثر لهذا أنا أستخدم مستودع محلي بطريقة ما لا مجال لشرحها هنا .

وبعد إعادة المحاولة إذا واجهت هذه المشكلة .
The results_dir (/var/lmc) should not exist, please delete or move its contents
قم بحذف المجلد المذكور .
rm -r /var/lmc



معلومات عامة .

ملفات kickstart تستخدم من قبل مثبت فيدورا وإسمه anaconda لأتممة التثبيت في الحقيقة هذا ما إستخدم هنا بطريقة  ما أي بإستخدام livemedia-creator قام الأخير بطريقة ما بإستخدام anaconda و ملف kickstart لاتممة التثبيت على image حددناها بحجم 7500 ثم قام بطريقة ما بعمل الازم لإنشاء ملف iso يحتوي ما قام بتثبيت anaconda على ال image المذكروة لاكن طبعا مع إعدادات معينة هذا بشكل بسيط .


المستودعات التي أضفتها :
repo --name="adobe"   --baseurl=http://linuxdownload.adobe.com/linux/x86_64/
repo --name="rpmfusion-free"      --baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/$basearch/os/
repo --name="rpmfusion-none-free" --baseurl=http://download1.rpmfusion.org/nonfree/fedora/releases/$releasever/Everything/$basearch/os/
repo --name="google-chrome" --baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64


الحزم التي أضفتها .
-fedora-release
-fedora-logos
generic-release
generic-logos

ffmpegthumbs
rpmfusion-free-release
rpmfusion-nonfree-release
adobe-release
flash-plugin
xterm
geany
geany-themes
google-chrome-stable
fedora-workstation-repositories
kde-connect
vlc
xine-lib
amrnb
gstreamer-plugins-good
lame-libs
libdvdnav
gstreamer-plugin-crystalhd
gstreamer1-plugins-bad-free-extras
gstreamer1-plugins-bad-nonfree
gstreamer1-plugins-good
gstreamer1-vaapi
amrwb
lame
gstreamer1-plugins-good-extras
gstreamer1-plugins-bad-free
gstreamer-plugins-bad-free
gstreamer1-plugins-bad-freeworld
libdvdread
gstreamer-ffmpeg
gstreamer-rtsp
gstreamer-plugins-espeak
gstreamer-plugins-bad-free-extras
flac
ffmpeg-libs
lsdvd
gstreamer-plugins-fc
gstreamer1-libav
ffmpeg
faad2
gstreamer-plugins-ugly
xine-lib-extras
gstreamer1-plugins-ugly
gstreamer-plugins-bad-nonfree
gstreamer-plugins-bad
compat-ffmpeg28
xine-lib-devel
x264



صور من التوزيعة نلاحظ ثيم plymouth الذي يميز فيدورا تم تغيره لشيء ليس بهذا الجمال لا ننسى أنه generic  وبعض الأيقونات الخاصة بفيدورا لن تجدها ستجد كما ترى شيء أخر generic.



















مرجع ترجع إليه في المستقبل .


شارك الموضوع

مواضيع ذات صلة

التسميات

2016 (1) 23 (1) 24 (3) 25 (1) 26 (1) 27 (1) 28 (1) 29 (1) 30 (1) 31 (1) إتصال (1) إختراق (2) أدة (1) أدوات (1) إرسال (1) أرش (1) إسترجاع (1) إستعلام (1) أشياء (7) أشياء تفعلها (8) إصدارات (1) إصلاح (6) إصلاحrealtek (1) إضافات (1) إضافة (1) أعجوبة (1) أعجوية (1) إعداد (1) إقاف (2) أقسام (1) ألعاب (2) الفرق (1) الفلاشة (1) القسم هوم (1) الكتابة بالعربية (1) إلى جانب (1) أندرويد (1) إنشاء (1) إنشاء مستودع (1) أيات (1) أيزو (1) أيقومات (1) أيقونات (1) ايقونات (2) باتش (1) بارامتر (1) بايثون (16) برامج (56) برامج إسلامية (2) برنامج (19) برودباند (1) بعد (7) بعد التثبيت (8) بلوتوث (1) بناء (1) بناء توزيعة (1) بيئة عمل (1) تثبيت (29) تجهيز (2) تجهيو من دون (2) تحزيم (2) تحقق (1) تحويل (1) تخصيص (5) ترجمة (2) ترقية (1) تسجيل الشاشة (1) تشغيل (3) تعريف (13) تعطيل (2) تعلم (6) تفعلها (7) تفعيل (2) تقطع الأحرف (1) تقعيل (1) تنزيل (2) تورنت (1) توزيعة (1) توسعة (1) ثيم (5) ثيمات (1) جافا (1) جماليات (7) جنوم (1) حجم (1) حرق (2) حزمة (1) حل (2) دالة (1) دورة (1) روتر (1) ريدهات (2) سكربت (2) شرح (11) صورة متحركة (1) فايرفوكس (1) فتح منفذ (1) فصل (1) فلاشة (3) فيدورا (29) فيدورا بالعربي (1) قاموس (1) كالي (2) كتاب (2) كتب (2) كرت (1) كروت الشاشة (1) كلمة المرور (2) كورس (1) كورورا (1) لعبة (1) لينكس (2) لينكسو (1) ماهو (6) متغير البيئة (1) مجانا (1) محاكات (2) محاكي (1) محمل الإقلاع إصلاح (1) محمول (1) مستودعات (1) مشكلة (2) ملف نصي (1) من إصدار (1) نظام ملفات (1) نمط (2) نواة (1) هجين (4) واجهات (1) وايرلس (1) وهمي (2) ويندوز (2) access token (1) active (2) add (1) after (7) alias (1) andoid studio (1) android (2) android studio (1) Apache (2) appstream (1) arboot (1) arboot fix (1) arch (3) archiso (1) arfedoraccframework (3) arfedoracontrolcenter (3) arfedy (1) atari (1) atom (1) ayat (1) bicon (1) blivet (1) blivet-gui (1) bls (1) bluetooth (1) book (2) books (2) bootloader fix (1) boxes (3) broadband (1) broadcom (1) broadwayd (1) bugzilla (1) build (2) builddep (1) bumblebee (1) bumbleebe (2) burn (2) byzanz (1) c# (1) calamares (1) camera (1) cannot open display (1) cannot open display: :0 (1) ccna (1) cd (2) centos (1) change (2) chsh (1) cisco (1) clion (1) clone (1) code.org (1) command (2) command line (2) commands (2) comps (1) connect (1) contra (1) convert (1) copr (1) could not connect to the debugger (1) cpu (1) cpufreq (1) createrepo (1) csharp (1) css (1) curlew (1) custom (2) dbus (3) dconf (1) dd (1) Decryption (1) defragment (2) desktop (1) desktop entry (1) dictionary (1) Digital signature (1) disks (1) dnf (14) do (7) docker (1) dolphine (1) download (2) downloads manager (1) dply (1) DRI PRIME (1) driver (9) dukto (1) e2fsck (1) efi (4) el forkane (1) elforkane (1) elif (1) emergency (3) emergency mode (3) emulator (1) enable (2) Encryption (1) entries (1) error mounting /dev/sd (1) ext4 (1) extend (1) extensions (2) fakenes (1) fast startup (2) fceux (1) fedora (45) fedora 25 alpha (1) fedora cloude (1) fedora28 (1) fedoraوفيدورا (1) fedy (1) fgmac (2) fgmac-24 (1) file (1) find (1) firefox (2) fix (10) flash mem (1) flash memory (2) flashplayer (1) flatpak (4) forward (1) fpaste (1) free (1) freebsd (1) freevpn (1) function (1) game (3) games (2) gedit (1) genymotion (1) gettext (1) gif (1) gimp (1) gio (1) github (5) github.io (1) glibc-common (1) gmaclinux (2) gnome (16) gnome boxes (1) gnome disk (1) gnome shell (13) gnome terminal (1) gnome-disks (1) gnu (1) godot (1) goldendict (1) google web designer (1) gpg (2) gradio (1) group (2) grub (7) grub2 (1) grubenv (1) gstreamer (1) gtk (8) gtk+ (1) gvrecord (1) hack (2) hash (4) hdmi (3) hibernate (1) home (2) hosspot (1) html (1) http (1) hybrid (2) icon (2) icons (3) ide (1) if (1) install (32) installf (9) installing (7) intellij idea (1) internet downlaod manager (1) iso (2) java (3) jdk (2) jetbrains (1) jetbrains toolbox (1) kali (2) kde (3) kernel (1) kernel parameters (1) key (1) kickstarts (3) korora (1) krita (1) kvm (2) kvm switches (1) lamp (1) laps (1) learn (1) legacy (1) legacy bios (3) libreoffice (2) libvirt (1) life is trange (1) linux (8) lutris (1) lv (1) lvm (2) mac (4) macros (1) mageia (1) make distro (1) mariadb (1) MariaDB and PHP Lamp Server (1) markdown (2) mate terminal (1) mbr (1) md5sum (1) mirro (1) mkconfig (1) mo (1) mono (2) monodevelop (2) mount (1) mp4 (1) multi screen (1) mumble (1) murmur (1) natron (1) nautilus (2) nes (1) netbeans (1) netcut (1) nintendo (1) ntfs (2) nvidia (8) objdesktop (1) ojuba (2) oop (1) opensuse (1) openvpn (1) opera (1) optirun (2) oracle (1) os.path (1) package (2) page (1) pages (1) pantheon (1) parameter (1) parameters (1) password (2) patch (1) path (2) pdf (1) peek (1) photoshop (1) php (1) phpstorm (1) plasma (2) plugin (3) plugins (1) plymouth (1) po (1) polkit (1) port (1) portable (1) portmatp (1) PostinstallerF (1) pot (1) powerline (2) powerline-go (1) preset (1) preview (1) primary display (1) primeos (1) primus (1) primusrun (1) private key (1) programs (3) protonvpn (1) pubg (1) public key (1) put (1) pv (1) pycharm (2) pygobject (4) pygtk (5) python (56) pythonk (1) qdbus (1) qemu (3) qemu-kvm (1) query (1) radio (1) raspberry pi (4) raspbian (2) reclaim space (2) record (1) redhat (3) remix (1) remix os (1) repo (4) repofrompath (1) repository (1) reset (1) resize2fs (1) rhel (1) router (1) rpm (7) rpmbuild (1) rtl8188ee (1) rtl8192c (1) rtl8192ce (1) rtl8192cu (1) rtl8192de (1) rtl8192ee (1) rtl8192se (1) rtl8723ae (1) rtl8723be (1) rtl8723com (1) rtl8821ae (1) rubymine (1) salix (1) scratch (2) scratch2.scratch 2 (1) screencast (1) script (2) seconday display (1) self (1) send (1) server (1) settings (2) sha1256sym (1) sha256sum (1) share desktop (1) shell (2) shortcut (1) shutter (1) skel (1) skel ماهو (1) skype (1) skype.برامج (1) slackware (1) software (1) soundcloud (1) source code (1) spec (2) spin (1) sqlmap (1) ssh (3) sshd (2) st-trans (1) steam (2) store (1) su (1) sudo (2) sudoers (1) swap (2) switch (2) Switchable Graphics (1) synergy (1) systemd (1) systemd preset (1) teamviewer (1) terminal (2) theme (5) things (7) thomson (1) thread (2) threading (2) thumbnails (1) to (8) tor (2) tor browser (1) torrent (1) transfer closed with 736700 bytes remaining to read (1) translation (1) turn off (2) tuxcut (1) txt (1) ubuntu (1) uefi (5) unable to mount location (1) unity (1) unity3d (1) upgrade (1) usb (1) useradd (2) utf-8 (1) vega (1) verify (1) vg (1) vgaوتبديل (1) vi (1) video (1) vim (1) vino (1) virsh (1) virt-install (1) virt-manger (1) virtual (1) virtual box (1) virtualbox (3) vmware (3) vnc server (1) vokoscreen (1) vpn (1) web server (1) webstorm (1) wifi (1) windows (4) windows-1256 (1) wine (1) woeusb (1) X Error: BadAccess (1) X Error: BadDrawable (1) xdg-mime (1) xdman (1) xfce (1) xfconf-query (1) yum (2) zeal (1) zealdocs (1)