覆盖在 apt full-upgrade 期间恢复的内核模块黑名单

覆盖在 apt full-upgrade 期间恢复的内核模块黑名单

在装有 Lubuntu 18.04 的旧笔记本电脑上,我sisfb运行正常。它根本没有被列入黑名单,并且在启动时加载。

问题是sisfb通常在 中被列入黑名单/lib/modprobe.d/fbdev-blacklist.conf。虽然我可以注释掉该行,但每当udev使用每周 GUI 更新提醒更新包时,/lib/modprobe.d/fbdev-blacklist.conf都会被覆盖。虽然我可以使用chattr +i /lib/modprobe.d/fbdev-blacklist.conf来阻止更新覆盖文件,但这会导致udev更新失败,从而导致apt full-upgrade失败。由于笔记本电脑是供计算机新手使用的,因此这不是一个可行的方法。

如何sisfb在启动时正确加载?

答案1

您可以通过创建简单的 bash 脚本并通过 cron 运行它或将其添加为 systemd 单元来解决此问题。

#!/bin/bash

SLEEP_TIME=30 # how often do the checks
BL="/lib/modprobe.d/fbdev-blacklist.conf"

while [ true ]; do

    SISFB_BL=`grep "blacklist sisfb" $BL`

    if [[ "$SISFB_BL" ]]; then

        # sisfb un-blacklist
        sed -i '/blacklist sisfb/d' /lib/modprobe.d/fbdev-blacklist.conf

    else

        echo "[ ok ] sisfb blacklist not found"

    fi

    sleep $SLEEP_TIME

done

将其保存为 /opt/sisfb_blacklist_watcher.sh

并在 root 上添加到 cron 中:

sudo-i
crontab -e
@reboot /opt/sisfb_blacklist_watcher.sh &> /dev/null &

答案2

来自ServerFault:

这个答案:

apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y udev

不过,请阅读答案下面的评论。它表明--force-yes有时这是一个极端的选择,尽管它没有清楚地解释。


这里有更好的 ServerFault 答案:

本答案:

您可以从 apt 向 dpkg 传递选项。您可能感兴趣的是 --force-confold 选项。命令如下所示:

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

设置--force-confdef完成后,如果配置文件没有被编辑过,apt-get 仍然会更新它,同时--force-confold会保留已编辑的配置文件而不询问。

为了使其永久生效,您还可以在 apt.conf 文件中设置以下选项:

Dpkg::Options {
   "--force-confdef";
   "--force-confold";
}

例如检查 http://debian-handbook.info/browse/wheezy/sect.package-meta-information.html#sidebar.questions-conffiles

相关内容