构建Linux文件系统:使用systemd启动login

349 阅读1分钟

需要完成的任务

使用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