initramfs( initial ram filesystem) purpose

initramfs( initial ram filesystem ) purpose

1,variable definition
stage=" creating rootfs mount point"
ROOTFS_MNT=/mnt/rootfs
mkdir -p $ROOTFS_MNT
DOWNLOAD_DIR=${ROOTFS_MNT}/downloads
OS_FEP_FILE="OS-FEP" # 

2,downloading OS FEP
echo " Downloading ${remote_dir}/${OS_FEP_FILE} from ${remote_ip}"   #下载FEP包(包含rootfs)到根目录(/NSN-LSP-OS )
if ! timeout -t $FTP_TIMEOUT wget -T $WGET_TIMEOUT ftp://${FTP_USER}@${FTP_ADDRESS}; then
   rm -rf ${ OS_FEP_FILE}
fi

3,processing OS FEP, extract rootfs(ROOTFS-AXM.cpio.xz) from FEP file, and put in ROOTFS_MNT
stage=" processing AXM OS FEP file"   #处理FEP,提取rootfs放在ROOTFS_MNT目录
echo "Download complete, processing..."
# Start kicking watchdog since boot flash updates may take a few min
/sbin/watchdog -T 8 -t 2 /dev/watchdog
if ! /usr/bin/ process_axm_fep $ OS_FEP_FILE $ ROOTFS_MNT ; then
   echo "Failed to process $OS_FEP_FILE!"
   pkill watchdog
fi

4,switch to rootfs(in ROOTFS_MNT)
stage=" switching to $ROOTFS_MNT" #从initranfs切换到rootfs
echo "Starting init..."
# switch root
exec /sbin/switch_root $ROOTFS_MNT /sbin/init

5, /sbin/init是个软链接,连接到systemd,切换到rootfs后,就会执行/sbin/init(即启动systemd)
xxxx@yyyy:~# ls -all /sbin/init
20 Jan  1  1970 /sbin/init -> /lib/systemd/systemd
systemd启动后,进程ID为1,实际上还是initramfs的init进程,因为调用exec执行切换rootfs后,initramfs的init进程并不会退出,而是继续执行systemd,而进程名会变为systemd, 它是Linux系统其他所有进程的父进程。为系统启动的第一个用户进程。


switch_root:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值