हैरानी की बात यह है कि हम अपनी भौंहों को ऊपर उठाते हैं, हमारे प्यारे ओएस कितने लचीले होते हैं, इस पर ध्यान दें कि हमारी आस्तीन ऊपर उठ जाए और व्यापार में उतर जाए।
इस पद्धति का आधार यह विचार है कि हम अस्थायी ऑपरेटिंग सिस्टम को स्थापित करने के लिए SWAP-विभाजन का उपयोग कर सकते हैं, और जब यह अपने पैरों पर हो जाता है - मुख्य कार्य करते हैं। मुख्य और केवल एक चीज जो हमें चाहिए वह है कम से कम 420 एमबी आकार का एक स्वैप (यह ठीक उसी तरह है जो आपकी ज़रूरत की हर चीज़ के साथ कितना ले जाता है)।
निम्नलिखित मान्यताओं का उपयोग लेख में किया गया है:
- आपके पास एक डेबियन है, और आप एक डेबियन को शर्त लगाने की योजना बनाते हैं,
- एमबीआर में स्थापित ग्रब का उपयोग करता है।
हमारे काम की एक छोटी योजना इस तरह दिखाई देगी:
- स्वैप विभाजन को ext3 में बदल दें;
- उस पर एक साफ ओएस स्थापित करें;
- इसमें रिबूट करें;
- मुख्य अनुभाग पर आवश्यक परिवर्तन करें;
- एक अस्थायी से मुख्य विभाजन में एक स्वच्छ ओएस की नकल करें;
- मुख्य विभाजन से बूट करें, स्वैप सक्षम करें।
खंड तैयारी।
पहली चीज़ जो हम करेंगे वह यह है कि हमारे पास यह स्वैप सेक्शन है:
# free -m ... Swap: 470 0 470
जैसा कि आप देख सकते हैं - वहाँ है, और आकार (एमबी में प्रदर्शित) काफी संतोषजनक है। यह पता लगाना बाकी है कि हमारी डिस्क कैसे टूटी:
# fdisk -l /dev/sda ... Device Boot Start End Blocks Id System /dev/sda1 * 1 462 3710983+ 83 Linux /dev/sda2 463 522 481950 5 Extended /dev/sda5 463 522 481918+ 82 Linux swap / Solaris
यह देखा जा सकता है कि sda1 पर वर्तमान OS है, sda5 पर एक स्वैप है। भ्रमित होना मुश्किल है, लेकिन कुछ भी होता है।
स्वैप बंद करें:
# swapoff -a
यह सुनिश्चित करने के लिए कि हमने इसे बंद कर दिया है, आप वही मुफ्त कर सकते हैं:
# free ... Swap: 0 0 0
हमारी विभाजन तालिका अपडेट करें:
# fdisk /dev/sda Command (m for help): t Partition number (1-5): 5 Hex code (type L to list codes): 83 Changed system type of partition 5 to 83 (Linux) Command (m for help): w The partition table has been altered! WARNING: Re-reading the partition table failed with error 16: . The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
हमें सावधानीपूर्वक बताया गया था कि रिबूट तक कर्नेल को बदलाव नहीं दिखेगा, लेकिन हमें अभी तक इसकी आवश्यकता नहीं है। अब हमारे पुराने नए विभाजन पर फ़ाइल सिस्टम तैयार करने का समय है। उदाहरण के लिए, ext3:
# mke2fs -j /dev/sda5 Writing inode tables: done Creating journal (4096 blocks): done
हम कहीं न कहीं सेक्शन को माउंट करेंगे और इसकी तैयारी पूरी करेंगे।
# mkdir /mnt/temp # mount /dev/sda5 /mnt/temp # df -h % /dev/sda1 3,5G 600M 2,8G 18% / ... /dev/sda5 456M 11M 422M 3% /mnt/temp
एक "अस्थायी" ओएस स्थापित करना।
यहां यह ध्यान दिया जाना चाहिए कि यह केवल अपने स्थान पर अस्थायी है। भविष्य में एक स्वच्छ प्रणाली बनाने के लिए सभी चरणों को दोहराए जाने के लिए नहीं, हम बस इसे मुख्य अनुभाग में कॉपी करते हैं।
हम न्यूनतम इंस्टॉलेशन - डीबूटस्ट्रैप प्राप्त करने के लिए एक उत्कृष्ट उपकरण का उपयोग करते हैं। इसके बाद, हम मान लेंगे कि सर्वर पर इंटरनेट के साथ कोई समस्या नहीं है (अन्यथा इसके बाद किस तरह का सर्वर है?), इसलिए हम भंडार से सब कुछ पंप करते हैं।
# aptitude install debootstrap ... debootstrap (1.0.10lenny1) ...
यह उपयोगिता चार मापदंडों को पारित करने के लिए पर्याप्त है: वांछित वास्तुकला, रिलीज नाम, स्थापना निर्देशिका और पूर्ण दर्पण के लिए एक लिंक। वास्तुकला को `uname -a` के आउटपुट से निर्धारित किया जा सकता है, हम अपने स्वाद के लिए वितरण का चयन करते हैं, इस मामले में निर्देशिका वह जगह है जहां हमने अपने अनुभाग को माउंट किया है, और दर्पण का लिंक यहां पाया जा सकता है: http://www.debian.org/mirror-list । यह पता चला है कि लॉन्च लाइन कुछ इस तरह दिखती है:
# debootstrap --arch i386 lenny /mnt/temp http://ftp.ru.debian.org/debian/
एंटर दबाने के बाद, पैकेज डाउनलोड करने और स्थापित करने की प्रक्रिया शुरू हो जाएगी, काफी औसत इंटरनेट कनेक्शन (~ 10 एमबीपीएस) के साथ लगभग 5-10 मिनट लगते हैं - मेरे पास अपनी चाय खत्म करने का समय भी नहीं था। अंत में, आपको एक संदेश दिखाई देगा कि सिस्टम सफलतापूर्वक स्थापित हो गया है:
I: Base system installed successfully.
अब सबसे महत्वपूर्ण प्रक्रियाओं में से एक शुरू होती है: हमें नई प्रणाली को ठीक से कॉन्फ़िगर करने की आवश्यकता है। किसी भी सिस्टम एडमिनिस्ट्रेटर के पास शायद बुरे सपने थे कि वह मशीन पर रिमोट कंट्रोल कैसे खो देता है, और अंत में हमने डेटा सेंटर पर नहीं जाने के लिए यह सब ठीक से शुरू किया। इसलिए एक मग कॉफी के लिए अलग रखें और ध्यान केंद्रित करें।
सबसे पहले सभी महत्वपूर्ण सेटिंग्स को कॉपी करें। शायद, सभी को काफी महत्वपूर्ण फाइलें मिलेंगी, जो जहां नहीं होनी चाहिए। उदाहरण के लिए, मेरे पास सभी गैर-मानक मार्गों के साथ एक निश्चित /etc/rc.routes है। मुख्य बात कुछ भी नहीं भूलना है। मुझे यहां सूची लाना पूरी तरह से व्यर्थ लगता है, लेकिन मेरे लिए यह कुछ इस तरह है:
# cp /etc/{resolv.conf,hosts,rc.local} /mnt/temp/etc # cp /etc/network/interfaces /mnt/temp/etc/network # cp /etc/your-stuff /mnt/temp/etc
Fstab में हम सबसे आवश्यक - प्रोक और हमारे रूट सेक्शन को लिखेंगे:
# cat > /mnt/temp/etc/fstab << "#EOF" > proc /proc proc defaults 0 0 > /dev/sda5 / ext3 errors=remount-ro 0 1 > #EOF
अब देव वातावरण को माउंट करें, हमारे अस्थायी सिस्टम के मूल में जाएं, और तुरंत खरीद माउंट करें:
# mount --bind /dev /mnt/temp/dev # chroot /mnt/temp /bin/bash # mount -t proc proc /proc
जाहिर है, हमें एक पैकेज मैनेजर की आवश्यकता है, मुझे लगता है कि इसके कॉन्फ़िगरेशन के बारे में अलग से बात करना आवश्यक नहीं है।
# wget http://debian.soar.name/sources.list -O /etc/apt/sources.list # aptitude update
समय क्षेत्र सेट करें:
# dpkg-reconfigure tzdata
हमें निम्नलिखित पैकेजों की भी आवश्यकता होगी:
# aptitude install locales # dpkg-reconfigure locales # aptitude install console-data # aptitude install ssh # aptitude install sudo
तुरंत, ताकि भूल न जाए, एक उपयोगकर्ता बनाएं और उसे एक पासवर्ड असाइन करें, अन्यथा वे बाद में हमें ssh में नहीं जाने देंगे:
# adduser --ingroup users soar # visudo
अब बूटलोडर को फिर से स्थापित करें। पहले आपको नई ड्राइव पर सभी बूटलोडर फ़ाइलों को बनाने की आवश्यकता है:
# aptitude install grub # grub-install /dev/sda
फिर आपको हमारे नए अनुभाग से बूट करने के लिए ICBM को इनिशियलाइज़ करना होगा। ऐसा करने के लिए, सब कुछ एक ही स्थान पर है, इकाई में, हम हॉर्नबीम कंसोल में प्रवेश करेंगे और निम्नलिखित लिखेंगे:
# grub grub> root (hd0,<TAB> Possible partitions are: Partition num: 0, Filesystem type is ext2fs, partition type 0x83 Partition num: 4, Filesystem type is ext2fs, partition type 0x83
एक वर्जना पर एक प्रकार का स्वत: पूर्णता हमें बताएगा कि हमारे निपटान में कौन से अनुभाग हैं। जैसा कि आप देख सकते हैं, सब कुछ सिस्टम में नाम से कम है। हम अपने sda5 से डाउनलोड आरंभ करते हैं:
grub> root (hd0,4) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) ... Done. grub> quit
बूटलोडर जहां आवश्यक हो स्थापित किया गया है। अब उपयुक्त कर्नेल चुनें और इंस्टॉल करें:
# aptitude search linux-image # aptitude install linux-image-2.6.26-2-686
स्थापना के दौरान हमसे पूछा जाएगा कि "वर्तमान कर्नेल छवि के लिए एक प्रतीकात्मक लिंक बनाएं?", जिसका हम पुष्टि में जवाब देंगे। वे यह भी बताएंगे कि हम एक कर्नेल स्थापित कर रहे हैं जिसे बूटलोडर से initrd समर्थन की आवश्यकता होती है और यह स्पष्ट करेगा कि क्या हमने अपना दिमाग बदल दिया है।
हम "नहीं" का जवाब देते हैं और स्थापना समाप्त होती है। यह बूटलोडर मेनू को अपडेट करने के लिए बना हुआ है:
# update-grub Found kernel: /boot/vmlinuz-2.6.26-2-686 Updating /boot/grub/menu.lst ... done
हम सर्किट को छोड़ देते हैं, नसों को मुट्ठी में इकट्ठा करते हैं और सर्वर को पहले रिबूट पर भेजते हैं:
# exit # reboot
यदि सब कुछ सही ढंग से किया गया था, तो मशीन हमारे अस्थायी सिस्टम में रिबूट होगी। हम उस उपयोगकर्ता के रूप में ssh में लॉग इन कर सकते हैं जिसे हमने अभी जोड़ा है।
सिस्टम को प्राथमिक विभाजन में स्थानांतरित करना।
प्रारूप और हमारे पुराने अनुभाग को माउंट करें:
# mke2fs -j /dev/sda1 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done # mkdir /mnt/temp # mount /dev/sda1 /mnt/temp
वैसे, इस स्तर पर, आप डिस्क रखरखाव भी कर सकते हैं: उदाहरण के लिए, मुख्य विभाजन को पुन: असाइन करें और फ़ाइल सिस्टम की जांच करें।
यह हमारे स्वच्छ ओएस को मुख्य विभाजन में कॉपी करता है:
# cp -a -x / /mnt/temp/
अद्यतन fstab। इस बार हम इसे सभी नियमों के अनुसार कंघी करते हैं:
# cat > /mnt/temp/etc/fstab << "#EOF" > # /etc/fstab: static file system information. > # > # <file system> <mount point> <type> <options> <dump> <pass> > proc /proc proc defaults 0 0 > /dev/sda1 / ext3 defaults,errors=remount-ro 0 0 > #EOF
एक बार फिर, आपको हॉर्नबीम को अपडेट करने की आवश्यकता है। इस बार - हमारे मुख्य भाग से पहले से ही डाउनलोड करने के लिए:
# mount --bind /dev /mnt/temp/dev # chroot /mnt/temp/ /bin/bash # grub-install /dev/sda # grub grub> root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded Done. grub> quit # update-grub Updating /boot/grub/menu.lst ... done
यह ध्यान देने योग्य है कि इस जगह में, पहले मामले के विपरीत, menu.lst ने अद्यतन करने से इनकार कर दिया, और sda5 के लिए अभी भी लिंक थे। ऐसा क्यों होता है - मुझे अभी भी समझ नहीं आया, इसलिए मैंने मैन्युअल रूप से इस फ़ाइल को संपादित किया है:
# sed -i -e 's/sda5/sda1/g' /boot/grub/menu.lst # sed -i -e 's/(hd0,4)/(hd0,0)/g' /boot/grub/menu.lst
हम सर्किट से बाहर निकलते हैं और दूसरा रीबूट करते हैं:
# exit # reboot
रिबूट के बाद, आप यह सुनिश्चित कर सकते हैं कि हम फिर से मूल मुख्य खंड पर हैं:
# df -h % /dev/sda1 3,5G 436M 2,9G 13% /
यह स्वैप बनाने और सक्षम करने के लिए बनी हुई है:
# fdisk /dev/sda Command (m for help): t Partition number (1-5): 5 Hex code (type L to list codes): 82 Changed system type of partition 5 to 82 (Linux swap / Solaris) ... The new table will be used at the next reboot. Syncing disks. # cat >> /etc/fstab << "#EOF" > /dev/sda5 none swap sw 0 0 > #EOF # mkswap /dev/sda5 # swapon -a
सुनिश्चित करें कि सब कुछ ठीक है:
# free -m Swap: 470 0 470
ठीक है, अंत में, यदि आपने /boot/grub/menu.lst को हाथ से संपादित किया है - तो आपको इसे फिर से अपडेट करने के लिए स्क्रिप्ट को चलाना चाहिए:
# update-grub Updating /boot/grub/menu.lst ... done
संक्षेप में देना।
यह विधि निश्चित रूप से सिस्टम को पुनर्स्थापित करने का सबसे आसान तरीका नहीं है, हालांकि, कई मामलों में, यह एकमात्र संभव तरीका बन जाता है। इसके अलावा, पूरी प्रक्रिया में लगभग 25 मिनट लगते हैं, इसलिए यदि आपका डीसी सड़क के पार नहीं है, तो किसी भी मामले में, समय की काफी अच्छी बचत होती है। यह आश्चर्यजनक रूप से कई पत्र निकला - मैंने विस्तार से और स्पष्ट रूप से पेंट करने की कोशिश की, लेकिन वास्तव में ऑपरेशन सरल और काफी तेज है।