我正在从 VMware 运行 Kali。我升级了 Kali,重启后无法登录。当我重新启动时,我通过 tty1 自动登录,并收到以下错误:
uname : loadlocale.c:129 : _nl_inter_locale_data : Asserting 'cnt<(sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed
/bin/uname failed caught signal 6
我尝试以恢复模式登录,但似乎收到了相同的失败错误:
intel_rapl: no valid rapl domains found in package 0
echo: loadlocale.c : 129: _nl_inter_locale_data : Asserting 'cnt<(sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed
我看到了这些问题的一些解决方案,但它们都是从命令提示符执行的。我尝试通过在登录窗口中使用“e”编辑登录命令来达到它,但我收到了相同的失败消息。我尝试在登录时使用“c”在 GNU GRUB 命令行中运行相同的命令,但似乎没有任何效果。现在我无法在任何乳清中登录或到达命令提示符
答案1
看起来区域设置数据文件(= 定义日期和时间格式、命令消息翻译等的文件)以某种方式损坏了。
由于几乎每个命令都会使用这些文件,因此大多数命令都会产生类似的错误消息。使用这些文件的国际化库可能会通过回退到标准 POSIX 格式和美国英语消息来处理缺少区域设置文件的问题,但似乎损坏的语言环境文件导致库失败,导致命令崩溃而没有执行任何有用的操作。
您可以尝试使用一些 Linux Live CD 或类似的启动介质来访问您的系统。一旦您获得了 Kali 安装的文件系统的访问权限,您应该尝试找到该/usr/lib/locale/locale-archive
文件。
(使用 Live CD 时,可能会要求您首先将已安装操作系统的文件系统挂载到某个挂载点,然后您需要将挂载点路径作为文件路径名的前缀。例如,如果您挂载 Kali 根目录文件系统到/mnt
,损坏文件的完整路径将是/mnt/usr/lib/locale/locale-archive
。)
找到正确的文件后,将其重命名为其他名称(例如,locale-archive.broken
)。这可能允许 Kali 安装启动(尽管具有严格的 POSIX/美国英语本地化)。
一旦您的系统启动并运行,并确认您没有耗尽磁盘空间,您就可以使用该locale-gen
命令重新生成该locale-archive
文件。
如果这导致问题再次出现,请locale-archive
使用 Live CD 再次删除/重命名该文件,然后返回正常操作系统并运行apt reinstall locales
并apt reinstall util-linux-locales
刷新用于生成该locale-archive
文件的源文件(因为这些源文件也可能已损坏) ,然后locale-gen
重试。