为了简化内核,我们的外围设备的驱动程序一般都做成模块放在/lib/modules/`uname -r`/kernel/drivers下 //`uname -r`引用的是命令的执行结果
我们需要的网卡驱动在net目录下,vmware的虚拟网卡驱动程序是pcnet32这个模块,我们可以使用下面两种方法加载:
modprobe pcnet32加载这个模块,(注意:modprobe后直接指定模块名加载)或
insmod PATH (PATH 是指定详细路径加载模块)
我们可以用modinfo pcnet32查看pcnet32.ko查看它的相关属性信息,注意是查看depends选项,看看他依赖的模块是哪个,我们可以看到pcnet32.ko依赖mii.ko,而mii.ko不依赖任何模块,
我们可以把这些模块放到自己做的小Linux上的根文件系统/sysroot/lib/modules下和普通的lib下的模块以示区别
cd /lib/modules/`uname -r`/kernel/drivers/net
cp pcnet32.ko mii.ko /mnt/sysroot/lib/modules
而为了让我们自己做的小Linux可以加载这两个模块,我们必须把insmod移植到我们的小Linux下
which insmod //查看insmod的路径
cp /sbin/insmod /mnt/sysroot/sbin/
ldd /sbin/insmod //查看insmod依赖的库文件,把依赖的库文件复制到/mnt/sysroot/lib下,有链接的库文件,链接和文件都要拷过来,拷链接时加“-d”选项
系统启动过程中,驱动程序在只要不是和根文件系统相关的,一般都在系统初始化脚本/etc/rc.d/rc.sysinit中加载完成的,我们可以编辑如下
接下来我们要让自己的小Linux能够登陆,copy一个login到/mnt/sysroot/bin/
给一个执行权限chmod +x /mnt/sysroot/bin/login.
ldd /mnt/sysroot/bin/查看login 依赖的库文件,并把它们copy到/mnt/sysroot/lib/下
并如上加入一个mingetty
此时我们还要有账号密码,现在我们就手动加一个账号密码
cd /mnt/sysroot/etc
vim passwd
加入 root:x:0:0::/root:/bin/bash 保存退出。加一个权限。chmod 700 /mnt/sysroot/root
还要一个组文件
vim group
加入 root:x:0: 保存退出
下一步加密码,密码用openssl passwd -1 -salt ssdklkdt 回车
Password:此处输入密码(redhat)
此处生成一串乱码,copy下来放在shadow中
vim shadow
root:密码乱码:上次修改时间:最短使用期限(一般为0):最长使用期限(一般为99999):7:::
chmod 400 /mnt/sysroot/etc/shadow
改一下vim /mnt/sysroot/etc/inittab
改成如图
cp -d /usr/lib/libnss* /mnt/sysroot/usr/lib/
cp /lib/libnss* /mnt/sysroot/lib/
sync
nss库文件的工作并不是依靠库本身就可以工作的,它依赖nss这个服务的配置文件
这个配置文件在/etc/nsswitch.conf
vim /etc/nsswitch.conf 复制里面的
然后cd /mnt/sysroot/etc
vim nsswitch.conf
把上图的东西输入,保存退出