systemd-udevd编译的问题

问题:
Begin: Waiting for root file system ... 
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
done.
Gave up waiting for root device.  Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
   - Check root= (did the system wait for the right device?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT!  UUID=53aa462b-5989-42ca-9f3d-1cf2334bf756 does not exist.  Dropping to a shell!


解决方法:

1) 在获取源码包之前,确保在软件源配置文件/etc/apt/sources.list中添加了deb-src项
2) 使用如下命令获取tree源码包的详细信息:
sudo apt-cache showsrc tree
     这用来查询当前镜像站点中是否有该源码包。
 
3)源码包中通常包含3个文件,分别以dsc,orig.tar.gz和diff.gz为后缀名。使用”apt-get source”命令来获取源码包,它会将源码包下载到用户当前目录,并在命令执行过程中,调用dpkg-source命令,根据dsc文件中的信息,将源码包解压到同名目录中,应用程序的源代码就在这里面。
sudo apt-get source tree
要强调的是,在下载源码包前,必须确保安装了dpkg-dev(执行”apt-get install dpkg-dev”来安装),否则,只会下载源码包的3个文件,但不会解压缩源码包。当然你也可以自己用dpkg-source命令去解压缩源码包。
4)在编译源码包前,需要安装具有依赖关系的相关软件包。使用”apt-get build-dep”命令可以主动获取并安装所有相关的软件包。
 
sudo apt-get build-dep tree
5)现在可以来编译源码包了,首先进入源码所在目录,使用dpkg-buildpackage命令来编译源码包,它会将生成的Deb软件包放置在上层目录中。
cd tree-1.5.1.2
sudo dpkg-buildpackage
这样就会编译生成tree-1.5.1.2-1_i386.deb
6)安装软件包。使用”dpkg –i”命令来安装生成的Deb软件包。
 
通过以上文章 下载源代码
kmod-libkmod_shared        systemd_229-4ubuntu21.23.debian.tar.xz  systemd_229.orig.tar.gz
kmod-libkmod_shared.zip    systemd_229-4ubuntu21.23.dsc

下载后编译 发现根本自动加载不了模块

增加编译选项
./configure --enable-kmod
还是编译不过去 去github下载 kmod-libkmod_shared.zip
编译安装

编译通过 还是问题依旧

这下蒙逼了,只能撸源码
发现正常的systemd-udevd开始阶段有加载规则文件
而现在编译的没有加载规则文件


static const char* const rules_dirs[] = {
        "/etc/udev/rules.d",
        "/run/udev/rules.d",
       /*加入此行*/ "/lib/udev/rules.d",
        UDEVLIBEXECDIR "/rules.d",
        NULL
};
原来我的initrd.img的规则文件在目录"/lib/udev/rules.d"中
源代码没有加入
果断加入 
重编
systemd-udevd打包进initrd.img,重启
一切ok

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值