Аttachната е начална версия на документ, описващ %subj. Всякакви забележки и коментари са добре дошли.
happy hacking, velin
DOCNUMBER: 003 CATEGORY: Описание на процедура TITLE: Процедура за инсталация на Debian GNU/Linux върху SGI VERSION: 0.10 CHARSET: cp1251 (windows-1251) AUTHOR: Alexander Velin <[EMAIL PROTECTED]> LICENSE: The GNU Free Documentation License <http://www.gnu.org/licenses/fdl.txt> Процедура за инсталация на Debian GNU/Linux (The Universal Operating System) върху SGI 1. Hardware Описаната тук процедура е проведена с: ARCH: SGI Indy (SGI-IP22) CPU: MIPS-R4600 V2.0 FPU V2.0 / 100.00 MHz (big endian) RAM: 61100032 bytes ETH0: SGI Seeq8003 SCSI0: SGI WD93 WD33c93B/13 SDA: SGI Model: IBMDSAS-3540 (548 MB) SDB: HP Model: 1.050 GB #A1 (1050 MB) но по принцип би трябвало със машини от същия модел (Indy) да няма особенни разлики предстоят тестове с още няколко машини - Indy, INDIGO, O2 (FIXME) инсталацията засега е на фаза 'console' и не включва подкарване на X (FIXME) 2. Startup pages SGI Performance Comparisons http://futuretech.mirror.vuurwerk.net/perfcomp.html SGI Technical Advice and Information http://futuretech.mirror.vuurwerk.net/sgi.html Debian for MIPS http://www.debian.org/ports/mips/ How to install Debian GNU/Linux on Indy (MIPS) http://www.linux-debian.de/howto/debian-mips-woody-install.html Google http://www.google.com 3. Let the war begin! kernel: http://ftp.fi.debian.org/debian/dists/woody/main/disks-mips/current/r4k-ip22/tftpboot.img (за съжаление ftp.bg.debian.org не съдържа disks-mips) ще ви трябва още една машина (no matter arch) за да направите инсталацията (моята е Debian в/у i386, тоест, desktop PC-то ми) като на нея в кернела трябва да имате: # # Networking options # CONFIG_PACKET=y CONFIG_FILTER=y пак на същата сервизна машина инсталвате DHCP и TFTP демони: apt-get install dhcp tftpd По време на power-on boot на Indy-то има един кратък момент в които се вижда едно бутонче "stop for maintenance" - натискате го и ви излиза системното меню на Indy-то със следните опции: Start System Install System Software Run Diagnostics Recover System Enter Command Monitor Select Keyboard Layout (е, поне на моето Indy са тези, ще видим по другите SGI машини - FIXME) Диагностиката винаги е препоръчителна :) но в случая избирате 'Enter Command Monitor' и ще ви излезе един промпт, който предлага някои интересни възможности (see 'help') пишете printenv и си записвате следните параметри: * MAC адреса на мрежовата карта на Indy-то. В моя случай - eaddr=08:00:69:08:28:CA (Note: Ако Indy-то има работеща операционна система преди нашата намеса (примерно някоя версия на IRIX) MAC адреса може да се вземе и като се ping-не машината и после се разгледа arp-таблицата .. въпрос на вкус.. :) На сервизната машина описваме в dhcpd.conf (debian: /etc/dhcpd.conf) запис за Indy-то: --- subnet 192.168.1.0 netmask 255.255.255.0 {} # Entry for Indy-1 (zirakzigil) host zirakzigil { hardware ethernet 08:00:69:08:28:ca; fixed-address 192.168.1.5; option host-name "zirakzigil"; option domain-name-servers 192.168.1.1; option routers 192.168.1.1; } --- Като параметрите имат следния смисъл: * hardware ethernet е MAC адреса на Indy-то * fixed-address е IP адреса който ще има Indy-то * option host-name е hostname-a на Indy-то * option domain-name-servers е адреса на DNS сървъра който ще ползва Indy-то * option routers е адреса на gateway-a на Indy-то. За повече подробности - man dhcpd.conf (Note: В случая съм използвал фалшиви IP адреси, но това незначи че немогат да се ползват и истински. И в двата случая обаче е добре да има изградена мрежова структура (т.е. на ip-то на DNS-a наистина да има DNS, и gateway-я да работи като gateway :) изпълнявате на сервизната машина: echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc (за подробности - <kernelsource>/Documentation/filesystems/proc.txt, lkml, google :) след което си пускате dhcp сървъра (/etc/init.d/dhcpd start) (Note: ако в мрежата имате друг DHCP сървър, бъдете осторожни :) Следваща стъпка - редактирате си /etc/inetd.conf файла и добавяте нещо от рода на: tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot Като /tftpboot е директорията в която ще седят boot-image-ите (в нашия случай - за Indy-то) подробности: man inetd.conf; man 8 tftpd; man 1 tftp; man 8 inetd след което (ре)стартирате inetd: /etc/init.d/inetd stop /etc/init.d/inetd start или kill -HUP `ps auwx |grep inetd |grep -v grep |awk '{print $2}'` ако трябва да рестартирате inetd на машина която не е debian.. но след като сте тръгнали да четете тази документация, предполага се че сте Debian Zealot :-) (Note: Лично мнение - с изключение на случаи като този (примерно инсталация на машина която се нуждае от tfptd или някаква друга специфична inetd услуга, по-добре е да нямате пуснат inetd. Един service по- малко, малко по-спокоен сън :) Все пак, въпрос на личен избор и конкретна ситуация.) Копирате кернела за Indy-то в /tftpboot Обратно на Indy Command Monitor промпта пишете: setenv netaddr $IP като на мястото на $IP слагате IP-то което трябва да има Indy-то. В моя случай: 192.168.1.5 bootp()/tftpboot/tftpboot.img натискате Enter и сте в бизнеса :) (Note: добре е да хвърлите един поглед на /var/log/messages за възможни грешки ако нещо не е наред, да проверите какви са permission-ите на /tftpboot и /usr/sbin/tcpd) 4. After the boot След като кернела вече е тръгнал, и гледаме debian-installer-а на екрана, инсталацията продължава почти като на i386 архитектура. (Note: можете да спрете вече dhcpd и inetd сървърте.. няма да ви трябват повече) Следва избор на клавиатура, и partitioning на диск{а,овете}. Лично аз съм фен на класическия вариант с command-line fdisk-a, така че отиваме на втората конзола (Alt-F2) и започаваме: едно бързо dmesg за да видим какво си е намерил кернела (ако има нещо важно за процеса на инсталция което е изпуснато (хардове, мрежова карта, etc.), ще трябва да си {търсим,правим} друг boot image, което ще го опишем в някоя от следващите версии FIXME) В моя случай съм малко зле с обема на дисковете (1x 500MB и 1x 1GB) така че ще разхвърляме различните partitionи на двата диска. След като изтрием (по стандартния за fdisk начин :) всички дялове остнали от добрия стар IRIX имаме нещо от рода на: # fdisk -l /dev/sda Disk /dev/sda (SGI disk label): 3 heads, 108 sectors, 3314 cylinders Units = cylinders of 324 * 512 bytes ----- partitions ----- ----- Bootinfo ----- Bootfile: /unix ----- Directory Entries ----- [...other info here... :-)] # тука идва tricky part: Indy-то е Big-Endian машина, така че нещата са малко по-различни от добрия стар i386 {BIOS,MBR,partition table} - и в частност ще трябва да направим disklabel. първо една бърза сметка: 3 heads * 108 sectors * 3314 cylinders * 512 bytes = 549752832 bytes (524MB) колкото е обема на първия ми диск. Направете два дяла (root+swap) с големина по ваш избор, те не са важни, ще ги използваме само за пример. Ако се съгласите с defaultната стоиност за начален цилиндър на първия дял (т.е. 5-ти цилиндър) и след това си направите още един дял, освен тези sda1 и sda2, ще имаме още два записа в 'partition' секцията на изхода от командата 'p' на fdiks-a, а примерно: Pt# Device Info Start End Sectors Id System ---------------------------------------------------------- 9: /dev/sda3 0 4 1620 0 SGI volhdr 11: /dev/sda4 0 3313 1073736 6 SGI volume 'SGI volume' дяла представлява целия харддиск - в моя случай харда има 3314 цилиндъра, номерирани от 0 до 3313 - и /dev/sda4 го обхваща целия (1073736 сектора). 'SGI volhdr' дяла (volume header) е сервизен partition за disklabel-a, и въпреки че е sda3 в нашия случай, визически той се намира в началото на диска (цилиндри от 0 до 4). Ако искате, можете да мислите за него като за един голям MBR :) Интересното е, че в него се записва кернела на машината, и firmware-а го чете от там за да boot-не, което означава че все пак трябва да е достатъчно голям за да може да събере кернела в себе си. В по горния пример, volume header-a e 1620 sectora * 512 bytes - 829440 bytes (810 KB) - което е леко недостатъчно. Ако изберем 16MB за volume header дяла това прави: 16*1024*1024 = 16777216 bytes, или 32768 сектора, и тъй като в един цилиндър имаме 324 сектора 32768/324 = 101 цилиндъра трябва да е голям този дял. Приятния момент е, че не трябва да правите на ръка тези два дяла - fdisk (донякъде) ще ги направи вместо вас. Изтриваме всички partitionи от таблицата и започваме наново: 'n' за нов partition, и като ви попита за начален цилиндър на дяла, кажете 101 - по този начин цилиндри от 0 до 100 ще бъдат заделени за 'volume header'-a, което са си точно 101 цилиндъра. От там нататък създаваме този дял (sda1) по стандартния начин, като имате предвид че това трябва да ви бъде Linux native дяла (root), и чак след него трябва да е swap дяла. В моя случай на първия ми диск (524MB) нямам много място, така че ще се огранича само с root+swap. Тук е момента за още малко математика: Имам около 64 MB RAM и искам да си направя swap дял 128 MB (доброто старо правило swap-a да е 1x или 2x обема на паметта - да не говорим че в някои други UNIX-и, е почти задължително swap-a да е минимум колкото паметта на машината - иначе ако параметъра swapmem_on е сетнат на 0-а, което осигурява директен mapping м/у паметта и swapa, за да се избегнат по тежките операции по адресиране на паметта, и за да се спести памет за т.н. псевдо swap, OS-а ще ползва толкова RAM колкото е голям swap дяла. Long story short: правете си swap дяла поне два пъти колкото RAM-a, изгражда полезни навици) И така: 128 MB = 134217728 bytes = 262144 sector-а ни трябват за този дял. 262144 / 324 сектора на цилиндър = 809 цилиндъра. Диска ни има 3314 цилиндъра, и ако сложим swap дяла последен, той ще заема цилиндри от 2505 до 3314, което означава че root дяла трябва да е до 2504-ти цилиндър, което въвеждаме на промпта на fdisk който още ни чака :) Следваща стъпка - изтриваме sda9 (volume header-a) и го правим наново - пак като sda9 (9-ти partition) с цилиндри от 0 - 100. След това създаваме sda2 със цилиндри от 2505 до 3314 така че накрая имаме: Pt# Device Info Start End Sectors Id System ---------------------------------------------------------- 1: /dev/sda1 boot 101 2504 778896 83 Linux native 2: /dev/sda2 swap 2505 3313 262116 82 Linux swap 9: /dev/sda3 0 100 32724 0 SGI volhdr 11: /dev/sda4 0 3313 1073736 6 SGI volume Лека проверка с 'v' (нямаме неалокирани сектори), 'w' (записваме таблицата на диска и излизаме). В моя случай продължавам с fdisk /dev/sdb тъй като искам да си направя дялове за /var, /usr и /home Тъй като този диск не е boot-able, тук нещата са по- прости: създавам си три дяла набързо и имам: # fdisk -l /dev/hdb Disk /dev/sdb: 33 heads, 61 sectors, 1019 cylinders Units = cylinders of 2013 * 512 bytes Device Boot Start End Blocks id System ------------------------------------------------- /dev/sdb1 1 261 262666 83 Linux (за /home) /dev/sdb2 262 522 262696 83 Linux (за /var) /dev/sdb3 523 1019 500230 83 Linux (за /usr) Записваме таблицата с 'w' и се връщаме обратно на първа конзола (Alt-F1) В Н И М А Н И Е !!! Описаните по-горе стойности на цилиндри, глави, сектори и така нататък се отнасят конкретно за моите дискове, и служат само за пример как трябва да проведете нещата при вас. С изключение на случая когато имате _ТОЧНО_ същите дискове (много малко вероятно), тези стойности са напълно неприложими за вашата инсталация, и ТРЯБВА да пресметнете всичко спрямо ВАШИТЕ параметри. Продължаваме инсталцията по нормалния начин (указвайки кои са ни root и swap дяловете). Инсталационната програма конкретно при мен непоиска да си намери дяловете на /dev/sdb, така че пак във втора конзола им направих файлови системи (ext3, както и root дяла), дори и така непожела да ги mount-не през инсталера. Конкретно аз се отказах да пробвам да ги mount-на на ръка в /target/* където им е мястото и оставих тази част за после, инсталирайки само в sda1. 5. End of partition 'nightmare' Следващата стъпка е инсталация на кернел върху новата машина: избираме 'from internet' (FIXME: описание на инсталация от NFS) Настройваме network settings (или си пускаме пак DHCP сървъра на сервизната машина и му казваме да ползва DHCP). Въпрос на вкус и възможности е от къде ще дръпне кернела и драйверите, аз се съгласих с defaultната стойност http://http.us.debian.org:80. Добрата новина тук е, че http://ftp.bg.debian.org съдържа binary-mips (http://ftp.bg.debian.org/debian/dists/woody/main/binary-mips/) така че нататък инсталацията ще върви по-бързичко :) (а пък за съжаление другият Debian mirror в България http://debian.ludost.net засега mirrorва само i386 и сорсовете.) След конфигуриране на drivers (ако имате нужда) следва инсталацията на Base System - по познатия начин от http://ftp.bg.debian.org/debian, като не трябва да се забравя proxy-то (a тъй като аз имам машина със apt-proxy, и това е второто Indy което инсталирам, нещата вървят доста бързичко - въпрос на network setup и bandwidth както винаги) Следват 'make system bootable', и още малко настройки в Command Monitor-a на Indy-то: setenv OSLoader linux setenv SystemPartition scsi(0)disk(X)rdisk(0)partition(8) setenv OSLoadPartition /dev/sda1 където X е SCSI id-то на /dev/sda диска (това ще ви го каже накрая инсталационната програма) чрез едно dmesg на втората конзола преди да rebootнем виждаме (в моя случай): "Attached scsi disk sda at scsi0, channel 0, id 1, lun 0" така че при мен настройките трябва да са: setenv OSLoader linux setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8) setenv OSLoadPartition /dev/sda1 Boot-ваме, следва base-config (процедираме по стандарния начин за Debian), описваме си apt-sources, и аз лично се лишавам както от услугите на dselect, така и от тези на tasksel, като предпочитам нататък да си инсталирам на ръка. Завършваме с bas-config-а по традиционния начин. 6. End of story Thank you for choosing Debian. Have fun! LAST CHANGE DATE: 2003-02-20 19:22 EOF