mini COMO FAZER sobre a Atualização da sua Distribuição do Linux Greg Louis, glouis@dynamicro.on.ca v1.11, 6 de Junho de 1996 Dicas e tipos de atualização de uma distribuição do Linux para outra. ______________________________________________________________________ Índice geral 1. IMPORTANTE!!! Advertência e Direitos Autorais 2. Mudanças desde a versão 1.1 3. Introdução 3.1 Como matar e reencarnar o seu Linux! 3.2 Por que ninguém quer fazer isto? 3.3 Você tem que ``destruir e reinstalar?'' 3.4 Quanto tempo isto levará? 4. Anote tudo o que você faz. 5. Faça um backup completo do sistema existente. 6. Backup do diretório /etc e de seus subdiretórios em um ou mais disquetes. 7. Faça backups separados para grupos de arquivos que você precisa preservar. 8. Prepare o disquete de inicialização e o principal para a nova instalação 9. Formate os disquetes para o kernel temporário e para o final da construção 10. Impedindo acessos e backups das árvotes do /root e do /home. 11. Inicialize do novo disquete de instalação e do novo disquete principal 12. Apague as partições do Linux com fdisk e as recrie 13. Execute a Instalação nova do Linux 14. Com o novo sistema Linux inicializado do disco rígido, edite o etc/fstab 15. Restaure os dados da configuração para o diretório /etc e os seus subdiretórios 16. Configure e reconstrua o kernel do Linux 17. Restaure as coisas dos backups que você fez anteriormente 18. Revisão de Segurança 19. Acessos habilitados 20. Desculpas, mas mais uma vez: 21. Agradecimentos ______________________________________________________________________ 11.. IIMMPPOORRTTAANNTTEE!!!!!! AAddvveerrttêênncciiaa ee DDiirreeiittooss AAuuttoorraaiiss O procedimento para qual este documento tenta ser um guia é perigo inerente para programas e dados armazenados em seu computador. Você realiza qualquer procedimento inteiramente por sua conta própria. Os passos descritos neste documento funcionaram para o autor, porém não existem garantias de que funcionarão para você, nem que você tente segui-los sem prejuízos sérios para os programas do seu computador e/ou dados. É inteiramente de sua conta do uso de qualquer informação presente aqui, e o autor não deseja ser responsável de qualquer modo por algum prejuízo ou inconveniência de qualquer tipo que você pode sofrer ao fazer isto. Este documento é de direitos autorais da Dynamicro Consulting Limited, 1996, e é distribuído sobre os termos da Licença Pública GNU. Isto significa basicamente que você pode copiá-lo e modificá-lo, mas não pode evitar que outros façam do mesmo modo. Comentários e perguntas podem ser dirigidas ao autor. Especialmente bem-vindas para o uso em futuras revisões são as considerações de atualizações de sistemas complexos feitas com sucesso. 22.. MMuuddaannççaass ddeessddee aa vveerrssããoo 11..11 · Adicionada esta seção de história. · Adicionada a sugestão de Zoltán Hidvégi: re mtime e ctime. Obrigada, Zoltán! · Adicionada a seção de Agradecimentos. 33.. IInnttrroodduuççããoo 33..11.. CCoommoo mmaattaarr ee rreeeennccaarrnnaarr oo sseeuu LLiinnuuxx!! O propósito deste documento é oferecer dicas para auxiliar você através da destruição e reinstalação de um sistema Linux. Ele não é um livro de receitas de qualquer forma, mas eu espero que ele sirva como alguma indicação de que você precisa pensar sobre isto, e da ordem na qual fazer as coisas. Ele teria que me ajudar, se ninguém mais tivesse escrito algo vomo isto antes de eu fazer a primeira atualização, então espero que ele será útil para você se você tem uma máquina Linux para reconstruir. Entretanto, não tome isto como verdade: seu preço mudará quase que certamente; mesmo os nomes de diretórios neste documento podem estar diferentes dos que você precisa usar; algumas pessoas tem o /usr/home ao invés do /home, por exemplo; outros o chamam de /u, e alguns (arrepios :) colocam seus usuários diretamente no /usr! Não posso ser específico sobre seu sistema, assim eu só usei os nomes no modo em que eles estão no meu. Você observará também que eu uso as distribuições do Slackware, e que eu assumo que você possui espaço de disco e RAM suficientes para instalar o fonte do kernel do Linux e construir seu próprio kernel. Se o seu sistema é diferente, algumas das minhas recomendações não se aplicarão, mas eu espero que você ainda encontre um esboço geral para ajudar em seu projeto de reconstrução. 33..22.. PPoorr qquuee nniinngguuéémm qquueerr ffaazzeerr iissttoo?? Boa pergunta! Se este processo pode possivelmente ser evitado, não o faça! (Esta é a recomendação mais inportante deste guia inteiro!!!), mas existem horas que você pode ter que fazer. Por exemplo, eu instalei um disco de 4Gb e então descobri que o Slackware 2.0 não sabia que um disco rígido pode ter mais que 2Gb, e ele ficou muito confuso. Assim, eu tive que atualizá-lo para a então versão Slackware 2.3. Aquela atualização foi uma experiência cansativa, e é uma parte da razão pela qual estou escrevendo estas notas. Eu apenas fiz tudo errado, e só a sorte e o fato de que eu tinha outra execução do Linux ao meu lado me salvaram de um desastre. Como outro exemplo, eu descobri que eu não poderia ter sucesso na construção de um kernel do Linux a.out nas séries 1.3, usando uma instalação do Slackware 2.3 (outra máquina, não a que eu estraguei anteriormente). Fui a fundo, comprei o Slackware 3.0 e converti para ELF. Desta vez a reinstalação foi melhor, graças em parte a minha amarga experiência anterior, e ela serviu como fonte de muitas das idéias que estou oferecendo a você aqui. 33..33.. VVooccêê tteemm qquuee ````ddeessttrruuiirr ee rreeiinnssttaallaarr??'''' É mais seguro e bastante estranho. Se você instalar no topo de um sistema Linux existente, as possibilidades são de que você terá uma mistura binários velhos e novos, arquivos de configuração velhos e novos, e geralmente uma dificuldade em tentar administrá-los. Limpar o sistema e então colocar somente o que você sabe que vai precisar é um modo drástico porém efetivo de obter um resultado limpo (é claro que nós estamos falando da instalação completa de uma nova distribuição aqui, não sobre a atualização de um ou dois pacotes! O melhor método para evitar de ter que fazer uma reinstalação inteira é, precisamente, manter os bits individuais -- especialmente o gcc e suas bibliotecas, e utilitários binários -- atuais. Se a coisa que você usa é razoalvelmente atual, e você pode obtê-la através de importação e se o novo código precisa ser compilado de hora em hora, então não existe necessidade de uma atualização em massa). Como Patrick Volkerding apontou (ele recomendou também o procedimento de limpeza para as atualizações), instalar o ELF no tpo de um sistema em execução é uma receita desastrosa; pelo menos, se você quiser saber o suficiente para testá-lo, você não precisa ler este manual! Mesmo sem esta complicação, é melhor você construir sem preparação, no improviso. 33..44.. QQuuaannttoo tteemmppoo iissttoo lleevvaarráá?? Depende, é claro, de quão complexo o seu sistema é, mas figurei para uma atualização com sucesso. Gastei cerca de dez horas fazendo backups, seis horas reconstruindo o sistema para o ponto onde eu possa habilitar acessos, e a outra metade do dia (ou mais ou menos isso) restaurando a parte menos importante. Como o tempo passa eu mantenho pequenas descobertas exatamente como eu as quero -- conserto estas coisas assim que elas são encontradas -- mas no principal, vinte horas devem ser suficientes para um trabalho de reconstrução razoavelmente complexo, talvez menos se você está reinstalando de um disco rígido (eu usei o CDROM) ou mais se você precisar instalar de disquetes. Talvez menos se você possui um Pentium rápido, mais se ele é um 386. Você pegou a idéia. Demais para a introdução; aqui está como ajustá-lo, uma vez que você decidiu se ele deve ser feito. Arme- se com coragem, e: 44.. AAnnoottee ttuuddoo oo qquuee vvooccêê ffaazz.. É extremamente útil ter um registro do que você fez no processo de preparação e realização. Especialmente importante é uma lista de backups que será feita na preparação, para a destruição do seu sistema existente. 55.. FFaaççaa uumm bbaacckkuupp ccoommpplleettoo ddoo ssiisstteemmaa eexxiisstteennttee.. Genericamente falando, backups tendem a serem escrito na medida em que são acessados. Sendo assim, você não precisará usar este backup completo para a restauração de um número significante de arquivos; ele guarda muitos arquivos nele dos quais você não precisa. É melhor criar pequenos backups de segmentos individuais que você sabe que vai restaurá-los inteiramente. Listarei um grupo de exemplos posteriormente. Por que então você deve inicializar com um backup completo? Por duas razões: primeiro, no caso de uma falha catastrófica na instalação do novo sistema, você terá um modo de voltar ao ponto de início com com o mínimo de perda. Segunda. não importa com quanto cuidado você prepare a nova instalação, existe uma grande chance de que um ou dois arquivos importantes sejam omitidos. Naquele caso, a restauração de graça daqueles arquivos no backup completo será preferível, do que a inconveniência de fazer sem eles. Para economizar tempo e espaço, se você ainda possui a distribuição intermediária para sua versão velha do Linux, você deve precisar do backup somente daqueles arquivos (com o mtime ou ctime) que são mais recentes que a data de instalação original. 66.. BBaacckkuupp ddoo ddiirreettóórriioo //eettcc ee ddee sseeuuss ssuubbddiirreettóórriiooss eemm uumm oouu mmaaiiss ddiissqquueetteess.. Este é o outro extremo: você não estará restaurando estes arquivos (para a maior parte, de qualquer modo) e sim estará comparando-os aos novos que foram criados durante a instalação. Por que? Por que os novos podem ter dados que os arquivos velhos não tinham, ou expressar os dados velhos por métodos novos. Mudanças em protocolos, adição de novas ferramentas ou a implementação de novos recursos em ferramentas existentes podem impor mudanças nos formatos nos arquivos de configuração e scripts de inicialização que a árvore do /etc contém, e você terá que muito provavelmente editar seus dados velhos dentro destes arquivos para preservar os formatos novos e tirar vantagem das melhorias. 77.. FFaaççaa bbaacckkuuppss sseeppaarraaddooss ppaarraa ggrruuppooss ddee aarrqquuiivvooss qquuee vvooccêê pprreecciissaa pprreesseerrvvaarr.. Esta é a parte variável do trabalho, e tudo que o que eu posso realmente fazer é descrever o que eu fiz no meu sistema, na esperança de que isto servirá como um rascunho. Basicamente, você precisa dar uma olhada em cada diretório que contenha qualquer: · arquivo(s) que não faça(m) parte de sua instalação padrão, ou · arquivo(s) que é (são) atualmente mais novo(s) que o(s) que você instalará quando você fizer a sua nova instalação do Linux. e separe somente aqueles arquivos os quais você precisa para transportar. (Outra estratégia possível é fazer backup de todos os arquivos com o mtime ou o ctime mais recentes que o dia anterior ao da instalação do Linux, como mencionado acima, e então restaurar estes. Se você fizer isto, você deve dar uma olhada nos registros que a nova distribuição do Linux pode conter de alguns arquivos que ainda são mais recentes que aqueles que você salvou). No meu caso, eu finalizei construindo um arquivo .tgz do backup para cada um destes: · /usr/lib/rn · /usr/lib/smail · /usr/lib/trn (o resto do /usr/lib seria reinstalado) · /usr/local/src · /usr/local/bin · /usr/local/lib · /usr/local/lpfont · /usr/local/man · /usr/local/sbin · /usr/local/thot (existiam outros arquivos em /usr/local dos quais eu não precisei) · /usr/openwin · /usr/src/lilo-17 (porque o meu Slackware novo ainda tinha a versão 16) · /usr/src/linux-1.2.13 (pois não fiz uma personalização) · /usr/X11R6/lib/X11/app-defaults · /usr/X11R6/lib/X11/initrc (o resto do Xfree86 era para ser reinstalado) · /var/named · /var/openwin · /var/texfonts Na minha máquina foi relativamente fácil visto que não existiam arquivos de armazenamento temporário (spool) com os quais me preocupar. Eu não executei buffers novos, e visto que existem somente dois usuários, foi mais fácil obter todos os mails lidos antes de desligar a máquina. Por outro lado, os diretórios /var/spool teriam que ser gravados no último minuto (e é claro, as bibliotecas novas e os diretórios do site!). 88.. PPrreeppaarree oo ddiissqquueettee ddee iinniicciiaalliizzaaççããoo ee oo pprriinncciippaall ppaarraa aa nnoovvaa iinnssttaallaaççããoo Detalhes de como fazer isto serão encontrados no manual de instalação para a sua nova distribuição. 99.. FFoorrmmaattee ooss ddiissqquueetteess ppaarraa oo kkeerrnneell tteemmppoorráárriioo ee ppaarraa oo ffiinnaall ddaa ccoonnssttrruuççããoo Você precisará de dois, um disquete para cada. Depois de tudo feito, você está pronto para o Grande Momento. O próximo passo remo o sistema da produção. 1100.. IImmppeeddiinnddoo aacceessssooss ee bbaacckkuuppss ddaass áárrvvootteess ddoo //rroooott ee ddoo //hhoommee.. Esta é a última coisa a ser feia no sistema velho antes de você destrui-lo, bem como transportar o usuário mais recente e a informação do root. 1111.. IInniicciiaalliizzee ddoo nnoovvoo ddiissqquueettee ddee iinnssttaallaaççããoo ee ddoo nnoovvoo ddiissqquueettee pprriinncciippaall 1122.. AAppaagguuee aass ppaarrttiiççõõeess ddoo LLiinnuuxx ccoomm ffddiisskk ee aass rreeccrriiee O manual de instalação lhe explicará como configurar isto, que destruirá o sistema velho. De agora em diante você depende da qualidade dos backups que você fez nos passos anteriores! Você foi avisado! 1133.. EExxeeccuuttee aa IInnssttaallaaççããoo nnoovvaa ddoo LLiinnuuxx Já existem bons documentos descrevendo como fazer isto, deste modo não irei entrar em detalhes. Continue daqui quando o sistema novo pôde inicializar do seu disco rígido. Ao longo do caminho, certifique-se de que ao construir um disquete você pode inicializar satisfatoriamente, visto que o kernel que a configuração do Linux instala tem que ser substituído e acidentes podem acontecer durante o processo. Esteja seguro ao instalar os pacotes de desenvolvimento e o fonte do kernel. 1144.. CCoomm oo nnoovvoo ssiisstteemmaa LLiinnuuxx iinniicciiaalliizzaaddoo ddoo ddiissccoo rrííggiiddoo,, eeddiittee oo eettcc//ffssttaabb e adicione a sua partição de swap (troca), e então execute o comando "swapon -a". Eu não sei porque, mas a configuração do Slackware não se oferece para fazer isto para você se a sua partição de swap já existe. Então, quando você inicializar o seu novo sistema e o script rc.S, experimente habilitar o swap, pois ele não pode encontrar a partição no arquivo fstab e o troca não fica habilitada. Este passo conserta-o. 1155.. RReessttaauurree ooss ddaaddooss ddaa ccoonnffiigguurraaççããoo ppaarraa oo ddiirreettóórriioo //eettcc ee ooss sseeuuss ssuubbddiirreettóórriiooss Como descrito acima, você não pode apenas copiar tudo dos arquivos velhos de volta para o /etc e esperar que as coisas funcionem corretamente mais tarde. Em alguns arquivos você pode fazer isto, por exemplo com o /etc/XF86Config (você está usando a mesma versão -- e o mesmo hardware de vídeo -- na nova instalação assim como você fez na versão velha). Para a maior parte, entretanto, é melhor usar o diff para comparar os velhos com os arquivos novos antes de fazer qualquer cópia. Esteja atento especialmente com mudanças significativas nos arquivos do /etc/rc.d, que podem pedir a você para restabelecer sua configuração velha manualmente, ao invés de copiar os scripts do rc antigos do seu backup. Uma vez feito isto, reinicialize. 1166.. CCoonnffiigguurree ee rreeccoonnssttrruuaa oo kkeerrnneell ddoo LLiinnuuxx Mesmo se você não teve que fazer absolutamente nada a fim de obter um kernel que suporte o seu hardware, é importante fazê-lo a fim de obter um kernel que não contenha um grande volume de controladores para coisas que a sua máquina não tem. Para detalhes, veja o COMO FAZER sobre o kernel. Instale e reconstrua o kernel em um disquete primeiramente; uma vez que a inicialização dá certo instale-o no disco rígido, execute o LILO se você está usando ele, e então reinicialize. 1177.. RReessttaauurree aass ccooiissaass ddooss bbaacckkuuppss qquuee vvooccêê ffeezz aanntteerriioorrmmeennttee Alguns dos binários poderão precisar serem reinstalados dos diretórios fonte; eu tive que fazer isto com o lilo, por exemplo, visto que a minha versão era mais nova do que a da instalação do Slackware e eu não me incomodei em salvar o binário do /sbin. Você precisará testar através de seus programas restaurados e confirmar a existência e a exatidão dos arquivos de configuração, bibliotecas e assim por diante. Em alguns caso, você pode ter que restaurar coisas em uma ordem específica; você fez observações durante o backup, não fez? ;-) 1188.. RReevviissããoo ddee SSeegguurraannççaa Teste as permissões dos arquivos e diretórios para ter certeza de que o acesso não é nem muito restrito e nem muito fácil. Eu acho que o Slackware visa em direção a uma ambiente mais aberto do que eu queira, assim eu coloco 755's a 711's para binários nos diretórios .../bin e coisas como estas, ou mesmo 700's nos diretórios .../sbin. Um cuidado especial é necessário se você transportou um servidor ftp; mas então, se você estiver executando um servidor ftp, provavelmente já pensou nisso. :) 1199.. AAcceessssooss hhaabbiilliittaaddooss Você está ligado e rodando. Daqui a pouco, provavelmente existirão detalhes a serem arrumados, mas a parte principal do trabalho está feita. Divirta-se! 2200.. DDeessccuullppaass,, mmaass mmaaiiss uummaa vveezz:: UUSSEE EESSTTAA IINNFFOORRMMAAÇÇÃÃOO PPOORR CCOONNTTAA PPRRÓÓPPRRIIAA!! (Veja a Advertência no início deste documento). 2211.. AAggrraaddeecciimmeennttooss Agradecimentos pela contribuição este mini COMO FAZER a Zoltán Hidvégi.