<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Zara&apos;s Blog</title><description>A cute blog about cute things, coding, and life.</description><link>https://cutemc.cn</link><item><title>我的BLOG回来了</title><link>https://cutemc.cn/posts/%E6%88%91%E7%9A%84blog%E5%9B%9E%E6%9D%A5%E4%BA%86</link><guid isPermaLink="true">https://cutemc.cn/posts/%E6%88%91%E7%9A%84blog%E5%9B%9E%E6%9D%A5%E4%BA%86</guid><description>主机从路由器搬到了Hostdie</description><pubDate>Fri, 17 May 2019 20:55:00 GMT</pubDate><content:encoded>&lt;p&gt;主机从路由器搬到了Hostdie&lt;/p&gt;
</content:encoded><author>路上看见</author></item><item><title>解决Failed to initialize Direct3D.问题</title><link>https://cutemc.cn/posts/%E8%A7%A3%E5%86%B3failed_to_initialize_direct3d%E9%97%AE%E9%A2%98</link><guid isPermaLink="true">https://cutemc.cn/posts/%E8%A7%A3%E5%86%B3failed_to_initialize_direct3d%E9%97%AE%E9%A2%98</guid><description>昨天下了某个steam的游戏</description><pubDate>Fri, 17 May 2019 20:58:00 GMT</pubDate><content:encoded>&lt;p&gt;昨天下了某个steam的游戏
运行失败
显示Failed to initialize Direct3D
&lt;img src=&quot;./4028980139.png&quot; alt=&quot;错误&quot; /&gt;
百度了下解决方法叫打开DirectX加速
但是我已经打开了
&lt;img src=&quot;./3127319824.png&quot; alt=&quot;已经打开了&quot; /&gt;
然后我去谷歌了下
在reddit发现有人出现了这种故障
原因是因为&lt;a href=&quot;https://www.iplaysoft.com/duet-display.html&quot;&gt;duet&lt;/a&gt;造成的
卸载问题解决 ::twemoji:tiaomei::&lt;/p&gt;
</content:encoded><author>路上看见</author></item><item><title>关于最近blog无法进入的问题</title><link>https://cutemc.cn/posts/%E5%85%B3%E4%BA%8E%E6%9C%80%E8%BF%91blog%E6%97%A0%E6%B3%95%E8%BF%9B%E5%85%A5%E7%9A%84%E9%97%AE%E9%A2%98</link><guid isPermaLink="true">https://cutemc.cn/posts/%E5%85%B3%E4%BA%8E%E6%9C%80%E8%BF%91blog%E6%97%A0%E6%B3%95%E8%BF%9B%E5%85%A5%E7%9A%84%E9%97%AE%E9%A2%98</guid><description>最近为了保护未成年人</description><pubDate>Fri, 07 Jun 2019 10:45:06 GMT</pubDate><content:encoded>&lt;p&gt;最近为了保护未成年人
Ministry of Industry and Information Technology特地在June 1st - June 6st 开始了Review
IPv4被seal
现在目前是IPv6 -&amp;gt; cloudflare -&amp;gt; IPv4
所以网速会慢很多&lt;/p&gt;
</content:encoded><author>路上看见</author></item><item><title>我还活着</title><link>https://cutemc.cn/posts/%E6%88%91%E8%BF%98%E6%B4%BB%E7%9D%80</link><guid isPermaLink="true">https://cutemc.cn/posts/%E6%88%91%E8%BF%98%E6%B4%BB%E7%9D%80</guid><description>失踪人口回归</description><pubDate>Tue, 20 Aug 2019 09:45:32 GMT</pubDate><content:encoded>&lt;p&gt;失踪人口回归&lt;/p&gt;
</content:encoded><author>路上看见</author></item><item><title>路由器ftp被人恶意投放.scr病毒</title><link>https://cutemc.cn/posts/%E8%B7%AF%E7%94%B1%E5%99%A8ftp%E8%A2%AB%E4%BA%BA%E6%81%B6%E6%84%8F%E6%8A%95%E6%94%BEscr%E7%97%85%E6%AF%92</link><guid isPermaLink="true">https://cutemc.cn/posts/%E8%B7%AF%E7%94%B1%E5%99%A8ftp%E8%A2%AB%E4%BA%BA%E6%81%B6%E6%84%8F%E6%8A%95%E6%94%BEscr%E7%97%85%E6%AF%92</guid><description>发现</description><pubDate>Sat, 26 Jun 2021 23:23:00 GMT</pubDate><content:encoded>&lt;h2&gt;发现&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./2874353017.png&quot; alt=&quot;图片&quot; /&gt;
本以为是opkg用的文件,但等我进入下一级目录,又出现了这几个文件
打开,火绒直接报毒
&lt;img src=&quot;./1899996293.png&quot; alt=&quot;图片&quot; /&gt;
不过万幸的是,数据盘没有被影响&lt;/p&gt;
&lt;p&gt;查看修改日期,发现是在2020年12月24日感染的
&lt;img src=&quot;./4135439992.png&quot; alt=&quot;图片&quot; /&gt;&lt;/p&gt;
&lt;p&gt;好家伙,趁我在学校时投毒
不过我在当天14:05分左右在学校连接了路由器的FTP,且用户名和口令为admin,所以...锅?
简单分析&lt;/p&gt;
&lt;p&gt;发现了,接着就是保存样本*&lt;s&gt;不是删除&lt;/s&gt;* ?.&lt;/p&gt;
&lt;p&gt;[scode type=&quot;red&quot;]样本仅供研究,请勿将其用于非法用途![/scode]
[scode type=&quot;share&quot;]由于网安要求，样本请到微步云下载！[/scode]
丢去微步云沙盒,检出为恶意文件
&lt;img src=&quot;./114026523.png&quot; alt=&quot;图片&quot; /&gt;
并且有大量的TCP和UDP连接,看起来是Exploit?
&lt;img src=&quot;./3437751264.png&quot; alt=&quot;图片&quot; /&gt;
&lt;a href=&quot;https://s.threatbook.cn/report/file/af94ddf7c35b9d9f016a5a4b232b43e071d59c6beb1560ba76df20df7b49ca4c/?env=win7_sp1_enx64_office2013&quot;&gt;微步云链接&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;解决&lt;/h2&gt;
&lt;p&gt;最后的最后,就是删除了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;find . -name &quot;*.lnk&quot; -type f -print -exec rm -rf {} \;
find . -name &quot;*.scr&quot; -type f -print -exec rm -rf {} \;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
</content:encoded><author>路上看见</author></item><item><title>解决CMake编译中的error C2734： “GifAsciiTable8x8”错误</title><link>https://cutemc.cn/posts/%E8%A7%A3%E5%86%B3cmake%E7%BC%96%E8%AF%91%E4%B8%AD%E7%9A%84error_c2734_gifasciitable8x8%E9%94%99%E8%AF%AF</link><guid isPermaLink="true">https://cutemc.cn/posts/%E8%A7%A3%E5%86%B3cmake%E7%BC%96%E8%AF%91%E4%B8%AD%E7%9A%84error_c2734_gifasciitable8x8%E9%94%99%E8%AF%AF</guid><description>在Windows10中编译dilb时，出现了以下错误：</description><pubDate>Thu, 23 Dec 2021 23:38:00 GMT</pubDate><content:encoded>&lt;p&gt;在Windows10中编译dilb时，出现了以下错误：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;./138905933.png&quot;&gt;!图片&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS E:\dlib-19.22&amp;gt; py setup.py install
...
C:\ProgramData\Anaconda3\Library\include\gif_lib.h(286,61): error C2734: “GifAsciiTable8x8”: 如果不是外部的，则必须初始化常量对象 (编译源文件
E:\dlib-19.22\tools\python\src\vector.cpp) [E:\dlib-19.22\build\temp.win-amd64-3.9\Release\_dlib_pybind11.vcxproj]
C:\ProgramData\Anaconda3\Library\include\gif_lib.h(286,61): error C2734: “GifAsciiTable8x8”: 如果不是外部的，则必须初始化常量对象 (编译源文件
E:\dlib-19.22\tools\python\src\matrix.cpp) [E:\dlib-19.22\build\temp.win-amd64-3.9\Release\_dlib_pybind11.vcxproj]
C:\ProgramData\Anaconda3\Library\include\gif_lib.h(286,61): error C2734: “GifAsciiTable8x8”: 如果不是外部的，则必须初始化常量对象 (编译源文件
E:\dlib-19.22\tools\python\src\dlib.cpp) [E:\dlib-19.22\build\temp.win-amd64-3.9\Release\_dlib_pybind11.vcxproj]
C:\ProgramData\Anaconda3\Library\include\gif_lib.h(286,61): error C2734: “GifAsciiTable8x8”: 如果不是外部的，则必须初始化常量对象 (编译源文件
E:\dlib-19.22\tools\python\src\svm_c_trainer.cpp) [E:\dlib-19.22\build\temp.win-amd64-3.9\Release\_dlib_pybind11.vcxproj]
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;随后在Github上找到了问题的原因。
原来是因为Anaconda3附带的giflib有问题，导致编译错误。
只需要在命令后添加就可以解决
如：--no DLIB_GIF_SUPPORT&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS E:\dlib-19.22&amp;gt; py setup.py install --no DLIB_GIF_SUPPORT
...
Finished processing dependencies for dlib==19.22.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;成功!&lt;/p&gt;
</content:encoded><author>路上看见</author></item><item><title>position为absolute时居中</title><link>https://cutemc.cn/posts/position%E4%B8%BAabsolute%E6%97%B6%E5%B1%85%E4%B8%AD</link><guid isPermaLink="true">https://cutemc.cn/posts/position%E4%B8%BAabsolute%E6%97%B6%E5%B1%85%E4%B8%AD</guid><description>水平居中:</description><pubDate>Tue, 28 Dec 2021 23:43:00 GMT</pubDate><content:encoded>&lt;p&gt;水平居中:
left: 50%;
transform:translate(-50%);
绝对居中:
left: 50%;
top: 50%;
transform:translate(-50%,-50%);&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./2309063543.png&quot; alt=&quot;图片&quot; /&gt;&lt;/p&gt;
</content:encoded><author>路上看见</author></item><item><title>关于Blog搬迁</title><link>https://cutemc.cn/posts/%E5%85%B3%E4%BA%8Eblog%E6%90%AC%E8%BF%81</link><guid isPermaLink="true">https://cutemc.cn/posts/%E5%85%B3%E4%BA%8Eblog%E6%90%AC%E8%BF%81</guid><description>由于没钱续费了，就把Blog从Hostmem搬到家中 ::twemoji:uncomfort:: 。</description><pubDate>Fri, 10 Jun 2022 17:26:00 GMT</pubDate><content:encoded>&lt;p&gt;由于没钱续费了，就把Blog从Hostmem搬到家中 ::twemoji:uncomfort:: 。
然后隔了几天，HostmemIPv4几乎80%的IP无法连接，还好没续费（运气真好）。&lt;/p&gt;
&lt;p&gt;现在方案是在旧手机用Linux Deploy跑Ubuntu 20.04LTS（然后因为Linux Deploy原因一堆问题然后弄了几天），然后因为广东这边电信IPv6的80和443封了，所以用了Dogyun的香港CLD(18元1h0.5g,打折能16元)当反向代理，延迟最好能到18ms，但是隔几天可能就会被轮段，延迟能飘到200ms。&lt;/p&gt;
&lt;p&gt;因为服务器在香港，用Cloudflare的话延迟一来一回能到500ms，所以干脆直连了（大佬不要D我啊嘤嘤嘤 ::twemoji:cry:: ）。&lt;/p&gt;
&lt;p&gt;搭网站的同时顺便重新画了下blog的logo还有icon，然后结果因为这个傻逼主题的问题，弄了3天才放上去没bug（btw Handsome主题的源码按F12都弹出来一堆问题，作者你不管的吗，而且代码结构这么乱，我强迫症真的受不了 ::twemoji:sweat:: ）&lt;/p&gt;
&lt;p&gt;因为我之前没有备份的习惯，所以Blog最近一次备份时间在去年，然后为了丢失的文章，我又从WaybackMachine上把之前的文章拖了下来。&lt;/p&gt;
&lt;p&gt;大概就这些了，下次发博文估计又是好久（所以这个Blog的意义是啥）。
可能那一天永远也不会等到了。
（头图链接：&lt;a href=&quot;https://twitter.com/momisin393/status/1536676719838765056&quot;&gt;https://twitter.com/momisin393/status/1536676719838765056&lt;/a&gt;，btw百合无限好好吗）&lt;/p&gt;
</content:encoded><author>路上看见</author></item><item><title>XGBoost aarch64架构共享库/Jar</title><link>https://cutemc.cn/posts/xgboost_aarch64%E6%9E%B6%E6%9E%84%E5%85%B1%E4%BA%AB%E5%BA%93_jar</link><guid isPermaLink="true">https://cutemc.cn/posts/xgboost_aarch64%E6%9E%B6%E6%9E%84%E5%85%B1%E4%BA%AB%E5%BA%93_jar</guid><description>自己编译的，记录下以后可以用到</description><pubDate>Tue, 02 May 2023 19:34:50 GMT</pubDate><content:encoded>&lt;p&gt;自己编译的，记录下以后可以用到&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;%60./xgboost4j_2.12-1.7.5.jar&quot;&gt;xgboost4j_2.12-1.7.5.jar&lt;/a&gt;
&lt;a href=&quot;./libxgboost4j.so&quot;&gt;libxgboost4j.so&lt;/a&gt;
&lt;a href=&quot;./libxgboost.so&quot;&gt;libxgboost.so&lt;/a&gt;&lt;/p&gt;
</content:encoded><author>路上看见</author></item><item><title>Hiboy-Padavan IPv6端口映射脚本</title><link>https://cutemc.cn/posts/hiboy-padavan_ipv6%E7%AB%AF%E5%8F%A3%E6%98%A0%E5%B0%84%E8%84%9A%E6%9C%AC</link><guid isPermaLink="true">https://cutemc.cn/posts/hiboy-padavan_ipv6%E7%AB%AF%E5%8F%A3%E6%98%A0%E5%B0%84%E8%84%9A%E6%9C%AC</guid><description>粘贴到 自定义设置 -&gt; 脚本 -&gt; 自定义脚本0</description><pubDate>Thu, 22 Jun 2023 23:17:00 GMT</pubDate><content:encoded>&lt;p&gt;粘贴到 自定义设置 -&amp;gt; 脚本 -&amp;gt; 自定义脚本0
需打开 opt强制安装(至少mini环境)
在代码中端口转发列表输入需要映射的端口即可&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#检查包是否已经安装函数
check_package_installed() {
    local package_name=$1
    if opkg list-installed | grep &quot;$package_name&quot; &amp;gt;/dev/null; then
        logger -t &quot;【自定义脚本0】&quot; &quot;$package_name已安装&quot;
        return 0
    else
        logger -t &quot;【自定义脚本0】&quot; &quot;$package_name未安装，开始安装$package_name&quot;
        opkg update
        opkg install &quot;$package_name&quot; 
        if opkg list-installed | grep &quot;$package_name&quot; &amp;gt;/dev/null; then
            logger -t &quot;【自定义脚本0】&quot; &quot;$package_name安装成功&quot;
            return 0
        else
            logger -t &quot;【自定义脚本0】&quot; &quot;$package_name安装失败，请检查&quot;
            return 1
        fi
    fi
}

