نوفمبر 17، 2011

طريقة ترقية نظام OpenBSD من الإصدار 4.9 إلى 5.0 عبر شبكة الإنترنت


تلميح: نظام OpenBSD من المشاريع التي تعتني جيدا بجودة التوثيق وتغطي من خلاله كل إمكانيات و آليات النظام، إعداداته و تفاصيل التثبيت و الترقية. للحصول على تفاصيل أكثر بخصوص الترقية من الإصدار 4.9 إلى 5.0 يرجى مراجعة الدليل.


من على الطرفية (Terminal/Xterm) ننفذ ما يلي:
* تسجيل الدخول على حساب الجذر:
su -l root

* نترك نسخة احتياطية مضغوطة بصيغة gz لمجلد /etc/ الذي يضم كل إعدادات النظام الحالي (4.9). خطوة احترازية.
tar cvzfpP ~/etc_backup.gz /etc
ثم نستعرض محتوى الملف الذي أنشأناه كي نتيقن من سلامته.
tar tvzfpP ~/etc_backup.gz


* نترك نسخة احتياطية لكل ملفات الجلسة لحساب الجذر (root).
tar cvzfpP ~/root_dotfiles_backup.gz /root/.*
ثم نستعرض محتوى الملف الذي أنشأناه كي نتيقن من سلامته.
tar tvzfpP ~/root_dotfiles_backup.gz


* نحدد متغيرة مؤقتة نحتفض فيها بإحدى المرايا التي تستضيف مشروع OpenBSD.
SERV=http://artfiles.org/openbsd/5.0/`uname -r`

بعدها نحمل ثلاثة ملفات أساسية في هذه المرحلة.
bsd.rd - و هو ملف على شاكلة صورة لقرص إقلاع حي مصغر يضم نواة الإصدار الجديد (5.0) و أهم الأدوات التي يمكن أن تستعمل في صيانة النظام و ترقيته.
etc50.gz - ملف مضغوط يضم إعدادات النظام القياسية للإصدار 5.0.
xetc50.gz - ملف مضغوط يضم الإختلافات بين إعدادات النظام القياسية السابقة (4.9) و الحالية 5.0. يستعمل لتسهيل ترقية و ترقيع الإعدادات بين الإصدارين.

الملفات الثلاثة سنحملها و نضعها في المجلد الجذر
ftp -C -o /bsd.rd $SERV/bsd.rd
ftp -C -o /etc50.tgz $SERV/etc50.tgz
ftp -C -o /xetc50.tgz $SERV/xetc50.tgz


* بعدها نعيد تشغيل النظام و نكتب السطر التالي لنقلع بقرص نواة الإصدار الجديد (5.0)
boot> boot /bsd.rd


* بعد انتهاء الإقلاع سيطلب المثبت تحديد أحد الإختيارات (التثبيت، الترقية، سطر الأوامر).
(I)nstall, (U)Upgrade or (S)hell
سنختار الترقية بكتابة الحرف U ثم إدخال.


* سيطلب منا تحديد لوحة المفاتيح.
Choose your keyboard layout (L)
في حالتي اخترت uk لتحديد خريطة المملكة المتحدة.


* سيطلب منا تحديد القرص الذي يحتوي على النظام المثبت.
Which one is the root disk? (or 'done') [wd0]
يكفي الضغط على إدخال اذا تعرف عليه تلقائيا كما هو مفترض [wd0]


* بعدها سيطلب منا تحديد القسم الذي يعبر عن جدر النظام.
Root filesystem? [wd0a]
يكفي الضغط على إدخال اذا تعرف عليه تلقائيا كما هو مفترض [wd0a]
ليبدأ فحصه و التأكد من تناسقه و سلامة الملفات عليه.
Checking root filesystem (fsck -fp /dev/wd0a)...OK
بعدها سيتم وصله تلقائيا.
Mounting root filesystem (mount -o ro /dev/wd0a /mnt)...OK


* ثم سيحاول المثبت إعداد الإتصال بالشبكة المحلية التي يجب أن تكون قادرة على الخروج إلى شبكة الأنترنت لتحميل باقي الملفات (في حدود 225MB)

DHCPDISCOVER on rl0 to 255.255.255.255 port 67 interval 1
DHCPDISCOVER on rl0 to 255.255.255.255 port 67 interval 2
DHCPOFFER from 192.168.1.1 (00:15:56:db:b5:82)
DHCPREQUEST on rl0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1 (00:15:56:db:b5:82)
bound to 192.168.1.11 -- renewal in 302400 seconds.

Do you want to do any manual network configuration? [no]

إضغط على زر إدخال إذا لم تكن تحتاج إلى تحديد إعدادات يدوية.


* سيسأل المثبت إذا كنا نريد فحص حالة باقي الأقسام. سنجيب بلا كما هو مفترض.
Force checking of clean non-root filesystems? [no]

* بعدها ستبدأ مرحلة تحميل الملفات ثم الترقية.
Let's upgrade the sets!

أولا سنحدد مصدر ملفات الإصدار الجديد (5.0).
Location of sets? (cd disk ftp http or 'done') [cd]
سنكتب http ثم إدخال.

تلميح: نفس خطوات الترقية تنطبق مهما اختلف مصدر الملفات (قرص مدمج، قرص صلب، خادم http أو خادم ftp) 

ثم تحديد الوسيط إذا كنا في شبكة يتحكم تلبية طلبتها وسيط. فقط إدخال لتحديد لا كما هو مفترض.
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]

بعدها سيطلب منا تحديد المرآة أو الخادم.
Server? (hostname, list#, 'done' or '?') [ftp5.eu.openbsd.org]

سنحدد مثلا artfiles.org أو نكتفي بالمرآة التي اقترحاها المثبت ثم نضغط على إدخال.

سنترك خيار تحديد المجلد الذي سيتم تحميل الملفات منه كما هو
Server directory? [openbsd/5.0/i386]


بعدها سيطلب منا تحديد ملفات حزم النظام. يكفي الضغط على إدخال كما هو مفترض.
Set name(s)? (or 'abort' or 'done') [done]
ليبدأ تحميل الملفات ثم فك الضغط عنها:
bsd , bsd.rd , bsd.mp , base50.tgz , comp50.tgz , man50.tgz
game50.tgz , xbase50.tgz, xshare50.tgz , xfont50.tgz , xserv50.tgz

بعد انتهاء الترقية
Making all device nodes...done
Please run sysmerge(8) after rebooting to repair your /etc configuration

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

بعدها سينتهي المثبت ثم سنكتب الأمر reboot كي نعيد تشغيل الجهاز.
reboot


* عند الإقلاع المقبل سندخل المعيار boot -s حتى نقلع على نمط المستخدم الواحد (single user mode) بهذف ترقية إعدادت النظام.
boot> boot -s

في آخر مرحلة الإقلاع سيطلب منا تحديد الشل (قشرة سطر الأوامر) التي سنستخدمها. سنحدد /bin/ksh
Enter pathname of shell or RETURN for sh: /bin/ksh

بعدها سنعيد وصل قسم الجذر بصلاحيات القراءة و الكتابة بدل القراءة فقط.
mount -u -o rw /
ثم حسب الطريقة التي اتبعتها في تقسيم القرص الصلب عند تثبيت نظام OpenBSD قد تحتاج إلى وصل قسم /usr الذي يضم أداة sysmerge. لذلك يفضل أن تنفذ هذا الأمر لوصل كل الأقسام.
mount -a

بعدها سنشغل أداة sysmerge التي ستتكلف بعملية ترقية و دمج إعدادات النظام بطريقة تلقائية قدر المستطاع. المهم هو أنه سبق لنا و أن تركنا نسخة إحتياطية لكل إعدادت النظام السابق لذلك لا خوف من إعداد النظام بطريقة تخسره القدرة على الإقلاع سواء بالإعدادت السايقة أو الجديدة.

سننفذ:
/usr/sbin/sysmerge -s /etc50.tgz -x /xetc50.tgz

تلميح: الخطوات التالية ستتغير و تختلف حسب الطريقة التي أعددت بها نظامك السابق (الخدمات التي فعلتها، إلخ).  في حالتي أسخدم نظام مكتبي بإعداداته القياسية لذلك تدخلي اليدوي كان محدودا. الأفضل أن تراجع أهم التنبيهات و التلميحات بخصوص الترقية إلى الإصدار 5.0.

* بالنسبة لإعدادات الملف /etc/dhclient.conf إخترت حدف النسخة الجديدة المقترحة كما هو موضح في التوثيق
use 'd' to delete the temporary ./etc/dhclient.conf


* بالنسبة لإعدادات الملف /etc/mail/localhost.cf إحترت تثبيت النسخة الجديدة المقترحة.
Use 'i' to install the temporary ./etc/mail/localhost.cf


* نفس الشيء بالنسبة لملف الإعدادات /etc/mail/sendmail.cf قبلت بالنسخة الجديدة.


* أيضا نفس الشيء بالنسبة لملف الإعدادات /etc/rc.d/rc.subr قبلت بالنسخة الجديدة.


* بالنسبة لملف الإعدادات /etc/sysctl.conf قبلت بالنسخة الجديدة لأني لا إحتاج سوى إزالة علامة # عن السطر
#machdep.allowaperture=2

بعد انتهاء عملية ترقية الإعدادات نفذت الأمر التالي لإزالة علامة # عن السطر المذكور اعلاه.
perl -p -i.bak -e 's/#machdep.allowaperture=2/machdep.allowaperture=2/' /etc/sysctl.conf


الآن لم يتبقى سوى حدف الملفات التي تم الإستغناء عنها في هذا الإصدار.
rm /etc/security
rm -rf /etc/X11/xkb
rm -rf /usr/lib/gcc-lib/$(arch -s)-unknown-openbsd4.?
rm -rf /usr/bin/perl5.10.1
rm -rf /usr/libdata/perl5/$(arch -s)-openbsd/5.10.1

بعدها أعد تشغيل النظام بواسطة الأمر reboot.
reboot


الخطوة الأخيرة هي ترقية حزم البرامج المثبتة. من الطرفية نفذ ما يالي:
su -l root

export PKG_PATH=http://artfiles.org/openbsd/`uname -r`/packages/`uname -m`
export FETCH_PACKAGES=yes

pkg_add -u

تلميح: لا أستخدم Ports لتجميع حزم البرامج من المصدر لأن قدرات و مواصفات الجهاز محدودة لذلك أكتفي بالحزم الجاهزة.

تلميح: في حالة احتجت إلى تثبيت أو تحديث ملفات البرامج الثابتة للعتاد يكفي تشغيل الأداة fw_update

تلميح: بعد أن تتأكد من أن النظام يعمل بشكل جيد يمكن أن تتخلص من الملفات الإحتياطية السابقة
rm -i /bsd.rd /etc50.tgz /xetc50.tgz
rm -i /root/etc_backup.gz /root/root_dotfiles_backup.gz

ليست هناك تعليقات:

إرسال تعليق