Saya memiliki instalasi Ubuntu 32-bit yang berjalan pada perangkat keras 64-bit. Sekarang multi-arch telah diimplementasikan , saya ingin beralih ke 64-bit tanpa harus menginstal ulang OS.
Ini adalah salah satu kisah pengguna yang ditangani oleh spek :
Shawn menginstal sistemnya menggunakan Ubuntu versi 32-bit, tetapi perangkat kerasnya 64-bit dan dia ingin beralih. Dia secara manual menginstal versi amd64 dari dpkg dan apt, mengganti versi i386 dan mengubah arsitektur mana yang digunakan sebagai default; kemudian dia menginstal paket amd64 ubuntu-minimal; kemudian dia menginstal paket amd64 ubuntu-desktop. Seiring waktu, paket i386 yang tersisa diganti secara otomatis saat peningkatan.
Namun, ketika mencoba mengikuti petunjuk di sana, saya tidak dapat menemukan versi 64-bit dpkg atau apt.
Apakah kisah pengguna ini diterapkan dengan cara berbeda dalam spesifikasi akhir, atau apakah saya perlu melakukan sesuatu yang berbeda?
Singkatnya, bagaimana saya bisa mengubah instalasi 32-bit ke 64-bit?
Jawaban:
Pendekatan semacam itu sangat rumit, dan tidak mungkin menghasilkan semua paket Anda sebagai
amd64
versi alih-alihi386
versi. Hanya paket yang benar-benar menerima peningkatan kemungkinan akan diubah dalam arsitektur, dan mungkin hanya jika tidak ada paket lain yang tidak ditingkatkan bergantung pada keberadaani386
arsitekturnya. Karena beberapa paket tidak akan menerima pembaruan apa pun sepanjang seluruh siklus dukungan rilis Ubuntu Anda, Anda mungkin tidak akan pernah memilikiamd64
sistem sepenuhnya menggunakan teknik seperti itu. Selain itu, tentu saja tidak ada dukungan resmi untuk pendekatan semacam itu.Anda sebaiknya mengganti sistem Ubuntu yang ada dengan instalasi 64-bit yang baru.
Namun, jika Anda ingin mencoba teknik ini, Anda harus secara manual men-download
.deb
file untukdpkg
danapt
. Anda dapat menemukannyadpkg
di Ubuntu danapt
di halaman Ubuntu di Launchpad - perluas versi terbaru di bawah "The Oneiric Ocelot" yang ditandai sebagai rilis, keamanan, dan / atau pembaruan (tetapi Anda mungkin tidak ingin versi hanya ditandai diusulkan dan / atau backports, jika ada). Kemudian unduh.deb
file yang ditandaiamd64
. Khususnya, file yang Anda inginkan adalah: ini untukdpkg
(dan yang lain juga terdaftar, jika Anda memiliki paket-paket yang diinstal) dan ini dan ini dan ini dan ini dan inidan ini untukapt
.Sebelum Anda melakukan apa pun dengan file-file ini, Anda harus memastikan untuk mencadangkan semua dokumen penting dalam sistem Ubuntu yang Anda instal dan file penting lainnya (misalnya, musik, ebooks, video), karena agak mungkin bahwa upaya teknik ini akan menjadi bumerang buruk. dan biarkan sistem Ubuntu Anda benar-benar tidak dapat digunakan.
Anda dapat menginstal semua paket ini dengan meletakkannya di folder yang tidak mengandung hal lain (misalkan folder tersebut dipanggil
debs
dan ada di dalamDownloads
direktori Anda ), dan kemudian jalankan perintah ini:Tentu saja, setelah Anda menginstalnya, mereka tidak akan benar-benar berjalan, karena executable-nya 64-bit dan sistem Ubuntu 32-bit Anda menjalankan kernel 32-bit (yang hanya akan menjalankan executable 32-bit). Bahkan, mereka mungkin bahkan tidak selesai menginstal, karena mereka mungkin memiliki skrip post-instal yang menjalankan executable 64-bit mereka yang tidak dapat di-unrunnable.
Ada berbagai cara untuk mencoba menginstal kernel 64-bit ke sistem 32-bit, tetapi semuanya sangat rumit, jadi saya sarankan Anda melakukan booting dari CD live Oneiric 64-bit (yang sendiri menjalankan 64-bit kernel), chroot ke sistem Ubuntu yang diinstal, dan gunakan 64-bit yang baru diinstal
apt
dandpkg
untuk menginstal kernel 64-bit.Berikut adalah petunjuk khusus untuk melakukan itu ... tapi tolong jangan anggap ini berarti bahwa saya mengatakan itu akan berhasil. Saya belum mencoba ini. (Saya telah chroot ke sistem Ubuntu yang diinstal dari live CD dan melakukan manajemen paket dan operasi lainnya, tapi saya belum mencoba operasi lintas-arsitektur yang disarankan di sini.)
Di sistem Ubuntu Anda yang terinstal, buka jendela Terminal ( Ctrl+ Alt+ T) dan jalankan
mount | grep ' on / '
(dengan menempelkannya ke Terminal dan menekan enter). Anda harus melihat sesuatu seperti/dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0)
. Bagian yang Anda minati adalah nama perangkat sebelumnyaon
(dalam contoh ini, itu/dev/sda2
). Ingat itu, atau tuliskan.Langkah 1 memberi Anda nama perangkat
/
partisi. Jika Anda memiliki/boot
partisi yang terpisah , maka Anda harus mengetahui nama perangkat untuk itu juga. Jadi dalam hal ini, jalankanmount | grep ' on /boot '
. Anda akan melihat sesuatu seperti/dev/sda1 on /boot type ext2 (rw)
. Ingat atau tulis ini juga.Boot dari live CD Oneiric amd64 (yaitu, 64-bit) dan pilih "Coba Ubuntu" daripada "Instal Ubuntu".
Pergilah ke browser web dan pastikan konektivitas Internet berfungsi penuh. Jika tidak, aturlah.
Buka jendela Terminal dan jalankan
sudo mount /dev/sda2 /mnt
(ganti/dev/sda2
dengan nama perangkat yang Anda dapatkan di langkah 1, jika berbeda).Jika sistem yang Anda instal memiliki
/boot
partisi yang terpisah , jalankansudo mount /dev/sda1 /mnt/boot
(ganti/dev/sda1
dengan nama perangkat yang Anda dapatkan di langkah 2, jika berbeda).Sekarang, jalankan perintah-perintah ini untuk melakukan chroot ke sistem yang Anda instal:
Jalankan
ping -c 4 launchpad.net
untuk melihat apakah konektivitas Internet berfungsi sepenuhnya dari dalam chroot. Anda mengharapkan sesuatu seperti ini:Sebaliknya, jika Anda tidak dapat mengirim atau menerima paket, maka Anda harus mengatur konektivitas Internet di chroot. Untuk melakukannya, jalankan perintah ini (untuk meninggalkan chroot, salin file konfigurasi yang relevan dari sistem CD langsung ke chroot, dan masukkan kembali chroot):
Walaupun umumnya Anda harus menghentikan proses ini jika ada kesalahan, jangan khawatir jika perintah pertama dan / atau kedua dari keempat perintah gagal, asalkan cara spesifik gagal adalah dengan memberi tahu Anda bahwa
/mnt/etc/resolv.conf
(atau/mnt/etc/hosts
) tidak ada .Chroot kembali dan coba lagi:
Jalankan perintah ini untuk membuat lingkungan chroot Anda siap digunakan:
Jika Anda belum menginstal
.deb
file untuk versi 64-bitdpkg
danapt
, lakukan sekarang. Jika Anda menginstalnya tetapi ada kesalahan konfigurasi, jalankandpkg --configure -a
untuk memperbaikinya. (Semoga itu akan berhasil ... mungkin lebih baik menunggu untuk mencoba menginstalnya sampai Anda berada di lingkungan live CD, kalau-kalau menginstal 64-bitdpkg
saat boot ke sistem yang diinstal meninggalkandpkg
dalam keadaan tidak dapat digunakan.)Dengan versi 64-bit
dpkg
danapt
diinstal, dengan asumsi bahwa mereka akan secara otomatis menginstal paket 64-bit, Anda sekarang dapat menghapus semua kernel 32-bit Anda dan menginstal kernel 64-bit. Untuk menghapus kernel 32-bit Anda, jalankandpkg -l | grep linux-
. Ini daftar paket yang diinstal yang dimulai denganlinux-
. Anda lebih khusus tertarik dalam paket yang mulai sepertilinux-generic
,linux-image
,linux-server
, dan / ataulinux-headers
. Hapus file-file ini denganapt-get purge ...
tempat...
diganti dengan daftar paket yang Anda hapus.Sekarang instal ulang paket yang Anda hapus. (Sebenarnya, untuk paket yang berisi nomor versi dalam nama paket, seperti misalnya
linux-image-3.0.0-13-generic
, Anda hanya perlu menginstal nama paket versi terbaru.) Lakukan ini dengan menjalankan diapt-get install ...
mana...
diganti dengan daftar paket-paket yang Anda instal dengan spasi terpisah yang Anda instal .Perbarui konfigurasi boot loader, unmount beberapa perangkat, dan biarkan chroot:
Jika Anda berlari
sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old
dan itu tidak gagal, maka sekarang jalankansudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf
.Jika Anda berlari
sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
dan itu tidak gagal, maka sekarang jalankansudo cp /mnt/etc/hosts.old /mnt/etc/hosts
.Jika sistem Anda yang terinstal memiliki
/boot
partisi yang terpisah , lepaskan itu:sudo umount /mnt/boot
Lepaskan
/
partisi sistem yang Anda instal :sudo umount /mnt
Biarkan jendela Terminal (run
exit
), lalu reboot (atau matikan) sistem live CD dan boot ke sistem yang diinstal.Lihat apakah sistem dapat digunakan dan menjalankan kernel 64-bit (
uname -m
seharusnya mengatakan arsitekturnyax86_64
).Mungkin ada paket tambahan yang perlu Anda instal, seperti
ia32_libs
dan / atau versi 64-bitlibc6
, agar ini berfungsi. Untuk beberapa di antaranya, Anda mungkin diberi tahu bahwa Anda membutuhkannya saat mencoba menginstal versi 64-bitdpkg
dan / atauapt
. Bagi yang lain, Anda mungkin tidak diberi tahu.(Petunjuk di atas untuk chroot dan beroperasi di lingkungan chroot didasarkan pada bagian yang signifikan pada prosedur yang terkait tetapi berbeda ini dan juga pada beberapa posting Jawaban Launchpad milik saya, terutama # 6 di sini dan # 6 di sini . Dan terima kasih khusus kepada Cesium untuk menunjukkannya. bahwa 64-bit
dpkg
danapt
executable tidak akan berjalan pada sistem yang menjalankan kernel 32-bit.)sumber
apt
dandpkg
masih 32-bit dan (mungkin) akan menolak untuk menginstal paket kernel 64-bit. (Membangun kernel dari sumber, dan menggunakan kompilasi silang, akan berhasil, tetapi ini sangat rumit dan saya tidak ingin merekomendasikannya. Saya yakin ada cara yang lebih baik dan lebih mudah. Jika Anda mengetahuinya, silakan saja. untuk mengedit posting saya atau Anda atau komentar tentang hal itu.)Seperti yang diberikan di atas, saya melakukan:
Itu berhasil. Saya dapat menjalankan userland 32-bit saya dengan kernel 64-bit, di Ubuntu 12.04.
sumber
sudo dpkg --add-architecture amd64
saja. Itu akan meneriaki Anda jika Anda melakukannya dengan cara lain. Saya perlu melakukan ini sehingga saya bisa chroot ke instalasi 64 bit dari (sebelumnya) 32 bit satu dan itu bekerja persis seperti yang diharapkan tanpa hambatan.linux-image-generic:amd64
Ubuntu 16.04. Ini bekerja dengan baik, bahkan tanpa dua perintah terakhir.Meskipun pertanyaannya mirip dengan Apakah mungkin untuk "meningkatkan" dari instalasi 32bit ke 64bit? (Jika Anda belum membacanya sebelum saya mendorong Anda untuk mencobanya. Jawabannya ada yang bagus.) Saya juga merekomendasikan membaca tautan berikut:
Untuk kinerja yang lebih baik haruskah saya menginstal 32-bit atau 64-bit?
Bagaimana saya bisa mengganti instalasi 32-bit ke instalasi 64-bit?
Apa perbedaan antara 32-bit dan 64-bit, dan mana yang harus saya pilih?
Apakah mungkin: Ya
Apakah mudah: TIDAK!
Jika masalah Anda dengan memori, maka Anda harus tahu bahwa Ubuntu 32 Bit dapat membaca lebih dari 4GB RAM (Hingga 64 GB). Jadi menggunakan versi Ubuntu 32 Bit terbaru dengan komputer yang memiliki arsitektur 32 Bit atau 64 Bit dan memasukkan lebih banyak RAM tidak akan menjadi masalah. Ini hanya akan membaca RAM tambahan dan bekerja.
sumber
Jawaban-jawaban ini agak ketinggalan jaman. Cross-grading sekarang didokumentasikan untuk Debian di wiki Debian , tetapi masih tidak disarankan.
Menginstal kernel dari arsitektur yang berbeda sekarang semudah dijelaskan di sana, tetapi 'apt' yang baru tidak akan mengenali paket-paket dari arsitektur sebelumnya, dan semua front-endnya dapat melaporkan banyak paket yang rusak. Ini membutuhkan perubahan semua dependensi ke arsitektur lain, atau mengembalikan apt dan dpkg ke 32-bit.
Jadi pendekatan terbaik adalah menyimpan hasil
dpkg --get-selections
, strip: i386 pertama dari itu, dan unduh paket amd64 untuk setiap dependensi ke cache:Paling-paling itu cenderung lambat dan memakan waktu untuk menyelesaikan dependensi.
sumber
Petunjuk ini membuat boot sistem Anda dengan kernel 64-bit tetapi tidak mengubah sebagian besar program userland.
Setelah memutakhirkan sistem saya dengan CPU 64-bit, saya juga ingin menginstal kernel 64-bit pada Ubuntu 32-bit 14.04.2 saya (codename: Trusty). Untuk melakukan ini, saya memasukkan perintah berikut sebagai pengguna root :
Catatan:
Ini mungkin menghapus kernel 32-bit Anda sebagai amanah - secara default - dikirimkan dengan kernel yang diperbarui (kernel dari utopis), lihat 14.04 Catatan Rilis . Dalam hal ini, kernel Anda saat ini bertentangan dengan kernel 64-bit yang harus diinstal dan karenanya dihapus. Jika Anda tidak menyukai ide ini, Anda mungkin ingin mencoba paket kernel 64-bit "linux-generic-lts-trusty: amd64" sebagai gantinya.
Perintah "--add-architecure" sangat penting. Tanpa itu, sistem paket tidak mendukung paket dari arsitektur yang berbeda, lihat Multiarch-HowTo
Untuk melihat apa yang
apt-get
akan dilakukan pada sistem Anda, jalankan dengan opsi-Vs
yang memungkinkan "mode simulasi verbose". Ini akan mencetak semua paket yang akan diinstal dan dihapus.Apakah sistem Anda melakukan booting menggunakan kernel baru tergantung pada
grub
konfigurasi. Sebagai pengguna root , jalankanupdate-grub
untuk membuat pembaruan grub dan mencetak konfigurasi boot saat ini. Gambar pertama dalam daftar akan di-boot sebagai default.Untuk memilih gambar kernel yang berbeda, saya menghapus baris
GRUB_HIDDEN_TIMEOUT=0
dari/etc/default/grub
dan berlari sebagai pengguna rootupdate-grub
. Pada saat boot, Anda sekarang dapat memilih kernel yang berbeda (Anda punya 10 detik untuk menekan tombol apa saja jika tidak grub akan melanjutkan dengan kernel default).Jawaban dengan suara terbanyak adalah dari 2011 dan menurut saya sudah ketinggalan zaman. Multiarch memungkinkan Anda menginstal paket perpustakaan dari berbagai arsitektur di mesin yang sama tanpa banyak basa-basi.
sumber
apt-get install linux-generic:amd64
yang pastinya tidak terlalu penting untuk percobaan)! Jika saya pergi melalui opsi boot "rescue", sistem berjalan, tetapi X tidak menggunakannouveau
driver video dan yang lainnya. Jika saya boot dengan normal, startup akan rusak pada beberapa titik dan sistem reboot. (Tetapi pertama kali, saya berhasil melakukan booting.) Saya tidak yakin apakah masalahnya dengan driver video saat boot "normal" atau yang lainnya.Mungkin, ketika saya menghadapi masalah yang sama, ini akan berhasil, itulah yang saya rencanakan untuk dilakukan:
Dapatkan versi 64-bit OS, instal ke partisi, ketika selesai menyalin dokumen dan hal-hal lain dari instalasi 32-bit, ketika semuanya disalin dengan aman, Anda dapat memformat sisa drive dan menggunakannya.
sumber
Ya, garis arsitektur asing sangat penting untuk menginstal paket lintas lengkung APAPUN. Namun setelah itu, lakukan seperti yang disebutkan beberapa pengguna lain:
Itu hanya tentang melakukannya ...
sumber
Resep saya untuk Ubuntu 16.04 Xenial, diuji pada 32-bit Ubuntu VM yang baru diinstal dengan sistem standar dan server SSH tetapi tanpa GUI:
(kalau tidak akan menginstal thermald: amd64 dan gagal untuk me-restart di bawah kernel 32-bit)
setelah reboot dengan kernel 64-bit:
ketik 'Ya, lakukan seperti yang saya katakan!' ketika ditanya, itu akan aman
pada loop di atas, kami menghapus file deb. Yang telah berhasil diinstal dan mendapat status 'ii' dalam daftar dpkg.
kita perlu mengulangi
dpkg -i
menjalankan, karena itu tidak berhasil dari upaya pertamasekarang, dengan kernel 64-bit dan ruang pengguna, paket i386 yang tersisa dapat dihapus:
daftar yang telah Anda simpan dalam
pkgs1
file yang dapat Anda gunakan untuk kebutuhan Anda selanjutnya.sumber
Pertanyaan bagus. Saya telah mencari-cari dan selain dari cerita pengguna yang Anda kutip, saya tidak dapat menemukan detail tentang bagaimana melakukan ini. Semua dokumentasi menunjukkan itu hanya untuk menjalankan aplikasi 32-bit pada OS yang sudah 64-bit.
Namun, jika Anda ingin bereksperimen, Anda dapat mencoba yang berikut (berasal dari tautan saya di [1])
Saya pikir Anda harus memulai dengan kernel amd64, karena 32-bit tidak akan dapat menjalankan biner 64-bit. Namun 64-bit harus menjalankan binari 32-bit (jika ia32-libs diinstal?).
Jika Anda menginstal dan mem-boot kernel 64bit, Anda dapat pergi dari sana untuk menginstal apt: amd64, kemudian ikuti kisah pengguna seperti dikutip sebelumnya, ubuntu-minimal, ubuntu-desktop, dll.
Setelah apt: amd64 diinstal, saya pikir Anda dapat menghapus garis arsitektur asing karena pada dasarnya Anda telah beralih pada saat itu.
Penafian: Saya tidak memiliki sistem 32bit untuk diuji jadi ini semua hanya dugaan. Semoga berhasil!
[1] https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/Beta1#Improved_handling_of_32-bit_compatibility_on_amd64_systems
sumber
Crossgrading (peningkatan ke arsitektur yang berbeda) belum didukung.
sumber