function run() {
    if [ ! -f /opt/etc/opkg.conf ]; then
        logger -t &quot;【自定义脚本0】&quot; &quot;opkg.conf文件不存在, 似乎opt环境未下载，稍后再试&quot;
        return 1
    fi
    #设置端口转发
    logger -t &quot;【自定义脚本0】&quot; &quot;开始设置端口转发&quot;
    #设置opkg镜像
    sed -i &apos;s|https\?://bin.entware.net|https://mirrors.bfsu.edu.cn/entware|g&apos; /opt/etc/opkg.conf
    opkg update
    opkg upgrade
    check_package_installed bash
    if [ $? == 1 ]; then
        logger -t &quot;【自定义脚本0】&quot; &quot;bash安装失败&quot;
        return 1
    fi
    check_package_installed socat
    if [ $? == 1 ]; then
        logger -t &quot;【自定义脚本0】&quot; &quot;socat安装失败&quot;
        return 1
    fi
    check_package_installed libopenssl
    if [ $? == 1 ]; then
        logger -t &quot;【自定义脚本0】&quot; &quot;libopenssl安装失败&quot;
        return 1
    fi
    check_package_installed procps-ng-pkill
    if [ $? == 1 ]; then
        logger -t &quot;【自定义脚本0】&quot; &quot;procps-ng-pkill安装失败&quot;
        return 1
    fi
    #创建端口转发日志文件夹
    local socat_dir=&quot;/opt/tmp/socat&quot;
    if [ ! -d &quot;$socat_dir&quot; ]; then
        mkdir -p &quot;$socat_dir&quot;
        logger -t &quot;【自定义脚本0】&quot; &quot;创建$socat_dir目录成功&quot;
    else
        logger -t &quot;【自定义脚本0】&quot; &quot;$socat_dir目录已存在&quot;
    fi
    #保存脚本，使用bash运行
    bash_path=$(opkg files bash | grep /bin/bash)
    script_path=&quot;/opt/tmp/port_forward.sh&quot;
    cat &amp;gt;&quot;$script_path&quot; &amp;lt;&amp;lt; EOF
#端口转发列表
declare -A port_map=(
    [&quot;8889&quot;]=&quot;192.168.123.183:3389&quot;
    [&quot;8123&quot;]=&quot;192.168.123.211:8123&quot;
    [&quot;996&quot;]=&quot;192.168.123.1:996&quot;
    [&quot;997&quot;]=&quot;192.168.123.211:997&quot;
)
#设置防火墙
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -P FORWARD ACCEPT
#如果文件不存在，就新建
if [ ! -f /opt/tmp/port_map.txt ]; then
    touch /opt/tmp/port_map.txt
fi
# 遍历map，如果端口不在文件里的话，就把需要映射的端口保存在一个新的增加map，如果某个端口在文件里存在，在map不存在，就保存在新的删除map，然后就分别遍历两个新的map。
declare -A add_port_map=()
declare -A del_port_map=()
#检测需要映射的端口是否在文件里
while read line; do
    port=\$(echo \$line | awk -F &apos;:&apos; &apos;{print \$1}&apos;)
    if [[ ! \${port_map[\$port]} ]]; then
        del_port_map[\$port]=\${port_map[\$port]}
    fi
done &amp;lt; /opt/tmp/port_map.txt
#检测文件里的端口是否需要映射
for port in &quot;\${!port_map[@]}&quot;; do
    if ! grep -q &quot;\$port&quot; /opt/tmp/port_map.txt; then
        add_port_map[\$port]=\${port_map[\$port]}
    fi
done
#启动端口转发
for port in &quot;\${!add_port_map[@]}&quot;; do
    logger -t \&quot;【自定义脚本0】\&quot; \&quot;开始转发\$port端口\&quot;
    nohup socat TCP6-LISTEN:\$port,reuseaddr,fork TCP4:\${port_map[\$port]} &amp;gt;&amp;gt;/opt/tmp/socat/port_\$port.log 2&amp;gt;&amp;amp;1 &amp;amp;
    #运行端口通过防火墙
    ip6tables -A INPUT -p tcp --dport \$port -j ACCEPT
done
#停止端口转发
for port in &quot;\${!del_port_map[@]}&quot;; do
    logger -t \&quot;【自定义脚本0】\&quot; \&quot;停止转发\$port端口\&quot;
    pkill -f &quot;socat TCP6-LISTEN:\$port&quot;
    #停止端口通过防火墙
    ip6tables -A INPUT -p tcp --dport \$port -j REJECT
done
#把port_map保存到文件
rm -f /opt/tmp/port_map.txt
for port in &quot;\${!port_map[@]}&quot;; do
    echo &quot;\$port:\${port_map[\$port]}&quot; &amp;gt;&amp;gt;/opt/tmp/port_map.txt
done
EOF
    logger -t &quot;【自定义脚本0】&quot; &quot;保存脚本成功&quot;
    chmod 755 &quot;$script_path&quot;
    logger -t &quot;【自定义脚本0】&quot; &quot;开始运行脚本&quot;
    $bash_path &quot;$script_path&quot; &amp;gt;&amp;gt; /dev/null
}
run
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>路上看见</author></item><item><title>解决Ionic无法监听滚动(scroll)事件</title><link>https://cutemc.cn/posts/%E8%A7%A3%E5%86%B3ionic%E6%97%A0%E6%B3%95%E7%9B%91%E5%90%AC%E6%BB%9A%E5%8A%A8scroll%E4%BA%8B%E4%BB%B6</link><guid isPermaLink="true">https://cutemc.cn/posts/%E8%A7%A3%E5%86%B3ionic%E6%97%A0%E6%B3%95%E7%9B%91%E5%90%AC%E6%BB%9A%E5%8A%A8scroll%E4%BA%8B%E4%BB%B6</guid><description>如果你尝试直接在window元素监听scroll事件，事件是无法触发的，只有wheel事件能够被触发。</description><pubDate>Wed, 02 Aug 2023 19:55:31 GMT</pubDate><content:encoded>&lt;p&gt;如果你尝试直接在window元素监听scroll事件，事件是无法触发的，只有wheel事件能够被触发。&lt;/p&gt;
&lt;p&gt;只有监听ion-content元素下shadow-root中的main元素的scroll才能正确的被触发。&lt;/p&gt;
&lt;p&gt;你可以通过调用ion-content中的方法&lt;code&gt;getScrollElement&lt;/code&gt;获取到滚动元素。&lt;/p&gt;
&lt;p&gt;示例代码 (Vue3):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Ionic-content元素
const contentRef: Ref&amp;lt;HTMLIonContentElement | null&amp;gt; = ref(null)

