13th Aug, 2008

Instalando o NetBSD 4 em uma Sun Ultra 1

Este semestre, estou cursando a disciplina de Arquitetura de Computadores II. Alguns dos trabalhos exigidos nessa disciplina são programas escritos em Assembly para arquitetura SPARC64.

Como havia uma estação Sun Ultra 1 aposentada nos armários da sala onde trabalho na faculdade, resolvi ressuscitá-la. Afinal, é bem mais legal usar um hardware real do que um emulador.

Neste artigo, conto passo-a-passo como instalei o NetBSD 4 na estação Sun Ultra 1, indicando os problemas que enfrentei e suas soluções.

Primeiramente, peço que levem em conta que eu nunca usei hardware da Sun antes, então por favor não me xinguem caso existam maneiras mais adequadas de se fazer o que eu fiz.

Baixando o CD de instalação

Antes de tudo, você vai precisar do CD de instalação do NetBSD. Eu recomendo que você baixe do diretório NetBSD-daily/netbsd-4 do ftp, pois ele já contém patches corrigindo falhas de segurança que tenham sido encontradas desde o lançamento do NetBSD.

Entre aqui, e você verá cerca de quatro diretórios, nomeados por data. Dentro de cada um deles, há um diretório iso, que contém as imagens iso para gravar em CD para cada arquitetura. A imagem destinada à arquitetura SPARC64 se chama sparc64cd.iso.

Por exemplo, eu baixei a imagem que utilizei deste link. Provavelmente esse link não vai mais funcionar quando você estiver lendo este artigo, pois eles sempre apagam os diretórios antigos, e criam diretórios mais novos. Portanto, verifique onde baixar a imagem do modo como descrevi acima.

Atenção: Se não encontrar essa imagem em algum dos diretórios, não se desespere. Tente procurar no diretório correspondente a um dia anterior. Às vezes, por algum motivo, a compilação para alguma das plataformas falha, e a imagem não aparece no diretório de alguma das datas.

Inicializando o sistema pelo CD-ROM

A primeira coisa que você nota ao ligar uma estação da Sun é o OpenFirmware. É ele que carrega o seu sistema operacional. Ele seria semelhante à BIOS de um computador de arquitetura x86 convencional, mas é claro, o OpenFirmware é bem mais completo, e inclui até mesmo uma mini-linguagem de programação.

Dependendo de como o OpenFirmware estiver configurado, ele pode parar em um prompt por alguns segundos, ou então inicializar diretamente o sistema operacional.

Para fazer com que o OpenFirmware pare e lhe forneça uma linha de comando, aperte a combinação de teclas STOP + A logo após ligar a máquina. A tecla STOP costuma ficar naquele conjunto de teclas mais à esquerda do teclado.

A linha de comando do OpenFirmware exibe a palavra ok e fica esperando por um comando. Para consultar a ajuda, como você poderia adivinhar, o comando utilizado é help.

O comando utilizado para inicializar pelo CD-ROM é o boot cdrom. Coloque o CD do NetBSD no drive e entre com esse comando. O sistema começará imediatamente a inicializar o CD de instalação.

Instalando o NetBSD

Durante a inicialização do instalador, ele vai perguntar qual o tipo de teclado que você possui. No meu caso, apenas apertei ENTER para usar a opção padrão (teclado do tipo sun), que funcionou sem problemas.

Em seguida, basta seguir as instruções da tela. Aqui eu realizei uma Full installation, usando o primeiro HD inteiro (a máquina possuía dois HDs SCSI), e criando duas partições, uma para o /, e outra para a swap.

Maiores detalhes sobre o procedimento de instalação podem ser encontrados na documentação oficial do NetBSD, mas o processo é simples e você não deverá enfrentar quaisquer problemas.

Primeiro boot

Ao final da instalação, selecione Reboot the computer. O sistema reinicializará, e o OpenFirmware passará a carregar o NetBSD imediatamente. Você já pode tirar o CD do drive.

Problemas no primeiro boot

Entretanto, enfrentei um problema logo durante a primeira inicialização. O NetBSD montava o sistema de arquivos como somente leitura, e aparecia durante o boot a seguinte mensagem:

mount_ffs: /dev/sd0a on /: specified device does not match mounted device.

