需要完成的任务
使用systemd引导出login,实现登录
实验记录
首先,我们把login相关的文件移动到我们的小系统
cp /etc/passwd etc -r
cp /etc/sdhadow etc -r
cp /bin/login bin/
cp /lib/x86_64-linux-gnu/security lib/x86_64-linux-gnu/ -r
cp /lib/x86_64-linux-gnu/libnsl.so.2 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libtirpc.so.3 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libkrb5.so.3 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libk5crypto.so.3 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libcom_err.so.2 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libkrb5support.so.0 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libkeyutils.so.1 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libresolv.so.2 lib/x86_64-linux-gnu/
cp /etc/shadow etc/
cp /etc/passwd etc/
cp /etc/pam.d etc/ -r
cp /etc/nsswitch.conf etc/
cp /etc/login.defs etc/
cp /etc/security etc/ -r
cp /etc/sudoers etc/sudoers
mkdir root
接下来,我们写一个systemd服务单元,让系统启动的时候拉起登录程序
vim etc/systemd/system/login.service
[Unit]
Description=Login Service
After=multi-user.target
[Service]
ExecStart=-/bin/login
Restart=always
StandardInput=tty-force
StandardOutput=tty
StandardError=tty
[Install]
WantedBy=multi-user.target
接下来,关闭原本接管bash脚本的服务,开启登录服务
chroot . bin/bash
systemctl disable bash.service
systemctl enable login.service
exit
最后,打包更新完成
find . | cpio -o -H newc | gzip > /boot/my-initrd.img
update-grub