Mam system 32-bitowy, który działa na 64-bitowym procesorze. Jak przekonwertować go na wersję 64-bitową bez ponownej instalacji? Widziałem gdzieś, że jest to wykonalne dzięki nowej ramie Multiarch .
36
Mam system 32-bitowy, który działa na 64-bitowym procesorze. Jak przekonwertować go na wersję 64-bitową bez ponownej instalacji? Widziałem gdzieś, że jest to wykonalne dzięki nowej ramie Multiarch .
Odpowiedzi:
TL; DR: To wykonalne, ale skomplikowane. Na dole przedstawiłem alternatywę.
Teraz długi opis i weź go z odrobiną soli, ponieważ być może nie wybrałem najlepszej drogi:
Jest to możliwe, a oto co zrobiłem przez ostatnie dwie noce: Istnieje wpis wiki opisujący oldschoolowy sposób bez wsparcia dla wielu kursów. Jest to pomocne w naprawianiu uszkodzonych pakietów.
Aby przeprowadzić migrację systemu podstawowego, wykonaj następujące czynności :
Niektóre z twoich pakietów to amd64, ale większość pozostanie i386.
apt-get upgrade
zajmie się niektórymi pakietami,apt-get -f install
naprawi niektóre błędy, ale nadal większość pakietów pozostanie i386. Jeśli chcesz sobie z tym poradzić, pomiń trudną część;)Użycie
dpkg --get-selections | grep :i386
zwróci wszystkie twoje pakiety, które nadal będziesz musiał migrować.Moim następnym pomysłem było:
Okazało się to jednak złym pomysłem: niektóre pakiety nie są dostępne w amd64 (np. Libc6-i686), apt-get będzie zdezorientowany, a wiele pakietów zostanie zainstalowanych w obu wersjach. Trzeba wykonać dużo pracy manualnej.
Więcej trudności: niektóre niezbędne pakiety można wymienić, aby zawsze mieć zainstalowane pliki binarne do instalacji, ale niektóre pakiety będą musiały zostać usunięte i ponownie zainstalowane, np. Miałem problem z tar. Zapomniałem pakietów w innym systemie, wyodrębniłem pakiety przez,
ar p package.deb data.tar.gz | tar zx
a następnie wyedytowałemscp
wyodrębnione pliki przezscp -r ./* root@other_computer:/
, więc pliki binarne są ponownie dostępne. Opłucz i powtórz, ascp
pliki ed zostaną zastąpione.Co bym zamiast tego zrobił
Za każdym razem, gdy zmieniałem system, robiłem następujące rzeczy:
Kopii zapasowej
/home
,/etc
(a może/var
,/usr/local
niektóre inne pliki, które uległy zmianie,/root
, ..., YMMV).Uzyskaj listę zainstalowanych pakietów
dpkg --get-selections > packagelist
i skopiuj również wynikowy plikpackagelist
.Następnie wykonaj czystą ponowną instalację Debiana, ponownie utwórz wszystkich użytkowników, może role itp.
Ponownie zainstaluj wszystkie pakiety za pomocą
dpkg --set-selections < packagelist; apt-get -f install
.Skopiuj z powrotem kopie zapasowe katalogów, plików i gotowe.
Jedna wada tego podejścia: wszystkie twoje pakiety, w tym biblioteki, zostaną oznaczone jako zainstalowane ręcznie, więc nie zostaną odinstalowane, gdy żaden pakiet już od nich nie zależy.
źródło
apt-mark showauto
wyeksportować listę automatycznie zainstalowanych pakietów iapt-mark auto
oznaczyć je w nowej instalacji.x86_64
i nie przejmuj się, czy moje pakiety systemowe nie wykorzystują optymalnie 64-bitowego procesora ? Używam również 32-bitowego systemu operacyjnego. Myślę, że myślałem, że mój procesor był 32-bitowy, kiedy pierwszy raz wykonałem instalację :(Inne odpowiedzi tutaj pokazują, że chociaż jest to teoretycznie możliwe, jest bardzo złożone i prawdopodobnie nie warte wysiłku. Możesz jednak wykonać czystą instalację i uczynić ten proces stosunkowo bezbolesnym, jeśli pozostaniesz
$HOME
taki sam.Ogólny proces będzie
Wykonaj kopię zapasową listy zainstalowanych pakietów i listy automatycznie zainstalowanych pakietów.
Zauważ, że możesz również chcieć usunąć architekturę z nazw pakietów, które zainstalowałeś za pomocą multiarch :
Jeśli twoja
/home
oddzielna partycja, pamiętaj, aby jej nie sformatować podczas procesu instalacji. Jeśli nie znajduje się na osobnej partycji, wykonaj kopię zapasową, którą możesz przywrócić później:Po zainstalowaniu nowego systemu zainstaluj brakujące pakiety
Przywróć swój $ HOME. Skopiuj plik tgz i wypakuj go do katalogu $ HOME:
Możesz także rzucić okiem na narzędzia, które zapewnia Mint, aby to ułatwić. Wszystkie powinny być również instalowalne na Ubuntu.
źródło
Teoretycznie jest to możliwe, ale prawdopodobnie zdradzieckie. Debian Multiarch obecnie obsługuje biblioteki wielu bibliotek, ale nie binaria. Więc to jest to.
System przede wszystkim rozumie swoją własną architekturę
dpkg-architecture
(która jest w rzeczywistości skryptem perla, ale wyodrębnia informacje o łuku i wyświetla je), która również twierdzi, że jest w stanie ustawić architekturę.OSTRZEŻENIE: NIE ROBIŁEM TEGO NORMY NAWET PRÓBY !!!
Z grubsza proces byłby:
libgcc1
)dpkg-architecture -aamd64
aby przesunąć łuk (uwaga, może to narzekać na GCC)dpkg
i zależnościapt-get
i jądra (uwaga, może to DUŻO narzekać)apt-get
Kroki te są oparte na tym, co wiem o projekcie Debiana, który używał go prawie wyłącznie wśród dystrybucji Linuksa w ciągu ostatnich 12 lat (w tym wcześniej go używał
debtakeover
) oraz podejściu, które wybrałbym. Rozważ to na własne ryzyko . Twój system może stać się bezużyteczny w dowolnym momencie po wykonaniu kroku 4. Alternatywą dla kroków 4 i 5 może byćdebbootstrap
.Co najważniejsze, zdecydowanie sugeruję wypróbowanie tego na maszynie wirtualnej przed zrobieniem tego na czymkolwiek, na czym ci zależy.
Powodzenia i niech Moc będzie z Tobą .
źródło
Nie jest to odpowiedź na pytanie, ale uaktualnienie wszystkich pakietów z x86 do amd64 może być trudne, ale możesz przynajmniej łatwo zainstalować pakiet jądra amd64, który pozwoli przynajmniej uruchomić 64-bitowe aplikacje oraz maszyny wirtualne i kontenery ( co może wystarczyć na to, czego potrzebujesz).
Wystarczy zainstalować pakiet Linux-image amd64 za pomocą
dpkg -i --force-architecture
.źródło
--force-architecture
nie jest potrzebne, a jądro amd64 można zainstalować za pośrednictwem apt na i386.Istnieje wiele instrukcji, ale prawie nie pokazują, czego naprawdę można się spodziewać. Piszę to na laptopie Debian Wheezy, który właśnie ukończyłem aktualizację z wersji 32-bitowej na 64 i rzeczywiście działa.
Postępowałem zgodnie z tymi instrukcjami i były one bardzo dokładne w kwestii tego, z czym się faktycznie spotkasz:
http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html
Zaleca się, aby system był zasilany przez cały proces, nie uruchamiaj ponownie komputera, chyba że masz pewność, że przeprowadziłeś migrację wszystkiego i że wszystko, co zostało usunięte, zostało ponownie zainstalowane (szczególnie niezbędne pakiety), albo nie uruchomisz systemu ponownie.
źródło
Zgodnie z pomysłem za pomocą awk , skończyłem na użyciu:
Musiałem uruchomić go kilka razy.
dpkg --get-selections
jest po prostu listą alfabetyczną, więc pakiety u góry, które wymagają pakietów u dołu, zostaną pominięte. Jeśli chcesz zobaczyć, ile jest instalowanych, zrób todpkg --get-selections | grep amd64 | wc -l
wwhile
pętli.źródło
Mam niewielkie doświadczenie w tej sprawie, ale uważam, że masz rację, gdy mówisz, że konwersja z 32 na 64 powinna być możliwa przy użyciu wielu łuków. Byłbym jednak ostrożny, jeśli chodzi o wsparcie tego nowego systemu.
Oto jeden z przeczytanych przeze mnie dokumentów, który omawiał tę sprawę, być może pomoże ci to: https://wiki.ubuntu.com/MultiarchSpec
Zwróć uwagę na trzecie historie użytkowników. Oto kolejny link na ten sam temat: https://help.ubuntu.com/community/MultiArch
Mimo, że może to być nieco inna różnica między Debianem a Ubunutu, jest to podstawowa funkcja. Wyobrażam sobie, że Ubuntu i Debian będą ściśle współpracować, aby ta struktura działała w terenie, zanim Ubuntu odejdzie i zrobi coś własnego.
Powodzenia!
źródło