onMounted(() =&amp;gt; {
  contentRef.getScrollElement().then((e) =&amp;gt; {
    e.addEventListener(&apos;scroll&apos;, (e) =&amp;gt; console.log(&apos;scroll event&apos;));
  });
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者你也可以使用ionic提供的ionScroll事件来监听滚动（需要先启用scrollEvents，但在我的测试下此事件无法使用），详细请见&lt;a href=&quot;https://ionicframework.com/docs/api/content#scrollevents&quot;&gt;https://ionicframework.com/docs/api/content#scrollevents&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这是为什么呢:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这是因为ionic-content组件提供了一个易于使用的内容区域，并提供了一些有用的方法来控制可滚动区域。在单个视图中应该只有一个内容。Content可以与许多其他Ionic组件一起自定义，以修改其填充、边距等，使用CSS
Utilities提供的全局样式或使用CSS和可用的CSS自定义属性单独对其进行样式设置。Content提供了一些方法，可以调用这些方法来将内容滚动到底部、顶部或特定点。它们可以传递持续时间，以便平稳过渡而不是立即更改位置。&lt;/p&gt;
&lt;p&gt;滚动事件（ionScroll）默认情况下对内容进行禁用，因为性能问题。但是，可以通过将scrollEvents设置为true来启用它们。在监听任何滚动事件之前，必须这样做。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;来自 Bing AI&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded><author>路上看见</author></item><item><title>解决lightdm向配置文件添加display-setup-script后无法启动的问题</title><link>https://cutemc.cn/posts/%E8%A7%A3%E5%86%B3lightdm%E5%90%91%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%B7%BB%E5%8A%A0display-setup-script%E5%90%8E%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8%E7%9A%84%E9%97%AE%E9%A2%98</link><guid isPermaLink="true">https://cutemc.cn/posts/%E8%A7%A3%E5%86%B3lightdm%E5%90%91%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%B7%BB%E5%8A%A0display-setup-script%E5%90%8E%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8%E7%9A%84%E9%97%AE%E9%A2%98</guid><description>配置服务器时，为了可以绕过登录直接运行X11应用，需要在每次启动X11服务器后都运行xhost +local:，以禁用本地运行X11程序时需要认证的问题。</description><pubDate>Mon, 20 Nov 2023 21:21:54 GMT</pubDate><content:encoded>&lt;p&gt;配置服务器时，为了可以绕过登录直接运行X11应用，需要在每次启动X11服务器后都运行&lt;code&gt;xhost +local:&lt;/code&gt;，以禁用本地运行X11程序时需要认证的问题。&lt;/p&gt;
&lt;p&gt;在Google了一番后，在AskUbuntu发现了&lt;a href=&quot;https://askubuntu.com/questions/115675/xhost-setting-at-boot&quot;&gt;一个相关的讨论&lt;/a&gt;，内容是使用lightdm的启动脚本来运行&lt;code&gt;xhost +local:&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;当我按照讨论的结果想向&lt;code&gt;/etc/lightdm/lightdm.conf&lt;/code&gt;添加display-setup-script后，发现linux mint并没有默认的&lt;code&gt;lightdm.conf&lt;/code&gt;，而是在&lt;code&gt;/etc/lightdm/lightdm.conf.d/&lt;/code&gt;目录中添加不同的配置文件，于是我在里面创建了配置文件，命名为&lt;code&gt;99-start-script.conf&lt;/code&gt;(前面的数字越大，优先级越高)，并向文件添加以下内容:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Seat:*]
display-setup-script=/usr/share/lightdm-start-script.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[scode type=&quot;yellow&quot;]可能需要root权限创建文件[/scode]&lt;/p&gt;
&lt;p&gt;保存后，在&lt;code&gt;/usr/share/&lt;/code&gt;文件夹创建文件&lt;code&gt;lightdm-start-script.sh&lt;/code&gt;，并在文件输入:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
xhost +local:
# 设置LVDS-1-1的分辨率，并设置为默认显示器
xrandr --output &quot;LVDS-1-1&quot; --mode &apos;1366x768&apos; --rate 60 --primary
# 设置VGA-0的分辨率和panning
xrandr --output &apos;VGA-0&apos; --mode &apos;1920x1080&apos; --panning &apos;1920x1080+1366+0&apos; --rate 60
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存后，使用&lt;code&gt;service lightdm restart&lt;/code&gt;重启，却发现lightdm无法启动，于是我查看了&lt;code&gt;/var/log/lightdm/lightdm.log&lt;/code&gt;,但是日志文件并没有报错信息。&lt;/p&gt;
&lt;p&gt;经过一番查找后，怀疑是其他配置文件里有设置display-setup-script，而我的新配置文件将原来的display-setup-script替换了，所以lightdm无法启动。&lt;/p&gt;
&lt;p&gt;再经过各种Google后，发现运行&lt;code&gt;lightdm --show-config&lt;/code&gt;可以显示当前的配置项，于是我将之前的配置文件&lt;code&gt;99-start-script.conf&lt;/code&gt;重命名为&lt;code&gt;99-start-script.conf.bak&lt;/code&gt;，并重启lightdm服务，运行&lt;code&gt;lightdm --show-config&lt;/code&gt;后显示的输出如下:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;   [Seat:*]
A  allow-guest=false
C  greeter-wrapper=/usr/lib/lightdm/lightdm-greeter-session
D  guest-wrapper=/usr/lib/lightdm/lightdm-guest-session
E  xserver-command=X -core
F  type=xlocal
I  display-setup-script=/sbin/prime-switch
F  display-stopped-script=/sbin/prime-switch
G  greeter-session=slick-greeter
H  user-session=cinnamon

   [LightDM]
B  backup-logs=false

Sources:
A  /usr/share/lightdm/lightdm.conf.d/50-disable-guest.conf
B  /usr/share/lightdm/lightdm.conf.d/50-disable-log-backup.conf
C  /usr/share/lightdm/lightdm.conf.d/50-greeter-wrapper.conf
D  /usr/share/lightdm/lightdm.conf.d/50-guest-wrapper.conf
E  /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf
F  /usr/share/lightdm/lightdm.conf.d/90-nvidia.conf
G  /usr/share/lightdm/lightdm.conf.d/90-slick-greeter.conf
H  /etc/lightdm/lightdm.conf.d/70-linuxmint.conf
I  /etc/lightdm/lightdm.conf.d/99-start-script.conf.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以看到display-setup-script项已经被nvidia的配置文件所使用，于是向&lt;code&gt;/usr/share/lightdm-start-script.sh&lt;/code&gt;头部添加&lt;code&gt;/sbin/prime-switch&lt;/code&gt;并保存，再将&lt;code&gt;99-start-script.conf.bak&lt;/code&gt;重命名为&lt;code&gt;99-start-script.conf.bak&lt;/code&gt;，再次重启lightdm服务，结果正常显示登录界面。&lt;/p&gt;
&lt;p&gt;(封面图片来自: &lt;a href=&quot;https://en.wikipedia.org/wiki/X.Org_Foundation&quot;&gt;wikipedia&lt;/a&gt; 和 &lt;a href=&quot;https://x.org/&quot;&gt;Xorg官网&lt;/a&gt;)&lt;/p&gt;
</content:encoded><author>路上看见</author></item><item><title>v4l2loopback在腾讯会议黑屏的问题</title><link>https://cutemc.cn/posts/v4l2loopback%E5%9C%A8%E8%85%BE%E8%AE%AF%E4%BC%9A%E8%AE%AE%E9%BB%91%E5%B1%8F%E7%9A%84%E9%97%AE%E9%A2%98</link><guid isPermaLink="true">https://cutemc.cn/posts/v4l2loopback%E5%9C%A8%E8%85%BE%E8%AE%AF%E4%BC%9A%E8%AE%AE%E9%BB%91%E5%B1%8F%E7%9A%84%E9%97%AE%E9%A2%98</guid><description>解决:</description><pubDate>Tue, 19 Aug 2025 21:18:39 GMT</pubDate><content:encoded>&lt;p&gt;解决:
使用老版本1.13.1
6.16内核可以使用&lt;a href=&quot;https://github.com/ticpu/v4l2loopback-obs&quot;&gt;https://github.com/ticpu/v4l2loopback-obs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在腾讯会议黑屏，但是使用ffplay等其他软件正常读取
猜测是新版本的v4l2loopback加强了参数校验&lt;/p&gt;
&lt;p&gt;以下是错误日志，巨佬可以看看是什么问题:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[  +0.016545] v4l2-loopback[2338], pid(136620):  open() -&amp;gt; dev@00000000593d5742 with image@000000003fd57957
[  +0.000018] videodev: v4l2_open: video2: open (0)
[  +0.000018] video2: VIDIOC_ENUM_FMT: index=0, type=vid-cap, flags=0x0, pixelformat=YUYV little-endian (0x56595559), mbus_code=0x0000, description=&apos;YUYV 4:2:2&apos;
[  +0.000023] video2: VIDIOC_ENUM_FRAMESIZES: index=0, pixelformat=YUYV little-endian (0x56595559), type=1, wxh=1280x720
[  +0.000583] video2: VIDIOC_ENUM_FRAMESIZES: error -22: index=1, pixelformat=YUYV little-endian (0x56595559), type=0
[  +0.000022] video2: VIDIOC_ENUM_FMT: error -22: index=1, type=vid-cap, flags=0x0, pixelformat=.... little-endian (0x00000000), mbus_code=0x0000, description=&apos;&apos;
[  +0.000030] v4l2-loopback[1135], pid(136620):  S_FMT[CAPTURE] YUYV:1280x720 size=1843200
[  +0.000007] video2: VIDIOC_S_FMT: type=vid-cap, width=1280, height=720, pixelformat=YUYV little-endian (0x56595559), field=none, bytesperline=2560, sizeimage=1843200, colorspace=8, flags=0x0, ycbcr_enc=0, quantization=0, xfer_func=0
[  +0.000027] video2: VIDIOC_G_PARM: type=vid-cap, capability=0x1000, capturemode=0x0, timeperframe=1/30, extendedmode=0, readbuffers=2
[  +0.000127] v4l2-loopback[2348], pid(136620):  close() -&amp;gt; dev@00000000593d5742 with image@000000003fd57957
[  +0.000008] v4l2-loopback[1638], pid(136620):  REQBUFS(memory=1, req_count=0) and device-bufs=2/2 [used/max]
[  +0.000008] videodev: v4l2_release: video2: release
[  +0.000151] v4l2-loopback[2338], pid(136620):  open() -&amp;gt; dev@00000000593d5742 with image@000000003fd57957
[  +0.000007] videodev: v4l2_open: video2: open (0)
[  +0.000011] video2: VIDIOC_QUERYCAP: driver=v4l2 loopback, card=VirtualCam, bus=platform:v4l2loopback-002, version=0x00061001, capabilities=0x85200001, device_caps=0x05200001
[  +0.001447] video2: VIDIOC_CROPCAP: error -25: type=vid-cap, bounds (0,0)/0x0, defrect (0,0)/0x0, pixelaspect 0/0
[  +0.000028] v4l2-loopback[1135], pid(136620):  S_FMT[CAPTURE] YUYV:1280x720 size=1843200
[  +0.000007] video2: VIDIOC_S_FMT: type=vid-cap, width=1280, height=720, pixelformat=YUYV little-endian (0x56595559), field=none, bytesperline=2560, sizeimage=1843200, colorspace=8, flags=0x0, ycbcr_enc=0, quantization=0, xfer_func=0
[  +0.000026] video2: VIDIOC_G_PARM: type=vid-cap, capability=0x1000, capturemode=0x0, timeperframe=1/30, extendedmode=0, readbuffers=2
[  +0.000081] video2: VIDIOC_G_FMT: type=vid-cap, width=1280, height=720, pixelformat=YUYV little-endian (0x56595559), field=none, bytesperline=2560, sizeimage=1843200, colorspace=8, flags=0x0, ycbcr_enc=0, quantization=0, xfer_func=0
[  +0.000024] video2: VIDIOC_G_PARM: type=vid-cap, capability=0x1000, capturemode=0x0, timeperframe=1/30, extendedmode=0, readbuffers=2
[  +0.000061] v4l2-loopback[1638], pid(136620):  REQBUFS(memory=1, req_count=4) and device-bufs=2/2 [used/max]
[  +0.000007] video2: VIDIOC_REQBUFS: count=2, type=vid-cap, memory=mmap
[  +0.000017] video2: VIDIOC_QUERYBUF: 00:00:00.000000 index=0, type=vid-cap, request_fd=0, flags=0x00002000, field=none, sequence=0, memory=mmap, bytesused=1843200, offset/userptr=0x0, length=1843200
[  +0.000021] timecode=00:00:00 type=0, flags=0x00000000, frames=0, userbits=0x00000000
[  +0.000605] videodev: v4l2_mmap: video2: mmap (0)
[  +0.000028] video2: VIDIOC_QUERYBUF: 00:00:00.000000 index=1, type=vid-cap, request_fd=0, flags=0x00002000, field=none, sequence=0, memory=mmap, bytesused=1843200, offset/userptr=0x1c2000, length=1843200
[  +0.000019] timecode=00:00:00 type=0, flags=0x00000000, frames=0, userbits=0x00000000
[  +0.000385] videodev: v4l2_mmap: video2: mmap (0)
[  +0.000012] video2: VIDIOC_QBUF: 00:00:00.000000 index=0, type=vid-cap, request_fd=0, flags=0x00000002, field=any, sequence=0, memory=mmap, bytesused=0, offset/userptr=0x0, length=0
[  +0.000020] timecode=00:00:00 type=0, flags=0x00000000, frames=0, userbits=0x00000000
[  +0.000019] video2: VIDIOC_QBUF: 00:00:00.000000 index=1, type=vid-cap, request_fd=0, flags=0x00000002, field=any, sequence=0, memory=mmap, bytesused=0, offset/userptr=0x0, length=0
[  +0.000019] timecode=00:00:00 type=0, flags=0x00000000, frames=0, userbits=0x00000000
[  +0.000016] video2: VIDIOC_STREAMON: type=vid-cap
[  +0.004001] video2: VIDIOC_DQBUF: error -22: 00:00:00.000000 index=0, type=vid-cap, request_fd=0, flags=0x00000000, field=any, sequence=0, memory=(null), bytesused=0, offset/userptr=0x0, length=0
[  +0.000032] timecode=00:00:00 type=0, flags=0x00000000, frames=0, userbits=0x00000000
[  +0.000041] video2: VIDIOC_QBUF: error -22: 00:00:00.000000 index=0, type=vid-cap, request_fd=0, flags=0x00000000, field=any, sequence=0, memory=(null), bytesused=0, offset/userptr=0x0, length=0
[  +0.000024] timecode=00:00:00 type=0, flags=0x00000000, frames=0, userbits=0x00000000
[  +0.011862] videodev: v4l2_write: video2: write: 1843200 
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><author>路上看见</author></item></channel></rss>