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











