对内核深度定制的话会涉及 initramfs
中的内容,当内核加载后会执行里面的内容(怀疑 bzImage 包含 initrd 内容);点击参考什么是initrd
注意以下针对的版本:
- Ubuntu <= 14.04 / trusty
- Debian <= jessie / sid
- XPEnology = DS3615xs / 5.2
启动过程
以下图片信息摘自于:IBM 文档
Synology/XPEnology
在新版的linux发行版中,都采用了 systemd 启动方式;但在老的版本中,还有一些使用 UpStart 技术进行管理后台运行程序,当然synology5 是基于 Debian 进行改装的版本同样采用了此方式进行管理后台服务(UpStart 由 Ubuntu 早先开发的),具体参考Linux如何管理后台服务
由于使用了此 linux 发行版,在安装的时候可以利用 synology assistant
把启动盘和安装文件分离进行远程安装颇有疑惑,所以零零碎碎学习了很多相关的linux知识;在论坛提供的启动盘制作镜像中,采用的是 syslinux
用来加载 zImage(Linux kernel)
,根据启动配置的一些参数(包括序列号等)我怀疑这个 zImage
是刻意定制过的。
XPEnoboot_DS3615xs_5.2-5644.5.img
后缀名为img
结尾的镜像属于软盘或闪存(U盘)烧制使用的,在syslinux boot loader
中其核心配置采用isolinux.cfg
,具体参考:isolinux wiki
XPEnoboot_DS3615xs_5.2-5644.5.iso
后缀名为 iso
结尾的镜像属于 LiveCD&CD/ROM
烧制使用的,在syslinux boot loader
中其核心配置采用syslinux.cfg
,具体参考:syslinux wiki
** 黑群晖一些记录项 **
- mdadm -Asf
- vgchange -ay
- fsck
- partprobe
- e2fsck
- SHR2
- ddrescue
syslinux & grub
Upstart 相关
Upstart 的 Job 目录 /etc/init
写一个示例:
在/etc/init
目录新建 mytest.conf
脚本文件:
1
2
3
4
5
6
7
8
9
10
11
author "caryyu"
description "this is first test script"
start on carystart
stop on carystop
console log
script
exec echo "Hello World"
end script
console log
输出到/var/log/upstart/mytest.log
中console output
输出到/dev/console
,但有时当前的用户控制台用的/dev/tty
,可以调试echo 123 >> /dev/tty
运行以上示例
1
2
3
initctl reload-configuration
initctl emit carystart
cat /var/log/upstart/mytest.log
常用的方法
initctl list
- 查看服务列表initctl start servicename
- 启动服务initctl stop servicename
- 停止服务开机自动启动
在
/etc/init/
目录下存在servicename.override
文件,内容包含start
,或者这个文件不存在。开机非自动启动
在
/etc/init/
目录下存在servicename.override
文件,内容包含manual
。
工具箱
- Binwalk - 用来分析压缩包的信息,如内核 bzImage 包含 initrd 的内容,查看 Binwalk 详情。
一些参考
http://tech.youmi.net/2016/01/128743607.html http://upstart.ubuntu.com/getting-started.html https://www.ibm.com/developerworks/cn/linux/1407_liuming_init2/ http://blog.fens.me/linux-upstart/ http://www.cnblogs.com/silenceli/p/3546425.html https://unix.stackexchange.com/questions/106656/how-do-services-in-debian-work-and-how-can-i-manage-them