А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

Reply via email to