ازيكم شباب انشاء الله بخير دائما انا اليوم وانا افحص منتدى اختراق المواقع رأيت ان الشيل ما ياخز حقه ورغم ان هو اهم شىء فقرت ان اكتب لكم الموضوع وااتى لكم للشيل الزى استخدمه انا
اولا لتحميل الشيل
MaD T@3LoB
-------------------------------------
ثانيا :- هو اكواد مكتوبه بلغه PHP ويمكنك من خلالها تطبيق اوامر النكس على السرفر برحتك ويوجد فى بعض الاحيان ان الشيل لا يعمل .......... طبعا لان يوجد نظام حمايه ويسمى safe mode وهيه نظام من نظم االحمايه حيث انه يتم عن طريق ملفات .htaccess وعند تطبيق اى امر من الاوامر تظهر الرساله الاتيه
No such file or dirctory او permmission denied
---------------------------------- الان نبدأ بالشرح بعد تحميل الشل وفك الضغط نقوم بفتح ملف php ونقوم بتغير الاسم والباس ورد والايميل لاحظ الصوره التوضيحيه
اولا نقوم بفتح الملف عن طريق نوت باد
نقوم بتغير الاسم والباس ورد والايميل كما بالصوره
ثم نقوم بحفظ النوت باد
ثم نقوم برفع الشيل على الموقع المخترق ونقوم بالدخول الى الرابط http://xxxxxxxxxxx.com/phpshell.php
xxxxxxxx : الموقع المخترق من قبلك وسنجد امامنا كلمه command وهيه اللي بنكتب امامها الاوامر وندخل الامر هذا مثلا ls /var/named وهو لاستعراض المواقع علي الموجوده علي السيرفر -=-=-=-=-= شــرح الاوامـــر =-=-=-=-=-=- خاص لتشييك على البروسيسور ps -aux
=-------------------------------------------=
تعديل ملف.
مثلا لتعديل الملف ضع الأمر
pico filename filenamr : اسم الملف المراد تعديله
سوف يفتح محرر النصوص
حرر ما ترغب به وأضغط ctrl x ثم أختر yes للحفظ no لعدم الحفظ
تزود معظم التوزيعات ببرنامج ليقوم باعداد الشبكة وما يتعلق بها ولكن ليصبح عليك سهلاً التعامل معها يجب معرفة المصطلحات الأساسية لذلك سأشرح ذلك ليس من خلال أدوات التوزيعة بل من خلال سطر الأوامر ولكن اذا أردت تطبيق ذلك عملياً تذكر أن لديك أداة سهلة الإستعمال وأن ما أكتبه هنا ليس إلا لمعرفة المصطلحات الأساسية
حتى لو كان جهازك منفردا فأنت في شبكة ، فكما نعلم تعرف الشبكة على أنها ارتباط لحاسوبين أو أكثر معاً ولكن في لينكس نعرف الشبكة أنها حاسوب واحد أو أكثر !! لاغرابة وبرامج لينكس تتصل معاً على نفس الحاسوب في علاقة المخدِم والمخدَم أي server/client ، أحد طرق اتصال الحاسوب مع نفسه هي جهاز وهمي يسمى loop-back device أي الحلقة المفرغة ويتم إعطاء الجهاز عنوان انترنتIP address محدد ويحب في كل مرة يقلع فيها الحاسوب أن يتم تحديد هذا العنوان وهناك أكثر من طريقة لتحديد هذا العنوان منها أن تعطي جهازك عنوان ثابت ومحدد مثل 127.0.0.x حيث x عدد صحيح مثلاً 127.0.0.1 تسمى هذه الطريقة static ip تلميح
عناوين الإنترنت ip address عبارة عن رقم مكون من 32-بت أي 4 بايت للسهولة تمثل بأرقام بالنظام العشري يفصل بينها نقطة الرقم الأعلى أهمية (الأول من جهة اليسار) له معنى خاص يحدد حجم الشبكة ومعناه خارج نطاق بحث الكتاب
وهذه أسرع طريقة وهي مناسبة للشبكات الصغيرة تتولى هذه المهمة احدى ملفات ال /etc/rc.d/init.d/ وعادة ما يكون لإسم الملف علاقة ب local-network او inet أو ماشابه وتتنفذ ما يشبه هذا الأمر ifconfig lo 127.0.0.1 up lo تعني local أو loop-back.
أما الطريقة الأخرى هي أن يحدد العنوان في كل مرة يقلع فيها الحاسوب تبعاً للأجهزة المرتبطة بطريقة ديناميكية وهي طبعا أقل سرعة بكثير من الأولى ولكن هنا نتجنب تعطل الشبكة فحالة وجود جهازين لهما نفس العنوان حالة مستحيلة وتتطلب هذه الحالة وجود طريقة للإتصال بين الجهازين وعادة ما تكون بطاقة ايثرنت ويكون الجهاز هو /dev/eth0 ولإعطاء الجهاز عنوان انترنت نستخدم ifconfig eth0 up 192.168.32.117 netmask 255.255.255.0 وهنا حددنا ال netmask وهذا أمر اختياري وكون الجهاز موجود في شبكة بها أكثر من جهاز فهذا لا يعني أنك لا تتستعمل ال loop-back بل يجب أن يكونا كلاهما معرفين أي أن يرى الجهاز نفسه وأن يرى غيره أي أن كلا الأمرين سينفذان
لإضافة الأجهزة داخل الشبكة إلى جداول التمرير نستعمل أمر route كما في الأمثلة التالية # add if given ip-address route add 12.168.32.117 # add a local-host given ip-address route add -host 127.0.0.1 lo # add a network given ip-address route add -net 12.168.32.117
جدر النار firewalls
جدر النار من أقوى التقنيات الحماية وأغلاها ثمنا في الأنظمة الأخرى مثل ويندوز حيث عليك شراؤها من شركات مثل Norton Symantec كما تشتري مضاد الفيروسات ، ولكن اذا كنت تستخدم لينكس فاعلم أن لديك جدر نار مبنية في نواة لينكس !! نعم داخل نواة لينكس الصغيرة!! وكل ما عليك هو تعلم كيفية استعمالها، ولكن أولا ما هي جدر النار ، هي طرق لحماية الشبكة من الدخول غير المرغوب به أو من أخذ معلومات أو منع مواقع معينة أو من شغل الخطوط في طلبات أنت لاتريد الإستجابة لها وهناك أكثر من طريقة وقبل أن نتعرف عليها نتعرف على بعض المصطلحات و بعض طرق المهاجمة
tcp/ip pocket يرسل كل جهاز إلى الآخر حزم من المعلومات بصيغة محددة لضمان عدم تشوش البانات منها هذه وهي المستخدمة في الإنترنت ومعظم البروتوكولات ارسال كل واحدة يتم على 3 مراحل ارسال الحزمة نفسها ثم عندما يستلمها المستقبل يبعث اشعار إلى المرسل بأنها وصلت سليمة فيقوم المرسل بإرسال اشعار بأنه استلام الإشعار فاذا لم يصل أي من الإشعارات أعيد أرسال الحزمة new conection اتصال يطلب فيه انشاء/فتح قناة اتصال جديد وشغل مساحة من الخط related conection هو الردود المتعلقة بالذي قبلها أي الإتصال بين قبول فتح القناة أو رفضها estsblished conection هو أن تحجز مساحة بث وتبدأ بالإرسال من طرق المهاجمة المتبعة هي طريقة الفيض بأن يرسل المهاجم الكثير من الطلبات الجديدة ويظل يرسلها دون أن يرسل اشعار بأنه استلمها مما يؤدي بالمخدم إلى اعادة إرسال ما أرسله لأنه يظن لم يستلم اضافة إلى ارسال الطلب الجديد فاذا علمنا أن كل شيء يرسله يوضع في الذاكرة من أجل اعادة ارسالة في حال لم يستلم فإننا سنصل إلى مرحلة تنتهي الذاكرة المتاحة ويعلق المخدم كاملاً (اذا كان ويندوز) ومن الطرق الأخرى أن المهاجم قد يستغل ثغرة في أحد البرامج التي تستعملها مثل M$ internet-explorer بأن ينزل عندك برنامج ويشغله على جهازك مثلا عن طريق ما تسميه مايكروسوفت ActiveX التي تسمح بتشغيل برنامج معين على جهازك (موجودة بكثرة في ال Massenger) بحجة أنها قد تكون لنقل فيديو أو ماشابه (فكرة/ادعاء مايكوسوفت أنه لفتح وثائق معينة لاداعي لشراء البرنامج الذي يشغلها بل يكون موجود على الشبكة ويتم تشغيله على جهازك ) ولكن المهاجم بدلا من استخدامه لهذا الغرض يقوم بتصميم برنامج بهذه التقنية ليسرح ويمرح على حاسوبك ويأخذ أرقام الحسابات وبطاقات الإئتمان وكلمات السر و أي شيء آخر (خصوصا أن ال BIOS لايكون مخفيا فإذا منعه الويندوز فإنه يستعمل ال BIOS) وقد يقول قائل أنا أستخدم برامج لينكس الموثوقة التي رأى الجميع ملفها المصدري ويعرفف أنها لاتفعل سوى مايطلب منها فلم أشغل رأسي بهذا الكلام؟ وأن كل ملفاتي السرية موضوعة بإسم مستخدم آخر غير الذي أستعمله لتصفح الشبكة. الجواب أنك قد تستعمل أحد برامج ويندوز غير المضمونة عن طريق wine أو قد يكون المخدم لديك عليه لينكس ولكن أحد الطرفيات أو الذين ليست لك عليهم سلطة يستخدمون ويندوز أو قد ينصبون برنامج دون علمك مما قد يسبب لك الكوابيس
أول جدر النار الطريقة الشخصية وهي طريقة بسيطة جدا وهي بالمناسبة المستخدمة في البرامج التجارية على نظام ويندوز!! وهي تقوم على
قبول أي شيء من الشبكة الداخلية على فرض أنها آمنة فيزيائيا أي أن الأجهزة فيها عليها لينكس و الأسلاك تحت أعيننا ومراقبة
السماح بإرسال/واستقبال أي اتصال إلى لشبكة الخارجية
السماح بأي ارسال إلى الشبكة الخارجية
اذا كنت طلبت اتصال معين السماح لكل ما يتعلق به(من وإلى)
منع كل ما هو غير ذلك مثل استقبال بيانات لم تطلبها
ويكون ذلك بالأوامر التالية مأخوذة من blfs (انظر الوصلات) # allow local-only connections iptables -A INPUT -i lo -j ACCEPT # free output on any interface to any ip for any service iptables -A OUTPUT -j ACCEPT # permit answers on already established connections # and permit new connections related to established ones (eg active-ftp) iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Log everything else: What's Windows' latest exploitable vulnerability iptables -A INPUT -j LOG --log-prefix "FIREWALL:INPUT" # set a sane policy: everything not accepted > /dev/null iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP
الطريقة الثانية عزل الشبكة الداخلية عن الشبكة الخارجية وهي تسمى Masquerading Router أي التنكر ويكون هنا لدينا جهاز موصول على شبكتين داخلية موصولة على eth0 مثلا و شبكة خارجية انترنت على dialup ppp0 مهمة هذا الجهاز حماية الشبكة الداخلية فالشبكة الداخلية تكون غير مرئية لأنه يقف بين الشبكتين ويقوم باستقبال كل شيء من الشبكة الخارجية والنظر في تمريره إلى الداخلية أم لا
قبول أي شيء من و إلى الشبكة الداخلية
تمرير كل شيء وارد يتعلق باتصال طلبته الشبكة الداخلية
تمرير كل الطلبات الصادرة عن الشبكة الداخلية
اخفاء الشبكة الداخلية (أي يطلب أن ترسل له ثم يمريرها)
منع كل ما هو غير ذلك
وهذه الأوامر التي تقوم بذلك # allow local-only connections # iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # allow forwarding # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state NEW -i ! ppp+ -j ACCEPT # do masquerading (not needed if intranet is not using private ip) iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE # set a sane policy iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP وحتى ينجح يجب أن يكون كل برنامج موجود على هذا المخدم "المتنكر" موثوقا وكلما كان عليه برامج عاملة أكثر قل الأمان لهذا يكون هذا المخدم جهاز أصم أعمى أخرس ليس عليه سوى نواة لينكس وبعض الأساسيات ولايكون عليه أكس أو أي من البرامج المبذرة
الطريقة التالية هي Besybox وهي لا تختلف عن التي قبلها كثيرا ولكنها تضيف عليها السماح بالتواصل عبر الشبكة الداخلية دون الحاجة التمرير عبر هذا المخدم اضافة إلى ذلك يقدم هذا المخدم بعض الخدمات مثل طلب الصدى ping للتأكد من أنه لايزال يعمل أو لتخزين صورة عن مواقع الإنترنت Squid أو لتقديم خدمة بريد أو طابات وملفات samba وغيرها ولكن هذا يقلل من الأمان لأنه يزيد من التعقيد فهذه الأشياء موضوعة على الحد الفاصل بين الشبكتين
وحتى تعمل جدر النار يجب أن تعمل على اعداد تحميل ال modules الخاصة بها بالأوامر التالية modprobe ip_tables modprobe iptable_filter modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ipt_state modprobe ipt_LOG واذا كنت تستخدم المخدم المتنكر يكون عليك أيضا modprobe iptable_nat modprobe ip_nat_ftp modprobe ipt_MASQUERADE modprobe ipt_REJECT
samba هو مخدم يقدم مشاركة الملفات والطابعات بين أكثر من جهاز عليها أكثر من نظام تشغيل مثل لينكس و ويندوز عادة يكون لينكس هو المخدم . لتعلم كيفية استعماله و اعداده يمكنك أن تقرأ الوثائق التي تأتي معه وتكون في مجلد /var/www/swat/using_samba/
برنامج swat يقوم بإعداد samba لتشغيله عليك أولاً أن تخصص منفذ له وتشغل samba وذلك ب وذلك باضافة السطر التالي إلى ملف /etc/services (طبعا تحتاج لأن تكون جذراً) swat 901/tcp والسطر التالي إلى /etc/inetd.conf swat stream tcp nowait.400 root /usr/sbin/swat swat حيث /usr/sbin/swat و المسار إلى برنامج swat ويمكن أي يكون /usr/local/samba/bin/swat ثم اعادة تشغيل مراقب الشبكة inetd daemon وذلك بكتابة killall -HUP inetd أو بكتابة المسار للملف الموجود في /etc/rc.d/init.d والذي يشغله متبوعاً ب restart وأيضا تشغيل خدمة samba بكتابة /etc/rc.d/init.d/samba start ويمكنك اضافة مستخدم samba و كلمة سر بأمر (لا علاقة لها بمستخدم لينكس) smbpasswd -a uername وعلى الأقل عليك أن تعمل مستخدم جذر smbpasswd -a root
ثم الدخول من أي متصفح على موقع http://localhost:901/ وهو ليس موقع انترنت وانما مخدم samba موجود على جهازك الذي افترضت أنه localhost و 901 هو الرقم التقليدي الذي خصصناه لبرنامج اعداد samba المسمى swat تظهر لك صفحة يمكنك استعمالها للقيام بالإعدادات وعند رغبتك في الدخول إلى شبكة samba اكتب في أي متصفح العنوان التالي smb:///
لإعداد ويندوز 2000 ليكون عضو ففي شبكة samba
اذهب إلى My Computer
اختر Properties
انقر على Network Identification notebook tab
انقر Properties
في خانة Computer Name أعط اسماً للجهاز WIN2KBOX
وفي خانة Domain: واكتب الإسم الذي حددته في لينكس ثم انقر OK
ستسأل عن المستخدم وكلمة السر الخاصة ب samba التي عرفتها على جهاز الينكس
انقر موافق
سيتم اعادة تشغيل ويندوز (كالعادة اذا غيرت الخلفية يجب أن تعيد التشغيل)
يعتبر سطر الأوامر في لينكس من أهم مميزاته لأنه يسمح لك بتنفيذ أشياء معقدة بطرق بيسطة جدا لذا من الطبيعي أن تجد نافذة سطر الأوامر دائمة مفتوحة عند مستخدمي لينكس ، فعلى الرغم من كون سطر الأوامر لغة برمجة تفسيرية الا نه يمكن لغير الخبراء والمبرمجين استعماله بدون أي صعوبة
ومن باب الحرية -وهو شعار FSF- فإنك تستطيع استخدام أي برنامج ليكون مفسراً لأوامرك يسمى غلاف shell حاليا الأكثر شهرة هو bash ولكن يستطيع كل مستخدم تغييره واستخدام آخر مثل ksh,csh ...
تلميح BASH: Bourne Again SHell وقد سمي كذلك لأن بيرن عمل برنامج سماه على اسمه غلاف بيرن ولكن بعد مدة ظهرت برامج أقوى منه مثل ksh فانقرض هذا البرنامج حتى جاء أحد عشاقة فطوره وأضاف عليه الميزيات المنافسة وسماه غلاف بيرن مرة أخرى !!
ويجب أن لا يختلط الموضع عليك بين الغلاف والطرفية terminal فهي البرنامج الذي يشغل البرنامج الغلاف في البيئة الرسومية وأنت عندما تريد تشغيل سطر الأوامر في البيئة الرسومية تقوم بتشغيل التيرمينال (كما هي العادة لايوجد تيرمينال واحدة بلتختار ما يناسبك) وتختلف هذه فيما بينها بمقدار الجمال ودعم اللغات ودعم الجر والاسقاط مثلا xterm الأبشع على الإطلاق وتغيير الخط أو الخلفية ضرب من الجنون rxvt أقل بشاعة من سابقه aterm جميل ويمكن أن تكون الخلفية شفافة mlterm بها دعم رائع للغة العربية konsol من أجمل ما يكون وهو تابع لمجموعة kde ويمكن أن تكون الخلفية شفافة gnome-terminal من أجمل ما يكون وهو تابع لمجموعة gnome ويمكن أن تكون الخلفية شفافة وتكون أيقونتهم على شكل شاشة سوداء أو صدفة (معنى آخر ل shell )
وهناك أيضا الشاشة النصية غير الرسومية الconsol ويمكن الذهاب إليها بتغيير الى طرفية إفتراضية VT غير رسومية (معظم التوزيعات تشغل سبع طرفيات افتراضية تعمل كل منها وكأنها جهاز منفصل وتخصص الأخيرة لتكون رسومية أي سيكون لديك سبعة أجهزة في جهاز) اضغط CTRL+ALT+Fn (حيث Fn هي F1 F2 ...) للتحول إلى الطرفية الوهمية النونية(الأولى أو الثانية...الخ ) إن الأمر أسهل مما يبدوا، اضغط CTRL+ALT+F1 ستتحول إلى شاشة نصية تطلب منك ادخال اسم مستخدم كلمة سر ثم تعطيك سطر أوامر تستطيع تشغيل أي شيء اضغط CTRL+ALT+F2 ستتحول إلى شاشة نصية أخرى وهكذا حتى السابعة التي هي الشاشة الرسومية وتعمل كلها معا ملاحظة: يمكنك التغيير من عددها أو ترتيبها تزيد منها اذا كنت مبذرا أو لديك جهاز سريع أو تقللها للتقليل من ارهاق الجهاز
عند تشغل سطر الأامر بأي طريقة منها يظهر [folder@host]$ للمستخدم العادي او [folder@host]# للمستخدم الجذر والحكمة من ذلك هو تحذيرك لأن خطأ إملائي بسيطة وأنت جذر قد يخرب النظام بينما للمستخدم العادي يقول له "لا يحق لك تدمير النظام" وحتى هذه يمكن تغييرها. ابدأ بكتابة الأمر (انتبه الأحرف الكبيرةA تختلف عن الصغيرة a )وعندما تنسى كيف يكتب اكتب جزءً منه ثم اضغط TAB ولكي تعرف كل البدائل اضغط TAB مرتين وعندما تنتهي اضغط ادخال [ENTER] مثلا بدلا من كتابة cd /home/ali/ يكفي أن تكتب cd /h [TAB]a[TAB] واذا كان هناك ali و ahmad cd /h [TAB]a[TAB][TAB] سيظهر ali ahmad اضغط l[TAB] ليصبح لديه al[TAB] ونكون انتهينا وتفيد هذه الميزة أيضا عندما يكون هناك اسماء طويلة مثلا لتشغيل لعبة rocksndiamond يكفي أن تطبع بعض الحرف ثم [TAB] ، ويمكنك استخدام سهم لأعلى ولأسفل للحصول على الأوامر التي طبعتها من قبل (وتظل محفوظة حتى عند اعادة تشغيل الجهاز) ولأسباب أمنية كل مستخدم يحصل على الأوامر التي طبعها هو وليس غيره ، استخدم الأسهم الجانبية للتحرك لليمين واليسار أيضا، ويمكن أن تجعله يدقق أخطائك الإملائية تلقائيا !!
لنبدأ بطباعة الأوامر
هذا جدول يبين الأوامر الأساسية ، ما هو داخل أقواس مربعة [ ] يمكنك عدم كتابته ، و ... تعني التكرار ، | تعني اكتب هذا أو هذا وحتى لا تخلط ما هو الشيء الحرفي وما هو الذي تعوض مكانه معناه وضعنا هذه الأخيرة بخط مائل، الأمر ليس معقدا كما يبدو انتظر حتى ترى الأمثلة وتطبقها عمليا
cd [DIR] للدخول إلى مجلد(دليل) DIR واذا كتبت cd لوحدها سوف تذهب الى الدليل البيت وللعودة الى الدليل الذي كنت فيه اولا cd - وللذهاب للدليل الأب للدليل الذي أنت فيه cd .. وللذهب الى الدليل الأصل/الجذر الذي تتفرع ته الأدلة الأخرى cd /
pwd عرض المسار إلى الدليل الحالي
ls [-lhFa][PATTERN] عرض الملفات التي تتفق مع PATTERN ، استخدم l للعرض المفصل و h لإظهار الحجم بطريقة مفهومة أكثر و F لوضع علامة تبين نوع الملف بعد اسمه و a لعرض جميع الملفات حتى التي تبدأ بنقطة وهناك الكثير
clear مسخ الشاشة
echo ["STRING"] printf "STRING1"["STRING2"] الأولى تطبع النص الى جهاز الإخراج الإفتراضي ، الثانية بطريقة لغة السي
whatis [COMMMAND | FILE] man [COMMMAND | FILE] info [COMMMAND | FILE] عرض مساعدة عن الأمر أو الملف الفلاني مثلا man ls أو info grub أو whatis gedit (للخروج من البرنامج اضغط q)
less [FILE] more [FILE] عرض ملف على الشاشة استخدم الأسهم و PageUP PageDown للحركة (للخروج من البرنامج اضغط q)
cat [FILE]... عرض ملف (ومجموعة ملفات) على الشاشة بطريقة غير تفاعلية (الوصف الحقيقي للأمر هو أنه يجمع هذه الملفات ثم يرسلها إلى جهاز الإخراج الإفتراضي )
cp [-aRvi]SOURCE... DIST mv [-aRvi]SOURCE... DIST rm [-Rv]SOURCE... DIST نسخ ، نقل(نسخ وحذف الأصل أو تغيير الإسم) وحذف على الترتيب. من المصدر(المصادر) الى الهدف والخيارات هي : i السؤال "هل أنت متأكد؟" قبل الحذف v اكتب ماذا تفعل خطوة خطوة a الحفاظ على نوع الملف R نقل الأدلة الفرعية
mkdir DIR... rmdir DIR... عمل دليل جديد ، وحذف دليل فارغ على الترتيب.
ln [-sf]FILE_OR_DIR LINK عمل رابط/وصلة تشير إلى الملف الأول وتتصرف مثلها تماماً ( أن يكون لديك نسختين من نفس الملف في أماكن مختلفة إن شئت دون أن تأخذ حيزاً على القرص) ، الخيرات : s أن يكون الرابط soft أي يظهر عند عمل ls -l f اجبار احلال الرابط الجديد مكاان القديم
su [USER] التحول الى مستخدم آخر اذا لم يذكر من هو يعتبر الجذر (طبعا بعد أن يقدم كلمة السر له)
whoami تخبرك من أنت !! أي المستخدم الذي تمثله الآن
file [PATTERN] عرض الملفات وما هو نوعها بطريقة مفهومة (اعتمادا على تركيبها ليس الإمتداد) مثلا يقول لك أن هذه English text file وذلك ASCII C text file وذلك MPEG video file ...
df [-hbkmg] [PARTITION | DIR] du [-hbkmg] [FILE_OR_DIR] عرض المساحة المتبقية،والمساحة التي يشغلها دليل معين b بالبايت ، k بالكيلوبايت ، m بالميغا ، g بالغيغا ، h بطريقة مفهومة
free عرض المساحة المتبقية من الذاكرة والذاكرة الإفتراضية
COMMAND1 ; COMMAND2[ ; COMMAND3]... تنفيذ الأمر الأول ثم نفذ الثاني وهكذا
COMMAND1 && COMMAND2[ && COMMAND3]... تنفيذ الأمر الأول فإذا نجح نفذ الثاني وهكذا
COMMAND1 || COMMAND2[ || COMMAND3]... تنفيذ الأمر الأول فإذا لم ينجح نفذ الثاني وهكذا
COMMAND1 & نفذ الأمر في الخلفية (لا ينتظر حتى ينتهي ويمكنك من تشغيل أوامر أخرى )
COMMAND1 | COMMAND2 تمرير مخرجات البرنامج الأول إلى الثاني ، تسمى هذه التقنية بالأنبوب (pipe)
`COMMAND` ناتج(مخرجات) تنفيذ هذه البرنامج ملاحظة ` تحصل ليها من المفتاح قرب الواحد الذي يحمل حرف الذال والعلامة ~ وهي ليست علامة اقتباس مفردة " بدون shift
$VARIABLE قيمة المتغير ويسمى هذا تعويض
VARIABLE=VALUE وضع المتغير على القيمة (لا يوجد مسافة)
COMMAND [ < FILE1 ] [ > FILE2 ] استخدام الملف الأول كجهاز ادخال افتراضي والملف الثاني كجهاز إخراج افتراضي
COMMAND [ < FILE1 ] [ << "STRING" ] استخدام الملف الأول كجهاز ادخال افتراضي من أوله وحتى الحصول على النص "STRING"
COMMAND [ >> FILE ] اضافة مخراجات الأمر الى نهاية الملف
COMMAND [ 1> FILE1 ] [ 2> FILE2 ] ارسال المخرجات إلى الملف الأول وإرسال رسائل الخطأ إلى الملف الثاني
ولتسهل عليك حفظ الأوامر اعرف أصل أسماءها cd (Change Dir ) , pwd (resent working dir),ls(list) , man (manual page) , cp (copy) , mv (move) , rm (remove) , mkdir (Make Dir ) , rmdir (Remove Dir ) , ln (link) du (disk usage) , df (disk free) وأيضا الخيارات a (all ) , f (force) , R (recursive) , h (human readable) v (verbos :give info while working)
تلميح تكون خيارات معظم الأدوات على شكل -- ثم الخيار مثلا --force --verbos وللإختصار نضع - واحدة ثم الخيار المختصر -f -v ويجوز أيضا كتابة -fv بدون مسافة بينهما ، نعني ب [-abcdef] -a, -b, -c, -d, -e, or -f
هذه بعض الأمثلة ععندما تشاهد # في مجموعة من الأوامر فهي وما بعدها الى نهاية السطر لا تنفذ ، وللتمييز بينها وبين التي يكتبها الجهاز تلقائيا قبل الأمر (المُحث) عندما تكون الجذر وضعنا ما تكتبه أنت بخط غامق وما يظهر على الشاشة بخط عادي
bash$ cd ~ bash$ pwd /home/ali bash$ whoami ali bash$ echo "Hello World" Hello World bash$ echo "any thing after hash" # is a comment,it has no effect any thing after hash bash$ echo "Hello `whoami`" # note ` not '(single quote) Hello ali bash$ su password:******** bash# whoami root bash# exit bash$ whoami ali bash$ ls -F Projects/ readme.txt backround.jpeg test.sh* bash$ ls -l total 4 drwxr-xr-x ali users 4024 May 28 19:20 Projects -rw-r--r-- ali users 19106 May 28 19:20 readme.txt -rw-r--r-- ali users 1224 May 28 19:20 backgrond.jpeg -rwxr-xr-x ali users 1024 May 28 19:20 test.sh bash$ echo "ali is the owner of the files" notice that ali is the owner of the files and they belong to users group bash$ gedit readme.txt # يجب أن تغلق المحرر لتعود لكتابة الأوامر bash$ gedit readme.txt & # & تستطيع الكتابة دون إغلاقه بسبب bash$ mcedit readme.txt # بدون & لأنه غير رسومي ، F10 للخروج اكتب شيئا يملىء صفحتين في هذا الملف وخزن bash$ less readme.txt # press q to quit, / to search bash$ ls -l /usr/lib | less # press q to quit, / to search bash$ man file # كما في less bash$ file * # انظر النتيجة بنفسك bash$ mc
تلميح اذا كانت مخرجات أمر أكثر من صفحة يمكنك العودة إلى الصفات التي فاتتك باستعمال SHIFT+PGUP/SHIFT+PGDN وويمكنك قص ونسخ الأوامر من الشاشة وذلك بتعليم (تحديد) النص (بجر الفأرة من بداية الكلمة إلى نهايتها) ثم النقر بالزر الأيمن فينتقل النص إلى موقع المؤشر
لإيقاف عمل برنامج اضغط على CTRL+c (تكتب أحيانا Cc للإختصار) لإيقاف الدخل اضغط على CTRL+z (وتعني نهاية الملف EOF) واذا كنت تتسائل لماذا لا يوجد خيار ل ls ليعرض صفحة صفحة فذلك لأنك تستطيع استعمال CTRL+PageUp / CTRL+PageDown للصعود لأعلى والنزول في أي وقت في أي برنامج أو يمكنك ارسال مخرجات الأمر ls إلى less أو more باستخدام الأنبوب "|" كما في المثال أعلاه.مستخدمي سطر الأامر يحبون برنامج mc (أي midnight commander) وهو شبيه ب nc (أي norton commander) جربه وبرنامج mcedit جزء منه.
# تصحيح الأخطاء الإملائية في أمر تغير الدليل لمرة واحدة [/@host]# cd /hpme/ali # بدلا من cd /home/ali cd: /hpme/ali not found [/@host]# shopt -s cdspell [/@host]# cd /hpme/ali # بدلا من cd /home/ali [/home/ali@host]#
هذا الأمر عليك طباعته كل مرة تريد تشغيل التدقيق الإملائي !! كيف نجعل هذا الأمر ينفذ تلقائيا ؟ اعلم أنه يتم تنفيذ /etc/profile أو ~/.bashrc تلقائيا فإذا كنت تريد إضافته لكل المستخدمين فعليك بالملف /etc/profile أما اذا كنت تريده لك وحدك فليك بالملف .bashrc في بيتك (تذكر أن ~ تعني الدليل البيت وهو يختلف من مستخدم إلى آخر) هذه الطريقة
# تصحيح الأخطاء الإملائية في أمر تغيير الدليل # تلقائيا ولك وحدك دون غيرك [~/@host]$ echo "shopt -s cdspell" >> .bashrc # تصحيح الأخطاء الإملائية في أمر تغيير الدليل # تلقائيا ولكل المستخدمين [~/@host]$ su root password:****** [/home/ahmad@host]# echo "shopt -s cdspell" >> /etc/profile [/home/ahmad@host]# exit [~/@host]$
لاحظ بدلا من تشغيل محرر نصوص وانتظار تحميله ثم فتح أحد الملفين المذكورين وإضافة السطر إلى آخره ثم تخزين الملف يااااه !! فقط كتبنا echo ثم الأمر وهي تطبع الأمر إلى الخرج ثم حولنا الخرج من الشاشة إلى نهاية الملف بإشارة الإتجاه المزدوجة >> فقط !! (لاحظ لو وضعناها مفردة لمحيت محتويات الملف السابقة)
تمرين اكتب الأمر اللازم لعمل ملف يحتوي على قائمة محتويات الدليل /usr/bin
# كيف تعمل ملف جديد بدون فتح محرر نصوص !! [~/@host]$ cat > test2.txt << HANGA Start Typing You can have more that one line To End the Typing, Type the Magic Word HANGA [~/@host]$ less test2.txt # cat يرسل كل الملفات التي تعطيها إياه إن لم توجد يأخذ الإفتراضي -لوحة المفاتيح # وقد حددنا كلمة معينة لتكون إشارة إنهاء الإدخال وهي التي بعد << # وحددنا الخرج هو الملف test2.txt
الأوامر التي ننفذها يتم تشغيلها من أدلة مختلفة منها غالبا الدليل الحالي ، وقد يكون برنامجان لهما نفس الإسم كيف تعرف أيها سينفذ؟ اكتب which COMMAND سيكتب لك المسار للأمر فإذا كنت تريد تنفيذ واحد من مسار آخر أكتب المسار قبل الأمر، أما كيف تحدد الأدلة التي يبححث فيها عن برامج فهو متغير البيئة PATH
# مسار البرنامج [~/@host]$ which cat /bin/cat [~/@host]$ echo "$PATH" /bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:./ # لإضافة دليل إلى آخر (أقل أولوية) القائمة [~/@host]$ PATH="$PATH:/MY_DIR" [~/@host]$ echo "$PATH" /bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:./:/MY_DIR # لإضافة دليل إلى أول (أعلى أولوية) القائمة [~/@host]$ PATH="/MY_FOLDER:$PATH" [~/@host]$ echo "$PATH" /MY_FOLDER:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:./:/MY_DIR # هذا التعديل مؤقت ويزول عند إعادة التشغيل # لاحظ معظم التوزيعات تضع الدليل الحالي /. في آخر الألويات ############### # يجوز وضع التعويض في أي مكان [~/@host]$ echo $EDITOR vim [~/@host]$ $EDITOR # تشغيل البرنامج المحدد بالمتغير
لاحظ عندما تحدثنا عن أمر ls فإننا قلنا أنه يأخذ نموذج PATTERN وليس اسم ملف أو مجلد وهكذا معظم الأوامر الأخرى (حتى لو لم نذكر ذلك لأن bash هو من يقوم بالتعويض) ومعنى ذلك أنه يمكن أن نعطيه نموذج عن الملفات التي نريد فيقوم بالبحث عن ملفات تطابق النموذج الذي قدمناه ، وذلك برموز خاصة تترجم بالمعاني المبينة في الجدول المرافق وأي شيء آخر يترجم حرفيا
* أي شيء من أي طول (بما في ذلك لا شيء) *term* كل شيء فيه term
؟ رمز واحد أو لا شيء S??autofs يبدأ ب S ثم رمزان على الأكثر ثم autofs
[SET] أي رمز من عناصر المجموعة [a-zA-z][0-9] حرف ثم رقم من خانة واحدة
{PAT1 [ ,PAT2]...} النموذج الأول أو الثاني ... *.{jpeg,png} أي شيء ينتهي ب . ثم jpeg أو png
أصبح الآن هناك رموز لها معنى غير ما هي عليه مثلا ؟ ليست علامة سؤال وإنما تمثل أي حرف وأيضا $VAR تعني قيمة المتغير VAR فإذا أردنا المعنى الحرفي لشيء وليس المعنى المجازي مثلا فتح ملف بإسم Why? ونقصد هنا بعلامة السؤال علامة السؤال وليس أي حرف اذا كيف نخبره بذلك يتم ذلك بطريقة تسمى escape وذلك بإضافة \ قبل الرمز الذي تريد مثلا Why\? ستعني الملف الذي نريد مثلا اذا كنت تريد الذهاب إلى مجلد Mohammad Ali فإن كتابة cd Mohammad Ali لن تنجح لأن cd لا تأخذ سوى معامل واحد والمسافة بين محمد ولي ستعتبر فاصل بين المعاملات لذا فالصواب أن تقول cd Mohammad\ Ali هنا المسافة ستعني مسافة وهناك طريقة أخرى وهي استعمال علامة التنصيص (الإقتباس) وهي نوعان الأول هو التنصيص القوي (علامة تنصيص مفردة) وهي تمثل ما بداخلها حرفيا أما الثانية فهي أضعف (مزدوجة) فهي تسمح بتعويض قيمة المتغير و تقوم ب escape لذا يمكنك استعمال التنصيص الضعيف مثلا cd "Mohammad Ali" ولكن اذا كان اسم المجلد $Ali فإنهه لن ينفع لأنه يقوم بالتويض مكان Ali بقيمة المتغير عندها نستخدم escape أو التنصيص المفرد القوي cd '$Ali'
تحذير لاتسمي هكذا أسماء غريبة بها رموز مثل $?#%\ أو مسافة لأن هذا يربكك وأنت تطبع الأوامر. ولا تخلط بين علامة التنصيص المفردة ' وعلامة تنفيذ برنامج ` وأخذ الخرج الموجودة عند عرف الذال
اذا أردت طباعة أمر وأردت أكثر من سطر أكتب عندما تمل من السطر الحالي \ ثم اضغط ادخال تلاحظ أن لم ينفذ شيئا اطبع بعض الأوامر ثم \ وادخال وهكذا إلى أخر سطر لا تضع فيه \ عندها سينفذ الأوامر
bash$ ls /usr/bin/ \ > /usr/sbin/ \ > /usr/doc/ | \ > less # نفس الأمر التالي bash$ ls /usr/bin/ /usr/sbin/ /usr/doc/ | less
لاحظت أن الكثيرين يبحثون عن بيئة لتطور الألعاب سهلة الإستعمال وقوية وطبعا نعرف كلنا أن أقوى لغة تبرمج عليها الألعاب هي C ( أقصد الألعاب التجارية الحقيقية وليس الفلاشات) ولكنها صعبة خصوصا اذا كنت تتحدث عن DirectX و MS-VisualC وغير موثوقة وغير قابلة للدوام لأن Backword Compitability ليست من سياسة ماكروزفت؛ لهذا أنت بحاجة لمثل هذه المكتبة التي توفر لك كل ما تريد بطريقة سهلة من التعامل مع الشاشة في طور النافذة أو بكامل حجم الشاشة وتعطيك طريقة لإخراج المؤثرات الموسيقية والأصوات (وأكثر من صوت دفعة واحدة) على Linux و MacX و windowz دن أن تغيير في الكود شيئا تستعمل أفضل طريقة في كل واحد ويمكها التكامل مع OpenGL في ما يسمى AllegroGL ويمكنها عمل رسومات ثلاثية الأبعاد بدون OpenGL انظر هنا. لتعرف قدرات هذه المكتبة انظر هذه لعبة بسيطة وكودها سهل الفهم tut1 وليعمل البرنامج المكتوب على allegro فأنت بحاجة إلى ملف alleg40.dll في ويندوز أو alleg40.so في لينكس وهذا الملف حجمه حوالي 200 كيلوبايت أما لتصمم برنامج على allegro فأت بحاجة إلى المكتبات والأدوات والوثائق هذه ملفات لينكس devel و tools ولمستخدمي dev-cpp على ويندوز هذا الملف alleg-install.exe وهذه هي ملفات المساعدة alleg.chm
تلميح أسهل طريقة لعمل برامج allegro لويندوز هي استخدام برامج dev-cpp فهو يستخدم جزء مصغر من أدوات لينكس ومنها minigw أي mini-gcc-for-windowz
سنشرح هنا تركيب أي برنامج مكتوب على allegro لا تفزع من كثرة الأسطر لأنها ستتكرر في كل برنامج بمعنى أنك فقط ستعمل "نسخ ولصق" يبدأ البرنامج ب #include "allegro.h" ثم يأتي ال main على الشكل الآتي int main(int argc,char *argv[]) ثم الحاصرتين {} وبينهما البرنامج ثم في نهاية نضيف بعض من سحر allegro هكذا END_OF_MAIN(); هنا يكمن جمال هذه المكتبة بحيث أن هذا الذي أضفناه في الأخير يحول main إلى بعض خزعبلات windowz مثلا winmain في بعض المصنفات compilers وفي بعضها الآخر main بحيث يضمن أن برنامجك سيعمل فيهم جميعن دون تعديل ولربط برامجك مع مكتبة allegro أضف -l alleg إلى خيارات الربط
داخل الحاصرتين اكتب الآتي قبل كل شيء allegro_init(); ثم نختار عدد الألوان الذي نريد set_color_depth(8); لعمق لوني 8 بت يعني 256 لون أو set_color_depth(16); لعمق لوني 16 بت يعني 64 ألف لون أو ثم نحجز شاشة رسومية بالأمر set_gfx_mode(GFX_AUTODETECT_FULLSCREEN , 320, 200, 0, 0); أو set_gfx_mode(GFX_SAFE , 320, 200, 0, 0); الأولى تحجز شاشة على fullscreen والثاني fullscreen فإن لم تنجح تفتح في نافذة يعني دائما تعمل طبعا ليس كل الكروت تدعم كل الكثافة النقطية resulutions لذلك يجب أن نفحص "هل ذلك جائز" أي يصبح الكود كما يلي
allegro_init(); set_color_depth(8); // 1st try full secreen with acceleration if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN , 320, 200, 0, 0) != 0) { // if fail try safe (may be windowed mode) if (set_gfx_mode(GFX_SAFE , 320, 200, 0, 0) != 0) { // if fail return to text mode and exit set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); // the format of allegro_message is like printf allegro_message("Unable to set any graphic mode\n%s\n", allegro_error); exit(1); } }
طبعا تستطيع استبدال 320x200ب 640x480 أو أي شي آخر ، نستطيع أن نرسم الأشياء الآن مثلا putpixel(screen,x,y,makecol(255,0,0)); ترسم نقطة حمراء على الشاشة screen في الموقع x,y makecol تعطيها R G B فتعطيك اللون بغض النظر هل الشاشة 256 لون أم 16 بت ، هذه بعض الأمثلة الأخرى
line (screen,x1,y1,x2,y2,makecol(0,0,255)); خط أزرق
triangle(screen,x1,y1,x2,y2,x3,y3,makecol(0,255,0); ترسم مثلث أخضر وهناك مضلع ودوائر .... واذا اردت أن ترسم في Bitmap بدل الشاشة استبدل screen باسم الBitmap أقصد بال Bitmap هو مكان في الذاكرة يمكنك أن تخزن فيه صور
تلميح screen هي Bitmap معرف داخل allegro كل ما يرسم فيها يظهر على الشاشة فورا
create_bitmap(320, 200); حجز مكان بالذاكرة من نوع BITMAP * ويتسع لصورة 320x200
clear_bitmap(screen); لمسح الشاشة
clear_to_color(screen,makecol(255,255,0)); لطلاء الشاشة بالأصفر وفي نظام 256 لون نعمل جدول الألون palette نسميه pal1 عن طريق PALETTE pal1تستطيع تحميل ملفات tga bmp lbm pcx عن طريق load_bitmap BITMAP *myBMP = load_bitmap( "delme.bmp", pal1);ثم يتم تفعيل جدول الألوان pal1 عن طريق set_palette( pal1 ); هذا الكلام فقط في طور ال 256 لون
تحذير اذا وجدت بعض الأمثلة لاتعمل وتعترض على نوع مؤشر العنوان pointer ربما لأن معايير ANSI تمنع التحويل من void * إلى أي شيء آخر بشكل ضمني ويجب ذكره صراحة يعني بدلا من BITMAP *pic1=data[PIC1_ID].dat الصواب أن تكتب BITMAP *pic1=(BITMAP *) data[PIC1_ID].dat
كل الذي مضى لم يكن مهما جدا لأنه من النادر أن نستعمله أما الآن فهذه الأوامر هي التي يجب تذكرها وهو blit ومشتقاته المختلفة وهي blit masked_blit streach_blit وأخيرا masked_streach_blit وهذا مثال: لنفرض أنك تريد أن ترسم صورة محملة من ملف bmp ومخزنة في متغير اسمه myBMP على الشاشة في الموقع x,y blit(myBMP, screen, 0, 0, x,y, myBMP->w, myBMP->h); اما masked_blit فتعني أن تجعل الخلفية شفافة اللون الشفاف هو أول لون في pal أي 0 هذا في طور ال 256 لون وهو أيضا الزهري السحري 255,0,255 في طور الألوان الحقيقية وهي مفيدة جدا لرسم الشخصيات في اللعبة أما streach_blit تعني مع تغير حجم الشكل و masked_streach_blit هي تغير الحجم مع شفافية.
وللتعامل مع لوحة المفاتيح ضع install_keyboard في بداية البرنامج بعد allegro_init وعند الرغبة في معرفة اذا كا زر معين مضغوط كل ما عليك هو قراءة ما يمثل هذا الزر في مصفورفة الأزرار key فاذا وجدتها بقيمة غير الصفر فهذا يعني أنه مضغوط مثلا key[KEY_ESC] تشير إلى حالة المفتاح Esc وبالمثل key[KEY_LEFT] و key[KEY_RIGHT] و key[KEY_UP] و key[KEY_DOWN]
التطبيق الأول
وإليك أول تطبيق برامج عارض الصور خزن هذا الملف باسم alared.c ثم اكتب g++ alared.c -o alared -l alleg && chmod +x alaredولعرض الصرة كل ما عليك هو تفيذ alared متبوعا باسم الصورة ثم اضغط Esc للخروج
تحذير اذا حصلت على Bad command or filename في ويندوز اضف دليل dec-cpp إلى سطر ال path في ملف autoexec.bat بحيث يصبح كما يلي path=C:\windows;...;C:\dev-cpp\bin;
/* * * alared.c * tga bmp pcx Image Viewer by ErrorMSG * This program is GPLed visit www.gnu.org and read GPL * */ #include< stdio.h > // include the Allegro lib #include< allegro.h > BITMAP *myPic; PALETTE pal1; int main( int argc,char *argv[]) { if (argc==1) { allegro_message("\tSyntax:\n%s filename\n",argv[0]); return 1; } myPic= load_bitmap( argv[1], pal1); if (!myPic) { allegro_message("Error loading %s",argv[1]); return 2; } allegro_init(); install_keyboard(); set_color_depth(16); if (set_gfx_mode(GFX_SAFE , myPic->w, myPic->h, 0, 0) != 0) { set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); allegro_message("Unable to set any graphic mode\n%s\n", allegro_error); retrun 3; } if (bitmap_depth(myPic)==8) { set_palette( pal1 );} blit(myPic, screen, 0, 0, 0,0, myPic->w, myPic->h); while(!key[KEY_ESC]); // wait ESC return 0; // return success }
برنامج graber
ولأن تحميل الملفات بشكل مفرد غير عملي هناك ما يسمى Allegro data file وهو ملف له الإمتداد dat يمكن أن يحتوي على الكثير من ملفات الصور والأصوات وأي شيء آخر مجمعة في ملف واحد أو أكثر ومضغوط ومشفر بكلمة سر إن رغبت . يمكن عمل هذا الملف باستعمال الأداة graber وهي أداة رسومية سهلة الإستعمال ويمكنك تسمية كل ملف داخله باسم ليكون متغير لتستعمله في البرامج ويعمل لك ال graber ملف بامتداد h يمكن استخدامه داخل كود السي ليعرف هذه المتغيرات وهذا توضيح ذلك
. . #include "mydata1.h" // generated by graber . . DATAFILE *data1; BITMAP *pic[2]; SAMPLE *midi1; MIDI *wav1; int loading() { data1 = load_datafile("mydata1.dat"); // load mydata1.dat if (!data) return 1; // return Error // MY_PIC_1 is the name you gave when you make the .dat file ,it's from mydata1.h pic[0]=(BITMAP *)data[MY_PIC_1].dat; pic[1]=(BITMAP *)data[MY_PIC_2].dat; midi1=(MIDI *)data[MY_MID_1].dat; wav1=(SAMPLE *)data[MY_WAV_1].dat; return 0;// return Success } . .
لعمل ملف dat شغل برنامج graber واختر من القوائم new -> bitmap ثم أعطها اسما مثلا MYPIC1 ،ثم اختر grab أو CTRL+G لتحميل ملف الصورة اذا كات الصورة ذات 256 لون ستظهر مشوشة لأنك لم تأخذ جدول ألوانها بعد لحل المشكلة أضف جدل ألوان new -> palette أعطها اسما مثلا MYPAL1 ثم CTRL+G لتحميل الجدول من ملف الصورة انتقل بالأسهم إليها ستجد مكتوب عل اليمين أنك لا تستعمل هذا الجدول اضغط مفتاح الإدخال لتفيل هذا الجدول فتصبح الصورة واضحة وقبل أن تحمل صورة أخرى حول الصورة الحالية إلى طور الألوان الحقيقية "لا يحتاج جدول ألوان" لأن كل صورة لها جدول ألوان خاص والآن حمل صورة جديدة وأعطها اسما MYPIC2 واذهب إلى MYPAL1 وحمل منه جدول ألوانها وفعله وحول الصورة إلى الألوان الحقيقية وهكذا حتى تنهي الصور كلها عندها فعل جدول الألوان الذي يحتوي على أكبر تنوع في الألوان وعلم كل الصور وحولها إلى 256 لون بهذا تكون كل الصور لها نفس جدول الألوان مما يمكك من عرضها جميعا دفعة واحدة في طور 256 لون دون تشوه
تلميح لتوفر على نفسك هذه المشقه استعمل طور الألوان الحقيقية أو استعمل برامج smacker الذي يحول الصور من وإلى أي هيئة ويمكنه توليد جدول ألوان واحد للصور دون تشويه الصور
تلميح الملفات المرسومة على برنامج غبي مثل PaintBrush لها نفس جدول الألوان ولكن مع تشويه الألوان
ولأن هناك أشياء تتكرر في معظم الألعاب حجز الشاشة والتحكم في الوقت ولوحة المفاتيح وتحميل الملفات عملت قالب يمكنك تنزيله من هنا يحتوي على ملفين الأول g_main به اجراءات الإستهلالية مثل حجز الشاشة والثاني g_game وهو الذي يحتوي منطق اللعبة كاملة الأول لن تعدل عليه كثيرا والثاني ستعيد كتابته تقريبا
الزمن الأصوات
حتى تتمكن من اصدار الأصوات يجب أن تستدعي install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) في الجزء الإستهلالي لبرامجك وحتى قبل حجز الشاشة فاذا أعاد قيمة غير الصفر هذه يعني لايوجد بطاقة صوت يمكن أن تعتذر يتهي البرنامج أو تجعل متغير معين ليدل على أنه لا يوجد صوت فلا تصدر أصوات. ولعزف موسيقى من نوع midi نستخدم play_midi(midi1,true); حيث midi1 هي مؤشر انظر المثال أعلاه الخاص بتحميل ملف dat و true تعني دون توقف ولإيقاف هذه الموسيقى stop_midi(); لعمل مؤثر صوتي أو كلام wav نستدعي play_sample(wav1, 255,127 , wav1->freq, false); حيث wav1 قدمت من مثال dat أعلاه و false تعني لمرة واحدة كما يلي
int SOUND_OK=1; if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL)) SOUND_OK=0; . . if (SOUND_OK) set_volume(digi_volume, midi_volume); if (SOUND_OK) play_midi(midi1,true); if (SOUND_OK) play_sample(wav1, 255,127 , wav1->freq, false);
عمليات على الألوان
تحدثنا سابقا عن makecol نعطيه لون حقيقي فيعطيا رقم اللون في طور 256 لون ولتسريع عملية البحث عن لون مناسب في جدول الألوان وعمليات المزج والإضاءة وغيرها الكثير من العمليات التي ستصبح أسرع بوجود جدول البحث هذا نستدعي التالي في الجزء الإستهلالي للبرنامج ولمرة احدة فقط وبعد تحميل جدول الألوان pal1
وتمكنا مكتبة allegro من رسم رسومات شبه شفافة أو عمل اضاءة أو مزج ألوان حتى في طور 256 لون باستعمال جدول معرف مسبقا اسمه color_map ونحدد التأثير الذي نريده نستعمل واحدة من التالية
create_light_table(color_map,pal1,r,g,b,NULL); عمل جدول يقوم بتأثير الإضاءة بلون r,g,b كل منها أقل من 63
create_trans_table(color_map,pal1,r,g,b,NULL); عمل جدول يقوم بتأثير الشفافية لكل لون r,g,b كل منها 0-255 فاذا كانت 128 تعني نصف شفافة
create_color_table(color_map,pal1,myblend,NULL); حيث myblend هو وظيفة تأخذ المعاملات (pal1,c1,c2,RGB *) وهي لعمل تأثير خاص
create_blender_table(color_map,pal1,NULL); وهو ما يكافىء ال blenderfunc في طور 256 لون وأما في طور الألوان الحقيقية نستعمل blenderfunc ولتطبيق المؤثر نستخدم draw_trans_sprite(screen,mypic,x,y); رسم مع مؤثر الشفافية و draw_lit_sprite(screen,mypic,x,y,light); لرسم الشكل مع مؤثر الإضاءة حيث light هو رقم 0-255 يمثل مقدار الإضاءة بدل blit ولتطبيق أكثر من مؤثر مثلا رسم mypic نصف شفافة في مكان وربع شفافة في مكان آخر
تحتوي مكتبة allegro على أكثر من طريقة لرسم الصور ثلاثية الأبعاد الأولى وهي استعمال مكتبة AllegroGL الإضافية بحيث تستعمل Allegro لكل شيء فتح النافذة والفأرة والتوقيت وكل شيء آخر ومكتبة OpenGL للرسم ثلاثي الأبعاد وهذه الطريقة لست مهتما بها لأن OpenGL تقية عالية الجودة جدا ولاتناسب الطبيعة التفاعلية للألعاب والطريقة الثانية و الثالثة هي استخدام Allegro فقط دون أي اضافات وهنا ستكون مكتبتنا أكثر تواضعا من OpenGL إلا أنها تعطينا السرعة اللازمة للألعاب فحن لانريد وضع ضباب وظلال معقدة كل مانريده هو عمل رسومات ثلاثية الأبعاد تحتوي على إضاءة بسيطة ونسيج texture واحد و الظلال و الضباب ليس بالضرورة أن تكون حقيقية اذ يمكن أن تكون باستخدام تقنيات ثائية الأبعاد وخدع من هذا القبيل. الطريقة الثانية وهي Allegro بوظائف zbuffer وهي طريقة لإخفاء الأجسام التي تقع خلف أجسام أخرى حتى لو حصل بينهما تداخل ولن أناقش هذه الطريقة لأنها وعلى سرعتها أقل سرعة من الثالثة وهي اسستخدام وظائف scene التي تعتمد على تقية scan line وهي أسرع الطرق التي أعرفها وهي الطريقة التي أتحدث عنها
في الجزء الإستهلالي التحضيري لبرامج استدع ولمرة واحدة create_scene(max_edges,max_poly); حيث max_edges هي الحد الأعلى للنقاط التي تنوي رسمها max_poly هي الحد الأعلى للمضلعات التي تنوي رسمها وهذا يحجز الذاكرة الخاصة بتلك الحسابات لهذا نحجزها مرة احدة
والآن في الحلقة الأساسة لرسم المشهد كالعادة ترسم الخلفية ب blit ثم تستدعي clear_scene(buff); حيث buff هي ال bitmap التي تمثل الشاشة المخفية التي نرسم عليها، ثم لكل مضلع نريد رسمه نقوم بما يلي: نقله إلى عالم الكاميرا ذلك بتطبيق مصفوفة الكاميرا ويمكن توليد هذه المصفوفة ب get_camera_matrix(m,cX,cY,cZ,fX,fY,fZ,upX,upY,upZ,fov,aspect) حيث m مؤشر من نوع MATRIX والباقي أرقام، cX,cY,cZ موقع الكاميرا، fX,fY,fZ اتجاه النظر، upX,upY,upZ الإتجاه العامودي لأعلى عادة 0,0,1 fov زاوية الرؤية عادة 32-48 (255 تعني 360 درجة) ، aspect هي نسبة الإرتفاع إلى العمق ضعها احد، وتولد هذه المصفوفة مرة واحدة ثم يتم التعديل عليها فقط (انظر جدول العمليات على المصففة) ولنقل نقطة إلى عالم الكاميرا apply_matrix(m,x,y,z,&xx,&yy,&zz); حيث xx و yy و zz هي الإحداثيات بعد تطبيق المصفوفة. ثم قص الأطراف الخارجة ب clip3d(type,minz,maxz,vc,vtx[ ],vout[ ],vtmp[ ],out) حيث type هي كما في الجدول أدناه و minZ و maxZ هي الحدود vc هي عدد الرؤوس في المضلع و vtx هي الرؤوس قبل vout بعد vtmp هي مؤقته للحسابات وكلهم من نوع V3D انظر أدناه عن تركيب V3D.ثم اسقاط النقاط مثلا ب perp_projection(x,y,z,&xx,&yy); ونكون قبل ذلك في الإجراءات الإستهلالية استدعينا set_projection_viewport(0,0,0,buff->w,buff->h); .نأتي الآن إلى رسم المضلعات باستدعاء scene_polygon3d(buff,type,txt,no_v,vtx[ ]); حيث txt هي النسيج اذا كنت لا تستعمل سيج دعه NULL no_v هي عدد رؤوس المضلع و vtx مؤشر إلى مصفوفة من V3D تححتوي على مواقع النقاط vtx[0]->x,vtx[0]->y,vtx[0]->z وموقع النسيج vtx[0]->u,vtx[0]->v ولون أو مقدار الإضاءة vtx[0]->c وهي في الحقيقة لا ترسم شيء وإنما تقوم بالحسابات فقط ثم نستدعي render_scene_polygon3d(); فترسم هذه الرسومات أما type فهي واحدة من التالية
POLYTYPES_FLAT تستخدم c من أول نقطة على أنها لون المضلع كاملا ولا ترسم النسيج
POLYTYPES_GCOL تستخدم c من كل نقطة بالتدريج لتلوين المضلع ولا ترسم النسيج في طور 256 لون
POLYTYPES_GRGB تستخدم c من كل نقطة بالتدريج لتلوين المضلع ولا ترسم النسيج في طور الألوان الحقيقية
POLYTYPES_ATEX ترسم النسيج بطريقة سريعة
POLYTYPES_PTEX ترسم النسيج مع معامل تصحيح العمق لصورة أفضل
POLYTYPES_ATEX_MASK ترسم النسيج بطريقة سريعة مع تفعيل قناع الشفافية
POLYTYPES_ATEX_LIT ترسم النسيج بطريقة سريعة مع استخدام c على أنها مقدار الضوء ويجب أن تكون قد أعددت color_map في ال 256 لون أو blenderfunc في طور الألوان الحقيقية
POLYTYPES_ATEX_MASK_LIT كما في سابقتها اضافة لتفعيل قناع الشفافية
POLYTYPES_ATEX_TRANS ترسم النسيج بطريقة سريعة مع تفعيل جدول الشفافية (أن تكون نصف شفافة مثلا)
POLYTYPES_ATEX_MASK_TRANS كما في سابقتها اضافة لتفعيل قناع الشفافية ولدينا نفس آخر 6 مع تبديل PTEX مكان ATEX. ثم رسم الرسوم ثنائية الأبعاد الإضافية مثلا ب blit وأخيرا نقل كل ما رسمناه إلى الشاشة ب blit(buff, screen, 0, 0, 0,0, buff->w, buff->h);
العمليات على المصفوفات هي
get_translation_matrix(m,x,y,z) المصفوفة التي تعمل إزاحة بمقدار x,y,z
get_scaling_matrix(m,x,y,z) المصفوفة التي تعمل تحجيم (تكبير/تصغير) بمقدار x,y,z
get_x_rotate_matrix(m,r) المصفوفة التي تعمل تدير حول محور x بمقدار r (r من 0-255 تعني 0-360 درجة)
get_y_rotate_matrix(m,r) المصفوفة التي تعمل تدير حول محور y بمقدار r
get_z_rotate_matrix(m,r) المصفوفة التي تعمل تدير حول محور z بمقدار r
get_rotation_matrix(m,rx,ry,rz) المصفوفة التي تعمل تدير حول المحور بمقدار rx,ry,rz على الترتيب
get_vector_rotation_matrix(m,vx,vy,vz,r) المصفوفة التي تعمل تدير حول المتجه vx,vy,vz بمقدار r يمكنك استبدال q مكان get لتطبق الخيار على المصفوفة m مثلا qtranslate_matrix(m,x,y,z) فإن المصفوفة الناتجة تقوم بما كانت تقوم به m إضافة إلى الإزاحة ويمكنك ضرب مصفوفتين باستعمال matrix_mul(m1,m2,m) حيث سيضرب m1 في m2 ويكون الجواب في m
على الرغم من أن أدارة أي نظام تعتبر أمر صعبا ومسؤولية كبيرة حيث هناك الكثير من الأمور المعقدة التي على مدير النظام القيام بها من تأمين الشبكة والإنتباه إلى أذونات الملفات (من يسمح له بماذا) وحماية الملفات والتأكد من أن ملفات أخرى كما هي والبحث عن المخربين وكشفهم وأهم شيء إبقاء النظام قيد العمل Up and Running خصوصا أن هناك الكثير من المخربين و الكثير من من يريدون أن يثبتوا للعالم أنهم أذكى بتخريب أنظمة الغير، تصبح هذه المهمة سهلة جدا بوجد نظام مثل لينكس وأدوات مثل GNU. أحاول أن أبقي الحديث بسيطا وموجها لشخص عادي لذلك إذا كنت تريد أن تكون مدير نظام حقيقي لا تكتفي بهذه المعلومات. قد تكون هناك بعض المعلومات معقدة في البداية ولكنها ستتوضح لاحقا ربما لن تستعمل كل المعلومات هنا ولكن من الجيد قراءتها كاملة
لن نتحدث عن تأمين النظام فيزيائيا مثل حماية الجهاز من الفك.
أولا تأكد من أن كلمة الجذر كبيرة بما فيه الكفاية!! ومعقدة بما فيه الكفاية، وتجنب الكلمات الضعيفة مثل الأشياء المكررة أو المدرجة (123 أو abc أو ZYXW) اسمك أو أسم العائلة أو تارخ معين أو كلمة من القاموس أو أي شيء من ذلك معكوس أو موضوع بينه أرقام كل هذا يعتبر ضعف لأن هناك برامج تتحزر كلمة السر وذلك بأن تأخد بتجريب تلك الإحتمالات قبل غيرها مما يجعل نظامك سهل الإختراق. أما الكلمات القوية تكون طويلة وتبدو عشوائية !! مثلا الأحرف الأولى من جملة طويلة He is stupid not like me I'm using linux تصبح كلمة السر HisnlmIul مثلا وكذلك تفيدك بعض الخدع بأن تضع واحد مكان ال i وتضع صفر مكان ال O أيضا إجعل كلمة السر خليط بين الأحرف الكبيرة والصغيرة.
يجب أن تكون كلمة سر المستخدمين الذين لهم الحق بالتحول إلى جذر (sudoers) معقدة أيضا وصلاحياتهم مدروسة، وأيضا المستخدمين الذين لهم الحق بالوصول إلى ملفات معينة أو الشبكة ... إلخ كذلك لأن المخرب قد يستعمل أدوات التحزير لمعرفة كلمة سرهم ثم يستعمل صلاحياتهم في مهاجمة النظام. ولأن نظام لينكس آمن جدا لدرجة أنه لا يوجد مخلوق يمكنه أن يفك شيفرة كلمات السر حتى ليناس نفسه ولا يستطيع مستخدم (حتى لو كان الجذر) معرفة كلمة سر مستخدم آخر فكيف ستعرف أن هناك مستخدما (مثلا في شبكة كبيرة بها أكثر من جهاز)وضع لنفسه كلمة سر سهلة ؟ الفكرة بسيطة بنفس طريقة المخرب ، نعم برنامج تحزير يقوم بتجربة كلمات، فاذا وجد هكذا كلمة يرسل تحذير أو يغيير كلمة السر الضعيفة . وينصح بتغيير كلمة السر كل 6 أشهر ، وعدم كتابتها في ملفات أو على ورق في مكان قريب من الجهاز !!
تلميح أفضل طريقة للتأكد من أن النظام محمي بشكل جيد أن تقوم بإختراق نظامك بنفسك(يجب أن يكون مسموحا لك بذلك) وتستخدم أدوات مشابهة للمخربين ولكن بدل التخرب ترسل تحذير أو تغلق الثغرة
معلومات عامة سبب عدم قدرة مخلوق على فك تشفير كلمة السر أن لينكس يستخدم تقنية للتشفير (مفتاح التشفير العام) تستعمل مفتاحين(سلسلتين من الأرقام) واحد للتشفير وآخر للفك يتم توليد مفتاح التشفير من مفتاح الفك(الذي لن يعرفه أحد) بعمليات حسابية سهلة ومباشرة يقوم برنامج كتابة الشيفرة باستعمال مفتاح التشفير (لأنه لايعرف المفتاح الآخر) ليقوم بالتشفير. حتى تفك التشفير يلزمك مفتاح الفك وهذا لا يعرفه أحد فتظل كلمة السر سراً. الآن اذا كان لينكس لا يستطيع معرفة كلمة الر فكيف يعرف أن الكلمة التي كتبتها صحيحة ويسمح لك بالدخول؟ الفكرة بسيطة إنه يشفر تلك الكلمة ويقارن الشيفرتين فإذا تطابقتا فإنه يسمح لك بالدخول دون أن يعرف ما هي كلمة السر!! وتبقى سراً. إذا كنت تتسائل عن لماذا لا يقوم أحدهم بعكس العمليات الحسابية التي ولدت مفتاح التشفير للحصول على مفتاح الفك (الجمع تصبح طرح وهكذا) بهذه البساطة؟ السبب هو أن بعض العمليات الحسابية أبسط من الأخرى مثلا ضرب 13*17*23 أسهل من تحليل 5083 للعوامل الأولية والعمليات التي تلزم لحساب مفتاح التشفير اذا علم مفتاح الفك سهلة ولكن العكس بحاجة إلى عمليات تفوق ما تستطيعه الحواسيب وعلى الرغم من وجود برامج تقوم بالحسابات غير الممكنة بالطرق العادية بطرق أخرى إلا أنها أبطىء وقد تستغرق عدة سنين تكون حينها كلمة السر قد تغيرت!!!
تأكد من وجود كلمة سر على إعدادات ال BIOS وأن أولوية الإقلاع للقرص الصلب لأنه كما تعلم يوجد أنظمة لينكس على قرص مرن واحد (وأيضا مدمج ) يمكن لأي شخص أن يقلع بها ثم يستخدمها في عمل mount لقسم اللينكس ثم تغيير كلمة سر الجذر هناك!! وضع كلمة سر في grup و lilo تمنع من تمرير معلومات للنواة (مثلا linux 1 تدخل جذرا في طور المستخدم الوحيد دون كلمة سر) وكلمة أخرى للإقلاع من القرص المرن أو المدمج (ستبقى قادرا على تنفيذ الخيارات الأخرى بدون كلمة سر)
وضع أنظمة غبية غير موثوقة(ويندوز المثل الوحيد) في قائمة الإقلاع يعتبر ثغرة واللأفضل محاكاتها باستخدام wine والأفضل من ذلك البحث عن بديل. استخدام برامج جاهزة أيضا يبقى أمرا غير محبذا والأفضل عملها بنفسك من الملف المصدري. وتذكر أن المستخدم الجذر يجب أن لا يدخل إلى البيئة الرسومية لأن هذا أيضا أمر سيء جدا
تلميح حتى تكون في أمان يجب أن تستخدم تقنية كلمة سر الظل في لينكس ويكون ذلك بوجود هذا السطر MD5_CRYPT_ENAB yes في ملف /etc/login.defs عندها تكون كلمات السر الجديدة مشفرة بهذه التقنية
أهم الأوامر
لقد تحدثنا سابقا عن chmod و chown و chgrp يفضل أن تراجعها. لتغيير كلمة السر الخاصة بك اكتب passwd ولمستخدم آخر اذكر هذا المستخدم (يجب أن تكون جذرا لتغيرها للآخرين) ولإضافة مستخدم جديد استعمل adduser ولحذف مستخدم استعمل userdel ولتصبح مستخدم آخر أكتب su واسم ذلك المستخدم اذا لم تحدد عنها سيكون الجذر (طبعا ستسأل عن كلمة سر الجذر في هذه الحالة) ولتنفيذ أمر على أنك مستخدم آخر أو الجذر أكتب sudo متبوعة بالأمر المراد تنفيذه، وهنا لن تسأل عن كلمة سر الجذر وطبعا فقط من يضعهم الجذر في قائمة ال sudoers يمكنهم ذلك ويمكن تحديد أي الأاوامر التي ينطبق عليها ذلك واذا وضع الجذر مستخدمين في تلك القائمة وسمح لهم بكل شيء فإنه يفتح ثغرة في النظام وبشكل تقليدي يضع الجذر مستخدين في تلك القائمة ويسمح لهم فقط بإطفاء النظام،
هذه أهم الأوامر التي سنتحدث عنها NOT READY
ifconfig ifconfig lo 127.0.0.1 up
ifconfig eth0 up 192.168.32.117 netmask 255.255.255.0 route route add 12.168.32.117 route add -host 127.0.0.1 lo route add -net 12.168.32.117 samba in /etc/services add swat 901/tcp in /etc/inetd.conf add (path may be /usr/local/samba/bin/) swat stream tcp nowait.400 root /path/swat swat in a browser address http://localhot:901/
sniffit # to show all logged users/groups who,users,groups su,sudo wall # send to all,see write talk ping whois finger # who in the network vrfy # vrify an Email address lynx ssh write (terminal to term mesg) mesg (enable/disable write) mail # read/send email cat msg.txt | \ mail -s "my subject" "address@somewhre.com" cat msg.txt | \ mail -s "my subject" "localuser" nmap # port scanner netstat sum,chsum,md5sum shred # overwrite files then remove them sync # write buffers # to make a file (may in binary) a text Encryption uuencode,uudecode cruft # replaces crypt for Encryption chroot ulimit # set a limitation to kernel # to set the max process limit to XX ulimit -Hu XX #this is a hang script #!/bin/bash while 1 # Endless loop. do $0 & # This script invokes itself . . . #+ forks an infinite number of times . . . #+ until the system freezes up because all resources exhausted. done # This is the notorious "sorcerer's appentice" scenario. exit 0 # Will not exit here, because this script will neve # end of hang script # to set the file creation perm to 755 (777 nand 022) umask 022
لو كان الموضوع مجرد تنزيل لكان ذلك سهلا جدا ، ضع القرص الأول وشغل الجهاز ثم اختر أن تزيل كل ما على القرص لتثبت لينكس !! ولكن من منا يريد ذلك ؟ وكيف تحافظ على ويندوز ؟ هذا ما سنجيب عليه
الآن في ويندوز اذهب الى لوحة التحكم ثم الى جهاز المودم واعرف رقم الCOM أي COM1 أو COM2 أو COM3 ... ، سيتمكن لينكس من معرفة ذلك لوحده لكن الإحطياط واجب
لنقل أن لديك قرص صلب واحد عند الذهاب الى my computer في ويندوز ستجد C D E F ،كيف هذا وهو قرص واحد ؟ هذه تسمى أقسام القرص الصلب ، والهدف منها هو أن نظام التشغيل يتعامل معها كأنها أقراص منفصلة مما يمكنك من إلغاء تجزئة أحدها دون الآخر أو فحصه ومن فوائده تجاوز الحدود المفروضة من نظام التشغيل على حجم القرص الواحد خصوصا اذا كان نظام غبي مثل ويندوز ، لكن ما يعنينا هنا هو الفائدة الثالثة وهي امكانية وضع نظام تشغيل مختلف على كل واحدة
تحذير
ويندوز يتصرف بغرابة اذا لم تركبه على C ، مثلا اذا ركبت يندوز على D ثم هيأت (format) C سيتوقف الويندوز على D عن العمل، بالمقابل يعمل لينكس أينما وضعته ، لذلك أخرج C ي من حساباتك
ما نخطط له هو تخصيص أحدها بالكامل للينكس مثلا E وسينتج عن ذلك فقدان كل ما عليه لذا قم الآن بنقل ما عليه من ملفات ضرورية الى الأقسام الأخرى، ويجب أن يكون هذا E كبيرا كفاية ليستوعب آلاف البرامج الموجودة على لينكس ، 2GB كافية ولكن خمسة أو عشرة تعطيك حرية أكبر في تركيب المزيد. يمكنك استعمال برنامج parititin magic الذي يسمح لك بتغير التقسيمة الحالية دون التأثير على البيانات، لا تحزن اذا لم يكن عندك فبرنامج إعداد لينكس يحتوي على أداة مماثلة
تحذير
يستخدم ويندوز نظامين للملفات هما FAT و NTFS الأول في 95 98 ME و الإثنين معا في NT,2K,XP ولكن دعم NTFS في لينكس ليس كاملا بعد لذلك استعمل FAT
ماذا لو لم يكن لدي سوى قسم واحد C ؟ عندها استعمل ال partition magic أو أي أداة أخرى لفصل هذا القسم إلى قسمين أو أكثر ، ويتم الفصل إلى قسم مليء وأقسام فارغة. أحب أن أذكر بأن تقوم بعمل نسخة احتياطية من بيناتك المهمة لأنها قد تكون في خطر واذا كنت تنوي استخدام الأداة التي تأتي مع برنامج تركيب لينكس لفصل القسم عليك قبل أخر تشغيل لويندوز عمل defragment ثم scandisk لأن fat ليس من النوع تلقائي الشفاء
تلميح
تحتوي بعض التوزيعات على ملفات مساعدة مثلا في ماندريك هناك ملفات readme ومنها ملفات ومنها بالعربي وأيضا هناك مجلد بإسم tutorial يحتوي على دليل التنزيل خطوة خطوة حيث أخذت هذه الصور
بدء التركيب
ضع القرص الأول ثم أعد تشغيل الجهاز واضغط على DEL للدخول إلى قائمة اعداد ال BIOS أثنا الإقلاع وتأكد من التالي: أولوية الإقلاع من القرص المدمج CD ، خيار PNP Plug & play مفعّل (enabled) ، خيار حفظ الطاقة (power managment) مفعّل ولكن على فترة طويلة، عطل (disable) خيار فحص الفيروسات
تحذير
العبث في قائمة اعداد ال BIOS أمر خطير لذا لا تعدل غير القيم المذكورة ويفضل أن تكون قد رأيتها من قبل أو أحضر صديق لك رآها من قبل ، لا تفزع الجيد في الموضوع هو أن الخطأ قابلة للتصحيح في حال الشك اختر load bios defaults auto detect HDD ثم قم بالتعديلات واذا كنت خائف من خوض التجربة ، أو لديك بينات لم تقم بتخزنها تجاهل هذه الخطوة
اذا لم يقلع لينكس على لسبب ما (مثلا قمت بنسخ الأقراص بطريقة خطأ) أعد تشغيل الجهاز ثم اضغط على F8 بشكل مستمر لتظهر لك خيارت الإقلاع الخاصة بويندوز windowz boot menu إختر command prompt ثم اكتب dosstart لاحظ بدون مسافات ثم G: إستبدله باسم القرص المدمج dir /w cd \dosutils dir /w autoboot لحيث سيقلع لينكس من داخل دوس
ستظهر شاشة ترحيبية (صورة رقم 1) تقول لك اضغط ادخال للمتابعة أو F1 للمزيد من الخيارات، الخيارات الأخرى مثل text إذا كان لديك أقل من 64 من الرام أو اذا كنت تريد طور الإنقاذ ، في توزيعة RH تظهر مباشرة دون ضغط F1 تذكر تختلف التوزيعات في الترتيب مثلا ماندريك يسأل أي ينسخ ثم ينسخ ثم يسأل عن الإعدادات بينما ريدهات يسأل كل الأسئلة ثم ينسخ
ثم اختيار اللغة الأساسية default language أي لغة النظام وزر Advanced للغات الثانوية (صورة رقم 2) وهناك طريقتين: عربي كلغة أساسية و انجليزي ثانوية أو بالعكس في الحالة الأولى يكون كل شيء بالعربي بما في ذلك رسائل الإقلاع ومركز التحكم (ولكن مركز التحكم يظهر العربي فيه مقلوب في الإصدار 9 من ماندريك) وأما الحالة الثانية يكون كل شيء انجليزي مع دعم للعربي ولكن الملفات ذات الأسماء العربية على قسم ويندوز لن تظهر كما يجب اختر الأقرب لما تريد ، والخيارات المفقودة سنتعلم كيف نصلحها في درس دعم العربية. أما في Redhat فإنه يسألك أن تضع صح على اللغات التي تريد ثم يسأل أيها اللغة التلقائية وهنا أعتقد أن اختيار اللغة الإنجليزية سيجعلك في بر الأمان.
ثم تختار نوع التنزيل في ماندريك هل أنت خبير أم لا هل تريد ترقية أم تنزيل من جديد (صورة رقم 3) وليس بالضرورة أن تكون خبير حقيقي لإختيار الخبير لأن هناك خيار لا أعرف في ريدهات تكون الخيارات :
desktop منزلي أو للمكاتب الصغيرة workstation محطة عمل أي عضو في شبكة server مخدم صامت (غالبا بدون واجهة رسومية)
حدد طريقة تقسيم القرص الصلب (صورة رقم4) في ماندريك هناك شطب كل شيء، أو استخدام أقسام لينكس معدة مسبقا (من تركيب سابق للينكس أو من برامج خدمية) وهناك تحويل المساحة الخالية على قسم ويندوز الى قسم جديد ( اذا كان لديك قسم واحد فقط ) وحتى تعمل يجب أن تكون قد نفذت scandisk و defragment كما تحدثنا من قبل والخيار الرابع هو الأهم على الإطلاق وهو الذي يعطيك إمكانية حذف تعديل كل شيء وهو الذي سنستخدمه اذا كان لدينا أكثر من قسم وأردنا تنزيل لينكس في مكان أحدهما
تظهر الصورة رقم 5 الخيار الثالث فيسألك كم تريد أن تبقي ليندوز
والصورة المتحركة رقم 6 تظهر الخيار الرابع والهدف هو عمل قسمين الأول إسمه / وهو كبير وهو من نوع ext3 والآخر swap وهو ذاكرة اضافية نوعه swap وهو بلا اسم يفضل أن يكون حجمه يساوي ضعف الرام بما لا يزيد عن 128 ميغا وهناك بعض التوزيعات تعمل /boot (لأسباب تاريخية حيث كان في الماضي السحيق هناك أجهزة لا تقراء سوى أول 500 ميغا من القرص فتوضع هذه ضمنها ليتمكن الجهاز من الإقلاع ثم يتولى لينكس قراءة الباقي) وأخرى تعمل /home (في حال رغبت بتنزيل نوعان من لينكس والإحتفاض باعدادات مشتركة للمستخدمين) وأنا أعمل قسم صغير للتجارب بحجم 20 ميغا اسميه /rescue وهي ليست اجبارية الآن انقر على القسم الذي تريد مسحة واختر delete من القائمة الجانبية سيتحول للون الأبيض ثم انقر عليه مرة أخرى ثم auto allocate أو انقر على create من القائمة الجانبية ثم حدد الحجم لل / ثم انقر create مرة أخرى
أما في ريدهات فتكون الخيارات تقسيم تلقائي أو استخدام fdisk وهو برنامج صعب الإستعمال أو برنامج disk drade وهو يشبه الأداة الخاصة بماندريك في الصورة رقم 6 ،وهو سهل نسبيا وننصح باستعماله. أما بالنسبة للتقسيم التلقائي فإنه يتفرع عنه ازالة كل ما على القرص أو البحث عن أقسام لينكس واستعمالها
تعريفات
device: في لينكس تكون الأجهزة عبارة عن ملفات في مجلد اسمه /dev مثل القرص الصلب الأول hda والثاني hdb والقسم الأول من القرص الأول hda1 وكرت الشاشة الأول fb0 والماسحة الضوئية الأولى على مقبس usb هي /dev/usb/scanner0 وهكذا ،وطبعا المستخدم يجب أن لا يلمس هذه الملفات mount point: وهو المكان الذي سيعرفه لينكس لجهاز معين(قسم من القرص مثلا) وهو مجلد فارغ تصبح محتوياته هي محتويات الجهاز، فبينما يصبح القسم الأول C في ويندوز ، بالمقابل يترك لك لينكس أن تسمي ذلك المجلد كما تريد مثلا /mnt/win_c وعادة تكون ضمن مجلد /mnt وعند تنزيل لينكس يجب أن تحدد واحد يكون الدليل الجذر / الذي تتفرع عنه كل المجلدات file system: هو نوع نظام الملفات المستخدم مثل fat (win 9x,me) أو ntfs (لنظام win NT و 2000 و XP) أو ext2,ext3,raiserfs (لنظام لينكس) أو swap (ذاكرة اضافية في اللينكس) تلميح
لا ينصح باستخدام نظام الملفات ext2 واستخدام ext3 لأنه يتشافى من الإطفاء السيء للجهاز وأيضا النظام raserfs ممتاز ولكن ريدهات لا يدعمه
نأتي الآن الى اختيار البرامج (صورة رقم 7) هذه بعض التلميحات لماندريك تلميح
لا تختار select individual packages لأنه سيعطيك أكثر من ألفين من الحزم البرمجية مما يجعلك في حيرة. لا تختار الكثير من البرامج أثناء التنزيل عملية نسخ الملفات قبل أن يكون لينكس كاملا تكون بطيئة جدا نزل الحد الأدنى الذي تريد ( مثلا kde/gnome,config,consol-tools) ويمكنك اضافة games, multimedia & doc لأنها لاتأخذ حجم وتجنب البرامج الكبيرة غير الضرورية مثل (office,servers,devalopment,network) عند التنزيل لأول مرة ولأنك لا تعرف أسماء البرامج نزل الكثير منها ولكن جهز نفسك لتنتظر ساعتين !!
في ريدهات تكون الخيارات كما ذكرنا من قبل
desktop منزلي أو للمكاتب الصغيرة workstation محطة عمل أي عضو في شبكة server مخدم صامت (غالبا بدون واجهة رسومية) custom يجعلك تختار كل شيء بنفسك every thing لا تختار هذا الخيار مهما كان اختر الأول (أو الثاني) ثم اختر تخصيص custom ستظهر قائمة عامة عن أنواع البرامج كما في ماندريك
حدد كلمة السر للمستخدم الجذر (المستخدم الخارق السوبر الذي يحق له تدمير النظام) ومها كان لاتطلبه بدون كلمة سر (صورة 8) ثم حدد اسم مستخدم آخر مثلا (me) أو ahmad ، وكلمة سر له (وأيضا انقر على الصورة لتختار شكل له) صورة 9
تلميح
لا يقبل برنامج الإعداد بكلمة سر أقل من ستة أحرف
اذا كنت في البيت وجهازك معزول يمكنك أن تضع كلمة السر ستة أصفار أو الأرقام من 1-6 واختيار الدخول التلقائي بدون السؤال عنها. (صورة 10) ولكن من أجل العمل الحقيقي يجب اختيار كلمة سر حقيقية اسمك معكوس أو كلمة وضع بين أحرفها أرقام أو شيء له علاقة بكلمة من القاموس أو شيء مكرر أو مدرج أو يحتوي على نسب طبيعية للأحرف كلها تعتبر ضيعيفة أما كلمة السر القوية تكن الحروف الإولى من كلمات جملة مثلا HisnlmIul (He is stupid not like me I'm using linux) استعمال صفر بدل o ووضع حروف كبيرة وأخرى صغيرة
ثم يأتي دور تعريف الشبكة اذا لم كان هناك شبكة اختر cancel هناك تقنية تقوم على فحص عناوين الشبكة أثنا الإقلاع تجنب هذه التقنية لأنها تجعل الإقلاع بطيء وبدلا عنها استخدم عناوين ثابتة اذا كان هناك مودم ادخل اسم الدخول ورقم الهاتف لبطاقة الإنترنت
يظهر بعدها ملخص (صورة 12)انقر على المنطقة الزمنية ثم اختر قارة من اختر منها مدينة asia/amman ثم يسألك هل تريد ضبط الوقت الجهاز على غرينتش أجب لا لأن الوقت في يندوز سيصبح على غرينتش (صورة 13)
حدد نوع مرقاب العرض أو فقط انقر موافق !! ثم حدد الكثافة النقطية لبطاقة الشاشة سيظهر لك اختبار لتلك الكثافة فاذا كانت الصورة مقطعة فهذا لأنك وضت كثافة نقطية أكثر مما يستطيع المرقاب (الشاشة وليس كرت الشاشة) توفيره انتظر عدة ثواني سيعرف بأنها خطأ ويعود كما كان ضع رقم أقل، أعتقد شخصيا أن 800x600 مع 16-بت تكفي مع أن معظم البرامج مصممة على 1024*768 (الصورة 16و17)
وسيألك عن مكان وضع برنامج الإقلاع linux loader مثل lilo في مانديك أو grub في ريدهات ، هل تريد وضعه على السجل الرئيسي MBR أو على ذلك القسم اختر على الرئيسي MBR
ثم يسألك عن عمل قرص للإقلاع وربما تحتاج إليه عندما يبدأ ويندوز كعادته بارتكاب الأخطاء للحد الذي تضطر إلى اعادة تنزيلة ثم يقوم برامج الإعداد الغبي بازالة اقلاع لينكس فيصبح الجهاز يقلع ويندوز فقط لذا تستعمل هذا القرص ثم تعيد برنامج اقلاع لينكس بكتابة lilo -P fix -p أو grub-install أو باستعمال مركز التحكم ولكن اذا كان جهازك يمكنه الإقلاع من القرص المدمج فإنك لن تحتاج هذا القرص ضع لقرص المدمج وفي الشاشة الترحيبية اضغط F1 ثم linux root=/dev/hda5 ro حيث /dev/hda5 هو قسم لينكس
ملاحظة الصور هنا من ال tutorial من أقراص ماندريك 9
الحمد لله ؛ أحمده وأثني عليه وبعد ، هذا الكتاب هو عبارة عن شرح بلغة بسيطة عن نظام لينكس وأنظمة يونكس المختلفة استعملها واحترافها وادارتها ولغات البرمجة المتعلقة بها وهو لا تفترض أي خبرة مسبقة على نظام لينكس أو أنظمة يونكس وهو موجه للمختص أوغير المختص، والهدف من هذا المشروع محو الأمية في مجال الحاسوب فكثير ممن يتخرجون ويحملون شهادات في تخصصات لها علاقة بالحاسوب والهندسة لا يجيدون سوى أعمال السكرتاريا ولايعرفون سوى كلمات حفظوها هي أن تشتري(أو تنسخ) أحدث برنامج من الشركة الفلانية وتأخذ شهادة فيه وبعد عدة أشهر تعيد هذه العملية من جديد ، ولايعرفون شيئا عن هذا العالم الكبير أما الأمية في بعض المكتبات القياسية فحدث ولاحرج تخيل في جامعتنا لا يوجد ولا كتاب عن Python وطلاب الحاسوب عندنا لم يسمعوا أبداً عن printf و scanf
1-2 كيفية الحصول على الكتاب
هذا الكتاب مفتوح وحر وخاضع لرخصة الوثائق الحرة من gnu الموقع المؤقت له حاليا هو www.koolpages.com/jornix ولكن قريبا سننتقل إلى موقع حقيقي(بدون دعايات) إن شاء الله سيكون www.daif.net/linux وفي هذه المواقع يمكنك الحصول على أحدث اصدار (قيد العمل) وعلى آخر اصدارة مكتملة بأكثر من هيئة منها الوثيقة الشفافة html التي أتولاها بشكل شخصي والتي يمكنك قرائتها مباشرة online أو تنزيل ملف مضغوط يحتويها وإن شاء الله بعد انهاء أول اصدار سنقوم بتحويلها إلى ملف قابل للطباعة وذلك بتحويل الصور المتحركة إلى أكثر من صور وتحويل "انقر هنا" إلى " موقع كذا1" ونضع العنوان المقابل له في الهامش وتحديد نهاية كل صفحة أي page-breaks وحذف الجدول الفلي من الصفحة واستبادله برقم الصفحة وتحديث الفهرس وأخيرا تحويل الملف إلى pdf وهذه يتولاها * مطلوب متطوع يقوم بذلك وأيضا يتوقع أن نضع آخر اصدارة مكتملة على www.linux-egypt.org
1-3 شكر خاص
كل جهد عظيم وراؤه عمل جماعي فهذه الكتاب قد ألفته من تجربتي الشخصية في لينكس على أكثر من توزيعة وعلى جهازي المتواضع الإمكانيات وبالرجوع إلى أكثر من كتاب منها RedHat 7.2 Bible و نسخة قديمة من Sair Linux and GNU Certification وكنت أعود إلى مواقع الإنترنت أكثر من الكتب. ولكن هذا وحده لا يكفي لتغطية موضوع موسوعي مثل هذا خصوصا في قسم الشبكات (لأن لدي جهاز واحد ) فكان لمجتمع لينكس والكثير من الأصدقاء في منتديات لينكس المشورة والعون وحتى أن بعض الأقسام مستوحاة من بعض الحورات في المنتديات وأخص بالذكر
شكراً للكثير من الجنود المجهولين الذين لامجال لذكر أسماهم لأنهم كثر
شكرا لضيف الله لاستضافة الموقع على www.daif.net ولمحمد الدسوقي على الإستضافة في لينكس مصر وشكر لموقع عرب-آيز الذي قام بتعريب لينكس وأيضا كان لبعض الوثائق الموجودة هناك العون في تأليف الكتاب
1-4 القائمة السوداء
هناك الكثير من الأشياء التي وقفت في وجه هذه الكتب أهمها الجامعة الهاشمية(الزرقاء) التي أدرس فيها حيث لم توفر أي مختبر أو حتى جهاز للعمل عليه لأنها مشغولة في دورات السكرتاريا ولا أي جهاز مثبت عليه لينكس وكانت الكتب المتوفرة فيها قديمة أو غير موجودة أكثر من ذلك أنها قامت بفلترة ومنع الدخول إلى مواقع لينكس مثل المنتدى وموقع لينكس العرب ومجموعة لينكس الأردن وأحياناً www.sourceforge.net و www.kde.org وغيرها الكثير وأيضا عدم تثبيت برامج مهمة مثل wincvs
وأيضا الكثير مراكز البحث العلمي الرسمية في الوطن العربي فهي ليست أفضل من جامعتي التي تقوم بالعمل البيروقراطي والدوام بلا طائل وتنتظر بعض المتطوعين بوقتهم وجهدهم أو بمالهم ليقوم بالعمل الذي يفترض أن يقوموا هم به وعلى الأقل أن لايقفوا في وجهه
1-5 المشاركة في تطويره
يمكنك أن تساهم في تطور هذا الكتاب بإرسال الملاحظات أو حتى بكتابة قسم كامل فيه (مع ذكر اسمك وعنوانك وأين تريد أن أكتبه) أو أن تحذرني من أخطاء إملائية أو وصلات لا تعمل أو حتى أخطاء علمية حتى الآن الطريقة الوحيدة لذلك بارسال email إلى ErrorMsg[at]gawab.com