Anda telah memutakhirkan libc Anda (perpustakaan sistem paling dasar) dan sekarang tidak ada program yang berfungsi. Tepatnya, tidak ada program yang ditautkan secara dinamis yang berfungsi.
Dalam skenario khusus Anda, mem-boot ulang seharusnya berfungsi. Libc yang sekarang terinstal membutuhkan kernel yang lebih baru, dan jika Anda reboot, Anda akan mendapatkan kernel yang lebih baru.
Selama Anda masih memiliki shell yang berjalan, sering kali ada cara untuk memulihkannya, tetapi akan menjadi rumit jika Anda tidak merencanakannya. Jika Anda tidak memiliki shell maka biasanya tidak ada solusi selain me-reboot.
Di sini Anda mungkin tidak dapat memulihkan tanpa me-reboot, tetapi Anda setidaknya dapat dengan mudah mengetahui kernel apa yang sedang berjalan. Cukup gunakan cara membaca /proc/version
yang tidak memerlukan perintah eksternal.
read v </proc/version; echo $v
echo $(</proc/version) # in zsh/bash/ksh
Jika Anda masih memiliki salinan libc lama, Anda dapat menjalankan program dengannya. Misalnya, jika libc lama ada di /old/lib
dan Anda memiliki executable yang berfungsi dengan libc lama ini di /old/bin
, Anda dapat menjalankan
LD_LIBRARY_PATH=/old/lib /old/lib/ld-linux.so.2 /old/bin/uname
Jika Anda memiliki beberapa binari yang ditautkan secara statis, mereka akan tetap berfungsi. Saya sarankan menginstal utilitas sistem yang terhubung secara statistik untuk masalah seperti ini (tetapi Anda harus melakukannya sebelum masalah dimulai). Misalnya, pada Debian/Ubuntu/Mint/…, instal satu atau lebih busybox-static (koleksi alat baris perintah Linux dasar termasuk shell), selempang (shell dengan beberapa builtin tambahan), zsh-static (hanya shell tetapi dengan beberapa alat praktis bawaan).
busybox-static uname
sash -c '-cat /proc/version'
zsh-static -c '</proc/version'
Tampaknya itu adalah kesalahan yang dilontarkan glibc jika dijalankan pada kernel yang lebih tua dari apa yang didukung oleh pustaka yang dikompilasi. Pesan kesalahan ada di DL_SYSDEP_OSCHECK(FATAL)
makro di sysdeps/unix/sysv/linux/dl-osinfo.h
Ada opsi waktu kompilasi untuk ini:
--enable-kernel=version
Opsi ini saat ini hanya berguna pada sistem GNU/Linux. Parameter versi harus memiliki bentuk X.Y.Z dan menjelaskan versi terkecil dari kernel Linux yang diharapkan dapat didukung oleh pustaka yang dihasilkan. Semakin tinggi nomor versinya, semakin sedikit kode kompatibilitas yang ditambahkan, dan semakin cepat kode didapat.
Jadi sepertinya karena beberapa alasan, Anda menjalankan sistem dengan kernel lama tetapi glibc terinstal yang tidak lagi mendukung kernel lama. Bagaimana Anda mendapatkannya sulit diketahui tanpa informasi tentang sistem apa itu, tetapi orang mungkin menganggap itu bisa terjadi jika perpustakaan diperbarui tetapi kernelnya tidak.
file
tampaknya menunjukkan versi minimum yang diperlukan oleh executable atau pustaka (tetapi tentu saja Anda memerlukan pustaka yang berfungsi untuk menjalankannya):
/lib/x86_64-linux-gnu/libc-2.23.so: ELF 64-bit LSB shared object, x86-64, ..., for GNU/Linux 2.6.32, stripped
Pada sistem Debian semi-saat ini, versi kernel yang diperlukan adalah 2.6.32
seperti di atas pada semua binari yang saya periksa, yang akan membuatnya sangat tidak mungkin untuk mendapatkan masalah dengan versi kernel.
Coba dengan ini:
cat /proc/version