- 浏览: 1473135 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
getelephantbyid:
make 无法通过.....
php-5.3,php-5.4的thttpd2.25b补丁,及编译方法 -
getelephantbyid:
patch -p1 ../php-5.4.7_thttpd-2 ...
php-5.3,php-5.4的thttpd2.25b补丁,及编译方法 -
zander:
zander 写道c 语言是静态类型语言还是动态类型语言阅读理 ...
什么是动态语言和静态语言? -
zander:
c 语言是静态类型语言还是动态类型语言
什么是动态语言和静态语言? -
lunajiayou:
很有道理,赞一个
跟着苍蝇会找到厕所,跟着蜜蜂会找到花朵
关于:
mkinitcpio是一代的initramfs制作工具。相对于老的mkinitrd和mkinitramfs,它有以下很多优点。
*它使用Linux核心开发小组开发的klibc和kinit为早期(启动)的userspace提供一个小巧轻量级的基本系统。
*它在系统启动的时候使用udev来检测硬件,因此防止大量不必要的模块被加载。
*基于hook的init脚本使它很容易通过自定义hooks来进行扩展(/etc/mkinitcpio.conf),有很多hooks包含在源里的软件包里,可以很容易用pacman来安装,从而避免修改mkinitcpio自身。
*它早已经为legacy和luks volumes两者、raid、swsusp、suspend2唤醒以及从USB设备启动提供lvm2,dm-crypt支持。
*很多新特性可以通过内核参数来进行调整,而不用重建image.
* mkinitcpio可以将image集成在一个内核镜像之中,因此制作一个自我包含的内核镜像已经成为可能。
mkinitcpio在community社区的协助下,由phrakture和tpowa开发完成。
安装mkinitcpio
添加current的源,通过pacman -Sy mkinitcpio安装。
如果想使用最新开发版本,可以使用phrakture的svn源:
#svn co http://phraktured.net/initramfs
最新的程序位于initramfs/mkinitcpio目录下
为2.6.17内核激活mkinicpio
在内核安装或升级的过程中,会又两个镜像生成。
如果你使用kernel26
/boot/kernel26.img --> 通过autodetect削减了体积
/boot/kernel26-fallback.img -->包括了全部的模块
如果你使用kernel26beyond
/boot/kernel26beyond.img --> 通过autodetect削减了体积
/boot/kernel26beyond-fallback.img -->包括了全部的模块
记得修改你的bootloader来加载你想用的image.
注意:
lvm2,raid和encrypt默认没有被启用,请仔细阅读wiki有关的内容来配置你的系统。
拥有不止一个的硬盘控制器的用户:
如果你拥有不止一个的SCSI/SATA或者IDE硬盘控制器,且又需要不同的内核模块来加载它们,那么请在/etc/mkinitcpio.conf和
fallback配置文件中的 MODULES=" "中指定,否则可能会发生你的根设备不停的转换、遇到随机的kernel panic的情况。
一个更好的方法是使用Persistent block device naming来保证设备被正确的挂载。
已知的,在启动的时候不会被加载的模块:
如果你需要使用下面列表的模块来挂载你的root device,请考虑在/etc/mkinitcpio.conf中的MODULES=" "加载(相对于fallback.img,请修改对应的配置文件),否则在启动过程会出现kernel panics.
- SCSI CONTROLLERS (status stock kernel 2.6.18)
scsi_transport_sas ultrastor qlogicfas eata BusLogic pas16 wd7000 sym53c416
g_NCR5380_mmio fdomain u14-34f dtc initio in2000 imm t128 aha1542 aha152x
atp870u g_NCR5380 NCR53c406a qlogicfas408 megaraid_mm advansys
自定义mkinitcpio配置文件
制作自定义的image
要打造适合自己系统的img文件,请修改默认的/etc/mkinitcpio.conf文件
制作fallback image
如果你使用kernel26,修改 /boot/mkinitcpio-kernel26.conf
如果你使用kernel26beyond, 修改 /boot/mkinitcpio-kernel26beyond.conf
然后请在/etc/pacman.conf中加入NoUpgrade=* (*为你修改过的文件),这样下次mkinitcpio更新的时候就不会使用新的配置文件来覆盖原来修改过的文件了。
配置HOOKS
下面就是mkinitcpio配置中最重要的部分了。/etc/mkinitcpio.conf中的HOOKS条目包含的hooks指导
mkinitcpio应该把那些模块做成img,并在系统启动的时候执行这些模块(举例: initrd /boot/*.img),格式如下:
HOOKS="foo1 foo2 foo3 bar1 bar2"
可用的hooks:
base: 建立初始的、所有必需的目录,安装基本的klibc工具和库文件。你需要这个hook,除非你知道自己在干什么。
udev: 为你的img文件添加udev。
启动时:Udev用来建立你的root device的节点(例如/dev/*da),为root device检测需要的模块。由于这个hook简化了很多事情,所以推荐使用。
modload:
启动时:自动检测的另一个替代方法,但是比udev慢很多,不推荐使用,还是用udev吧。
autodetect:
自动检测你的系统所需要的模块,从而缩小initramfs的体积。记得检验被包含的模块的正确和完整。为了充分发挥autodetcet的优势,这个
hook必须先于其他hooks子系统启动。任何先于“autodetec”启动的hook会被最大化安装。
ide: 为img添加IDE模块。如果你的root device基于一个IDE硬盘,请使用。同样,如你想最小化img的size,同时使用autodetect.
启动时:加载IDE模块,要使用这个hook,你将会需要udev或者modload hook,除非你已经手动指定需要的模块。
pata: 为img添加IDE模块.如果你的root device基于一个IDE硬盘,请使用。同样,如你想最小化img的size,同时使用autodetect.
启动时:加载IDE模块。要使用这个hook,你将会需要udev或者modload hook,除非你已经手动指定需要的模块。PATA是内核里新的IDE驱动,它会将/dev/hd*改成/dev/sd*. 要了解更多请查看:
http://archlinux.org/news/272/
sata:将serial ATA模块添加到image中。如果你的根分区装在sata硬盘上,请使用。同样,配合autodetect来缩小体积。
启动时:加载SATA模块,要使用这个hook,你将会需要udev或者modload hook,除非你已经手动指定需要的模块。
scsi: 将SCSI模块添加到img。如果你的root device基于SCSI硬盘,请使用。
启动时:加载SCSI模块,要使用这个hook,你将会需要udev或者modload hook,除非你已经手动指定需要的模块。
usb:将USB模块添加到img。如果你的根分区在usb设备上(优盘上的Linux),请使用。
启动时:加载USB模块,要使用这个hook,你将会需要udev或者modload hook,除非你已经手动指定需要的模块。
usbinput: 将USB HID modules添加到image。如果你在系统早期启动的时候(安全模式)需要用到usb键盘,请使用。
启动时:加载USB HID模块,要使用这个hook,你将会需要udev或者modload hook,除非你已经手动指定需要的模块。
fw:将FIREWIRE模块添加到img。如果你的根分区在FW设备上,请使用。
启动时:启动时:加载FW模块,要使用这个hook,你将会需要udev或者modload hook,除非你已经手动指定需要的模块。
net:为网络设备添加必要的模块。如要使用pcmcia设备,也请添加 pcmcia hook。
启动时:加载network模块。要使用这个hook,你将会需要udev或者modload hook,除非你已经手动指定需要的模块。
pcmcia:为pcmcia设备添加必需的模块,要安装pcmciautils。
启动时:加载pcmcia模块。要使用这个hook,你将会需要udev或者modload hook,除非你已经手动指定需要的模块。
dsdt:在启动的时候加载一个自定义的acpi dsdt文件。将你的dsdt文件改名为custom.dsdt,放到/lib/initcpio目录。
启动时:如果initramfs文件中有dsdt配置文件,它会自动被内核使用。
filesystems: 将必需的文件系统模块添加到image中。要想系统能够启动,这个hook是必须的(除非你把使用的文件系统编进了内核)。
启动时:启用这个hook,系统会在启动的时候检测文件系统的类型,加载文件系统模块并将它转移到kinit.注意:它不会检测reiser4, reiser4必须添加到modules条目。
lvm2:将设备的mapper 内核模块和lvm 工具添加到image。要使用该hook,你必须安装lvm2 package。
启动时:激活所有的lvm2 volume groups。对于位于lvm的文件系统是必须的。
raid: 为software raid安装添加模块和mdassamble。需要安装mdadm。
启动时:为software raid设备加载必需的模块,在启动时装配raid设备。
encrypt: 添加dm-crypt内核模块和crypsetup工具到image。要安装cryptsetup软件包。
启动时:检测并为加密的根分区解锁。
resume:
启动时:从休眠状态唤醒。适用于swsusp和suspend2。
firmware: 添加/lib/firmware的文件
启动时:加载firmware。要使用这个hook,你将会需要udev的配合。
keymap: 从rc.conf文件中添加keymap和consolefonts。
启动时:在早期启动中加载在rc.conf中指定的keymap和consolefont。
实例:
下面这个标准设置可以满足大部分用户:
HOOKS="base udev autodetect ide scsi sata filesystems"
如果想在多台机上使用image,使用下面的配置:
HOOKS="base udev ide scsi sata filesystems"
要在lvm2 volume groups之上使用encrypted volumes:
HOOKS="base udev autodetect ide scsi sata lvm2 encrypt filesystems"
设置 MODULES
你可以通过设置配置文件里面的MODULES条目,在任何的东西加载前使用一个模块。例如,如果你不想使用udev或者modload hooks,可以加载所有必须的模块使启动速度更快:
MODULES="piix ide_disk reiserfs"
HOOKS="base autodetect ide filesystems"
注意:如果你使用reiser4,那就必须将它加载到MODULES条目。
设置 BINARIES and FILES
这几个选项的作用是允许你将文件添加进image里。唯一不同的地方是, BINARIES会检查binaries和libraries的依赖,而FILES则是简单的添加文件。
例子:
FILES="/etc/modprobe.conf"
BINARIES="/usr/bin/somefile"
创建image
重建预先确定/目前使用的image
如果你想为archlinux的原始的kernel26内核重建initramfs image, 那么请用下面的命令:
# mkinitcpio -p kernel26
上面是kernel26的例子,对于其它内核packages,例如beyond,都是适用的。
如果你想改变
手动制作:
用以下命令生成image:
mkinitcpio -g /boot/kernel26.img
该命令会在/boot目录下生成一个目前运行的内核(kernel26)的image。kernel26beyond的用户要用以下命令:mkinitcpio -g /boot/kernel26beyond.img
当然,你自己喜欢下载内核源码亲自编译,像我这样:),那么你需要:
mkinitcpio -g /boot/*.img -k (/lib/modules/*)
注:第一个*是img文件的前部分名称,任意取;-k 参数后面的,用ls
/lib/modules看一下,输入由于你自己编译而产生的目录名称。例如我编译2.6.20,安装模块后,在/lib/modules生成
2.6.20的文件夹,那么制作image的时候要用:mkinitcpio -g /boot/*.img -k 2.6.20
为目前不使用内核创建image,一定要用-k参数!
要为目前运行的内核创建fallback image,例如kernel26, kernel26beyond,你要:
mkinitcpio -c /boot/mkinitcpio-kernel26.conf -g /boot/kernel26.img
For beyond:
mkinitcpio -c /boot/mkinitcpio-kernel26beyond.conf -g /boot/kernel26beyond.img
一般来书,安装kernel26或者kernel26beyond的时候,系统会自动创建fallback.img的。而且我的系统上好像没有/boot/mkinitramfs-kernel26.conf这文件(我没有删除kernel26)
生成了image后,使用之前记得修改bootloader的配置文件。
自定义内核启动参数
就好像不用initramfs的话,有的选项需要通过内核命令行(kernel command
line)来告诉内核如何启动,例如我们都要在kernel /boot/vmliuz 这一行指定root=/dev/*d* ro
。而且有的mkinitcpio hooks 有特殊的选项,要通过内核命令行来实现。这些东西我们将在下面进行讨论:
如果你不知道什么是内核命令行,那么请参考grub或者lilo的说明文档。
进入failsafe mode
如果你在内核命令行加入了这个选项: break=y
init会在启动完成后停止,并进入命令行模式,这个功能能让我们检查init的启动情况。输入exit后,系统会继续启动。
禁止hooks
你可以在启动的时候禁止一个或多个hook, 只要在内核命令行输入disablehooks=hook1,hook2,hook3
例如:
disablehooks=resume
把modules加入黑名单
方法如上: disablemodules=mod1,mod2,mod3
例如:
disablemodules=ata_piix
使用raid(译者对raid不熟悉,略过)
使用net (都是比较高级的网络参数,对于我等桌面用户没什么用,略过)
使用lvm (没用过,略过)
使用encrypted root (没用过,略过)
使用休眠 (Linux下的休眠不怎么敢试,略过)
Bootloader的配置实例 (我想玩ArchLinux的人都应该都会该这个吧,略过)
Troubleshooting
(Intel)piix ide 控制器和 beyond 内核
问题:
如果你碰到在系统切换到kinit, mkinitcpio检测你的硬盘时,提示“Can't find device
dev(0,0)”的错误信息,这可能是ata_piix和piix驱动相冲突的结果。 Beyond内核打了一些libata的补丁,会导致
ata_piix和 piix冲突。
解决方法:
修改 /etc/mkinitcpio.conf,只启用ide、sata或者scsi三个中的一个,这取决于你的系统事实上需要什么来启动。
发表评论
-
google pagespeed禁用改写html文件的cache头
2019-09-04 19:51 563这会禁用html文件的缓存,无法读取last-modifi ... -
macos 安装imagick解决php不能显示验证码的问题
2018-11-04 04:15 1295需要选安装pear,然后用pecl install imagi ... -
linux入侵检测
2018-07-07 22:58 695一、检查系统日志 l ... -
yii的安全策略
2018-07-06 04:02 445web根目录下.htaccess 写道 Options ... -
免费Web防火墙
2018-07-06 01:21 6051,modsecurity 基于apache 历史最悠久 ... -
两款免费好用的Web渗透工具
2018-07-06 01:12 10451,OWASP Zed Attack Proxy (ZAP ... -
apache2反向代理
2018-06-12 18:46 848开启以下两个模块 a2enmod proxy a2enm ... -
扩展Aws云主机磁盘大小
2018-03-05 21:17 1408进入ELASTIC BLOCK STORE-》卷 选中要修 ... -
ubuntu时区设置
2018-02-25 10:41 723查看当前时区 timedatectl 修改时区 dpk ... -
macos 10.13 dmg下载和安装盘制作
2018-02-05 19:58 10067https://bbs.feng.com/read-htm-t ... -
windows升级后 iis服务无效 IIS-W3SVC-WP 无法读取配置文件
2017-12-01 11:35 1651通过使用以管理员身份运行选项打开 Windows PowerS ... -
vmware中运行的macos连接iphone
2017-09-30 17:53 2350需要iphone插在usb2.0端口上,并且虚拟机usb兼容性 ... -
brotli压缩算法说明
2017-06-09 02:36 1330brotli是新一代的HTTP压缩算法,用于替代gzip,相 ... -
TCP Fast Open说明
2017-06-09 02:34 7089相关介绍 https://lwn.net/Article ... -
使用strongswan建立基于ikev2 eap-mschapv2的ipsec服务器
2017-04-17 23:14 3225sudo apt-get install strongsw ... -
使用strongswan/xl2tpd建立ipsec/l2tp服务器
2017-04-17 22:32 6176sudo apt-get install strongsw ... -
SecureFX中文件名乱码的解决
2014-08-28 03:23 3358原始贴子:https://forums.vandyke.c ... -
禁用htc one m7官方内核的写保护
2014-08-26 14:52 1288老外写的内核模块源码:https://github.com ... -
windows和office的kms激活方法(windows 企业版,office vl版可用)
2013-03-17 19:28 21windows 激活windows 8slmgr.vbs /i ... -
windows 8 64bit 离线官安装 .net framework 3.5
2013-01-23 11:32 1959因为国内网络问题不可能在线安装成功,所以就有了这么多麻烦。 ...
相关推荐
initramfs中systemd的供应工具(systemd-tool):mkinitcpio挂钩名称: systemd-tool 挂钩提供的核心功能: 统一的systemd + mkinitcpio配置自动配置二进制和配置资源按需调用mkinitcpio脚本和内联函数随附的服务...
此文件配置了mkinitcpio工具的行为,该工具用于生成初始ramdisk(initramfs),这是系统启动时所用的临时文件系统。 - 主要配置项包括HOOKS(钩子)、FILES(额外添加到initramfs的文件)等。 - HOOKS定义了加载模块...
它根据配置文件`/etc/mkinitcpio.conf`来决定哪些模块和服务需要在引导过程中加载。mkinitcpio支持多种挂载点,如加密文件系统、网络挂载等,并可以通过自定义挂钩来扩展其功能。 2. **dropbear**: Dropbear是一个...
安装完成后,你需要编辑`/etc/mkinitcpio.conf`配置文件,找到`HOOKS`行,并将`archlogo`添加到hooks列表中,比如:`HOOKS="base udev block filesystems fsck archlogo"`。这里,`archlogo`会被添加到系统启动流程...
6. **配置GRUB**:更新GRUB引导加载器的配置,确保在启动时检测到Yubikey的存在。这通常涉及到在GRUB环境中添加`modprobe yubikey`命令。 7. **重启测试**:现在,你应该能够在插入Yubikey的情况下正常启动系统。...
8. **配置文件**: 修改系统配置文件,如`/etc/locale.conf`、`/etc/mkinitcpio.conf`等。 9. **启动加载器**: 安装并配置GRUB或其他引导加载器。 10. **后处理**: 执行额外的安装任务,如安装图形界面、桌面环境、...
利用mkinitcpio命令创建初始ramdisk,这是Linux系统启动过程中加载初始文件系统所必需的。 11. 设置root密码 安装过程中会要求设置root用户的密码,以确保系统安全性。 12. 安装启动加载器 最后一步是安装启动加载...
7. **初始化系统**:安装过程中还包括生成初始系统配置文件,如`/etc/locale.conf`、`/etc/mkinitcpio.conf`等。 8. **设置用户和权限**:创建第一个用户,设置密码,调整用户和组权限,确保新用户有足够的权限进行...
安装与配置 git clone https://github.com/ANDRoid7890/bootsplash-theme-manjaro-space-green.git cd bootsplash-theme-manjaro-space-green 运行chmod +x bootsplash-packer bootsplash-theme-manjaro-space.sh ...
使用`mkinitcpio -P linux`命令生成系统内核。 #### 十、用户管理 1. **设置root密码** 使用`passwd root`命令设置root密码。 2. **创建用户** 使用`useradd -m -s /bin/bash linux`创建用户名为`linux`的新...
ramroot帮助程序脚本可以轻松启用/禁用和/或生成其他ramroot配置文件。 安装 该软件包可在找到,以便于安装。 在初始安装过程中会创建一个基本配置文件。 要求 Arch Linux ramroot是专门为与Arch Linux一起使用而...