A mensagem pode ser vista na foto abaixo:

Prestando mais atenção às mensagens de inicialização, principalmente às mostradas pelo dmesg, percebi as seguintes duas linhas:

 
root on sd0c dumps on sd0b
root file system type: ffs
 

Ao ler isso, percebi que era o /dev/sd0c que estava sendo montado como root inicialmente pelo kernel, e não /dev/sd0a. Não sei por qual motivo isso ocorreu, mas a solução foi simples - editar o /etc/fstab e corrigir o dispositivo.

Se este problema acontecer com você, primeiramente faça login como root para corrigi-lo. Monte o / manualmente para escrita utilizando o seguinte comando:

mount_ffs -o rw /dev/sd0c /

Agora você pode editar o /etc/fstab:

vi /etc/fstab

Aqui, eu troquei o /dev/sd0a pelo /dev/sd0c. Após as modificações, meu /etc/fstab ficou com o seguinte conteúdo:

# NetBSD /etc/fstab
# See /usr/share/examples/fstab/ for more examples.
/dev/sd0c               /       ffs     rw               1 1
/dev/sd0b               none    swap    sw               0 0
kernfs          /kern   kernfs  rw
procfs          /proc   procfs  rw,noauto

Isso resolveu completamente o problema, e no próximo boot o NetBSD já montou o sistema de arquivos para leitura e escrita.

Configurando o X

Aqui o X não se configurou automaticamente. Constava o seguinte erro nos logs do X:

SUNCG6(0): Given depth (16) is not supported by this drive

Pesquisando pela Internet, vi relatos de que isso era comum, mesmo com o Xorg e com outros sistemas operacionais. Era necessário criar um arquivo de configuração para o X especificando a profundidade de cores desejada com a opção DefaultDepth.

Segue uma cópia exata de meu /etc/X11/XF86Config, para referência:

Section "ServerLayout"
        Identifier     "XFree86 Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
 
Section "Files"
        RgbPath      "/usr/X11R6/lib/X11/rgb"
        ModulePath   "/usr/X11R6/lib/modules"
        FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Speedo/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath     "/usr/X11R6/lib/X11/fonts/CID/"
        FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
        FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection
Section "Module"
        Load  "extmod"
        Load  "glx"
        Load  "dbe"
        Load  "record"
        Load  "xtrap"
        Load  "type1"
        Load  "speedo"
EndSection
Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "Protocol" "wskbd"
        Option      "Device" "/dev/wskbd"
EndSection
 
Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "wsmouse"
        Option      "Device" "/dev/wsmouse"
EndSection
 
Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    29-85
        VertRefresh  50-150
        Option       "DPMS"
EndSection
 
Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "SWcursor"                  # [<bool>]
        #Option     "HWcursor"                  # [<bool>]
        #Option     "NoAccel"                   # [<bool>]
        Identifier  "Card0"
        Driver      "suncg6"
        BusID       "SBUS:fb0"
        Option      "UseFBDev"  "True"
EndSection
 
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth   8
        SubSection "Display"
                Viewport   0 0
                Depth     1
                Modes     "1024x768"  "800x600"  "640x480"
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     4
                Modes     "1024x768"  "800x600"  "640x480"
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     8
                Modes     "1024x768"  "800x600"  "640x480"
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     15
                Modes     "1024x768"  "800x600"  "640x480"
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     16
                Modes     "1024x768"  "800x600"  "640x480"
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes     "1024x768"  "800x600"  "640x480"
        EndSubSection
EndSection
 

Conclusão

A Sun Ultra 1 é uma máquina muito interessante. Se você tem uma dessas encostada, realmente vale a pena colocá-la para funcionar. As últimas versões do NetBSD rodam muito bem nela.

Mais fotos

Responses

maneiro pacas

Cara não vi esse artigo como receita de bolo, ou melhor, está no bom e velho estilo “Howto: Como não criar artigos do parecidos com os do VOL”. Está bom pa caramba, principalmente essas fotos de sonho de consumo :D
Só falta um scriptzinho nele
ssh sun.honey.usp.br
login: new
password: new
:)

Muito bom! Ainda bem que vc resolveu o problema do HD e do X. De fato vai ser bem mais divertido programar num sparc de verdade que usar um emulador!

Leave a response

Your response:

Categories