openSUSE:12.3常见问题

跳转至: 导航, 搜索
该页面列示了 openSUSE 12.3 使用过程中的用户常见问题。

/var/log/messages 是空的?

因为 openSUSE 12.3 的底层做出了一些改变,我们作废了伴随我们很多年的 sysvinit 引导系统和其附庸 SuSEConfig,拥抱了 systemd。而 /var/log/messages 则是 sysvinit 时代的日志文件位置,是由 rsyslog 或 syslogd 写入的。所以它们目前无法获得系统的日志输出。而 systemd 的日志功能(Journal)是由 systemd-logger 这个软件包提供的。日志的位置也换到了 /var/log/journal 文件夹。

在目前的开发版中(M2),默认安装的还是 rsyslog,但似乎它的日志功能被禁用了,而 systemd-logger 也没有默认安装。所以就造成了持续性日志的缺失(服务器维护者请注意这点)。因此您需要:

sudo zypper in systemd-logger

手动安装该软件包并检查系统是否自动创建了 /var/log/journal 文件夹(我的系统即使在没有安装该软件包的情况下也是有这个文件夹的,只不过是空的),另外还请注意这个文件夹下的文件是 binanries,无法直接在命令行中使用 vi/vim 打开。而是要使用

journalctl

命令打开查看。

目前似乎是:

从 <= 12.3 升级过来的系统,依然使用 syslog,但需要安装 syslog-service 和 syslog-ng 软件包来继续使用 syslog 日志也就是 /var/log/messages。而新装的 12.3 则默认使用 systemd 的 journal 功能,但需要卸载被禁用的 rsyslogd,安装 systemd-logger 来使其正常工作。当然您也可以通过安装提到的软件包来在 <= 12.2 升级过来的系统中用 journal 或在新装的 12.3 中继续使用 syslog。

还有一个问题是似乎 systemd 的 journal 日志比原来的 /var/log/messages 少了不少(我的情况),但也有人上报说大了不少(见参考链接一的邮件列表线索 )。

参考:

升级了 3.7 内核 NVIDIA 驱动提示 include/version.h 找不到?

原因:3.7 内核将 include/version.h 移动到了 include/generated/uapi/linux/version.h。

首先手动安装 NVIDIA 驱动您需要安装 kernel-devel kernel-source。

其次需要安装 kernel-desktop/default/pae/[...]-devel 软件包。建议使用 uname -r 查看现在您究竟使用的是什么 flavor 的内核。比如

~\: uname -r
3.6.3-1-desktop

这就表明您内核的 flavor 是 desktop,除非您故意安装了其它 flavor 如 default 的新内核,您新内核的 flavor 应该也是这个,所以您需要安装 kernel-desktop-devel。

解决办法

sudo ln -s /usr/src/linux-3.7.1-1-obj/x86_64/desktop/include/generated/uapi/linux/version.h /usr/src/linux-3.7.1-1/include/linux/version.h

然后切换到 init 3 启动安装程序即可。有些人知道要做软链接,但是没有找对真正文件所在的位置,所以做「软链接的软链接」会导致文件层级过多以至于无法识别该软链接。

参考文献

Windows 8 和 openSUSE 双系统

Windows 8 使用了自己的 UEFI(统一可扩展固件接口)和 Secure Boot(安全引导),简单说就是有一个像 MBR 一样的预留分区放固件。这些固件必须是经过微软认证的。因此也就排斥了所有 Linux 的正常安装。

而 Windows 8 的这个技术有一个致命且知名的硬伤就是,如果这个预留分区中写入了「过量的」数据,那么就会损坏主板导致计算机变砖。而且,包括微软在内,对「过量的」究竟是多少并没有一个精确数字。它只知道 Windows 8 写入的那些不会死。

所以建议能不升级 Windows 8,就不升级。

如果你已经升级完毕,或买来的电脑预装了 Windows 8,那么上面提到的两项您跑不掉。请继续看下去:

  • openSUSE 已经通过了微软的认证。所以也是会写这个预留分区的,但 openSUSE 的办法是写入小到忽略不计的数据来避免「过量」,「小到忽略不计」是多少呢?就是只通知了 UEFI openSUSE 的 GRUB2 的位置。所以 openSUSE 应该是所有 Linux 中最安全的。
  • 但是这种方法未来(很可能)会失效。要是微软升级了它的 UEFI,那么我们现在的折衷方案可能行不通。所以你装好了 openSUSE 可能在未来某日在 Windows 8 里安装了更新回到 openSUSE 无法引导。这时请在 BIOS 里禁用安全引导,并启动 openSUSE 安装 grub 相关的更新。也可能你未来一年半买了新电脑想装 openSUSE 12.3, 这时发现启动不了(因为 DVD ISO 是只做一次的,那个时候现在制作的 ISO 里的折衷方案可能已经失效了),请禁用安全引导并安装,之后更新 openSUSE,然后回过头再开启安全引导。
  • 想要装双系统,openSUSE 必须是 64 位的
    忘了哪儿看到的了,做翻译时有看到。
    ------
    批注:marguerite


  • YaST 是判断不出来你开没开安全引导的,但是 Windows 8 一般是开了。所以需要你在安装 openSUSE 时去「引导加载器设置」里手工「启用安全引导」。
  • 使用 Live 介质安装时,您必须手动在「软件管理」中选择「grub2-efi」,否则安装的将是 Grub2,这是不支持 UEFI 的。
  • 如果你用了 LVM,那么需要手动划分 /boot 分区。因为 grub2-efi 无法解密分区,所以如果你不手动划分一个不加密的 /boot 分区。就会找不到内核和 initrd。

具体请参考:

点我添加