Описаната тук процедура е проведена с:
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, O2 (FIXME)
SGI INDIGO (моето е с R4000 процесор) за момента не се поддържа (IP-20), но се работи по въпроса, да се надяваме че скоро.. :-)
инсталацията засега е на фаза "`console"' и не включва подкарване на X (FIXME)
Изтеглете kernel-а. За съжаление ftp.bg.debian.org не съдържа disks-mips)
boot server: Ще ви трябва още една машина (no matter arch), за да направите инсталацията (моята е Debian в/у i386, т.e. десктоп 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"' и ще ви излезе един промпт, който предлага някои интересни възможности (вж. "`help"')
пишете printenv и си записвате MAC адреса на мрежовата карта на Indy-то. В моя случай -- eaddr=08:00:69:08:28:CA.
Забележка: Ако Indy-то има работеща операционна система преди нашата намеса (примерно някоя версия на IRIX), MAC адреса може да се вземе и като се ping-не машината и после се разгледа arp-таблицата... въпрос на вкус.
На сервизната машина описваме в /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; } ---
Като параметрите имат следния смисъл:
За повече подробности вижте в dhcpd.conf(8).
Забележка: В случая съм използвал фалшиви 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
Забележка: Ако в мрежата имате друг DHCP сървър, бъдете осторожни :)
Следваща стъпка: редактирате си /etc/inetd.conf файла и добавяте нещо от рода на:
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
Като /tftpboot е директорията, в която ще седят boot-image-ите (в нашия случай за Indy-то). Подробности: inetd.conf(8), tftpd(8), tftp(1), inetd(8).
След което (ре)стартирате 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 :-)
Забележка: Лично мнение: с изключение на случаи като този (примерно инсталация на машина, която се нуждае от tfptd или някаква друга специфична inetd услуга) по-добре е да нямате пуснат inetd. Един service по-малко, малко по-спокоен сън :) Все пак, въпрос на личен избор и конкретна ситуация.
Копирате кернела за Indy-то в /tftpboot.
Обратно на Indy Command Monitor промпта пишете:
# setenv netaddr $IP
Като на мястото на $IP слагате IP-то, което трябва да има Indy-то. В моя случай: 192.168.1.5.
bootp()/tftpboot/tftpboot.img
натискате Enter и сте в бизнеса :)
Забележка: добре е да хвърлите един поглед на /var/log/messages за възможни грешки, ако нещо не е наред, да проверите какви са permission-ите на /tftpboot и /usr/sbin/tcpd.
След като кернелът вече е тръгнал и гледаме debian-installer-а на екрана, инсталацията продължава почти като на i386 архитектура. Можете да спрете вече dhcpd и inetd сървърите, няма да ви трябват повече.
Следва избор на клавиатура и partitioning на диска или дисковете. Лично аз съм фен на класическия вариант с command-line fdisk(8), така че отиваме на втората конзола (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 на fdisk-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
Приятният момент е, че не трябва да правите на ръка тези два дяла. 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.
Следващата стъпка е инсталация на кернел върху новата машина: избираме "`from internet"' (FIXME: описание на инсталация от NFS). Настройваме "`network settings"' (или си пускаме пак DHCP сървъра на сервизната машина и му казваме да ползва DHCP). Въпрос на вкус и възможности е от къде ще дръпне кернела и драйверите, аз се съгласих с default-ната стойност http://http.us.debian.org:80. Добрата новина тук е, че http://ftp.bg.debian.org съдържа binary-mips, така че нататък инсталацията ще върви по-бързичко :) За съжаление другият Debian mirror в България, http://debian.ludost.net, засега mirrorва само i386 и source. След конфигуриране на drivers (ако имате нужда) следва инсталацията на Base System по познатия начин от http://ftp.bg.debian.org/debian, като не трябва да се забравя proxy-то (a тъй като аз имам машина с apt-proxy(8) и това е второто 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(8) на втората конзола преди да 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(8), т.е. процедираме по стандарния начин за Debian, описваме си apt-sources, и аз лично се лишавам както от услугите на dselect, така и от тези на tasksel, като предпочитам нататък да си инсталирам на ръка. Завършваме с base-config-а по традиционния начин.
Препратки: