之前一直有个想法,那就是将x86的系统放在U盘中,像ARM那样做,但一直也不知道大概要怎么查资料,最近搞redhat,查到了一些相关资料,记录一下。
/******************************************************************************
* Linux U盘 启动盘
* 说明:
* 之前一直有个想法,那就是将x86的系统放在U盘中,像ARM那样做,但一直也不知
* 道大概要怎么查资料,最近搞redhat,查到了一些相关资料,记录一下。
*
* 2017-3-6 深圳 南山平山村 曾剑锋
*****************************************************************************/
一、参考文档:
1. 制作一个linux的u盘最小系统
http://zhuyi108.blog.51cto.com/2087327/845246
2. 制作u盘启动linux系统
http://www.voidcn.com/blog/mr_zhaojy/article/p-5974248.html
3. U 盘启动LINUX
http://blog.csdn.net/clozxy/article/details/5865632
4. 定制自己的U盘Linux系统
http://mowblog.com/%E5%AE%9A%E5%88%B6%E8%87%AA%E5%B7%B1%E7%9A%84u%E7%9B%98linux%E7%B3%BB%E7%BB%9F/
5. CDlinux HOWTOs 文档
http://cd-linux.sourceforge.net/archive/0.4/howto-cn.html
6. GRUB (简体中文)
https://wiki.archlinux.org/index.php/GRUB_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
7. 什么是 initrd.img
http://blog.csdn.net/chrisniu1984/article/details/3907874
8. Linux2.6 内核的 Initrd 机制解析
https://www.ibm.com/developerworks/cn/linux/l-k26initrd/
9. Linux 初始 RAM 磁盘(initrd)概述
https://www.ibm.com/developerworks/cn/linux/l-initrd.html
10. Linux 引导过程内幕
https://www.ibm.com/developerworks/cn/linux/l-linuxboot/
11. LINUX下三个内核文件详解(vmlinuz/initrd.img/System.map)
https://www.path8.net/tn/archives/5304
二、基本操作说明:
1. U盘(SD卡)分两个区:
1. /dev/sdb1;
2. /dev/sdb2;
2. mount /dev/sdb1 /mnt
3. grub-install –root-directory=/mnt /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
4. ls /boot/grub/
fonts gfxblacklist.txt grub.cfg grubenv i386-pc locale unicode.pf2
5. 编写/boot/grub/grub.cfg文件:
set default=0
insmod gzio
insmod jpeg
insmod part_msdos
insmod ext2
insmod ext3
insmod ext4
set timeout=10
set root='hd0,1'
# linux (hd0,1)/boot/vmlinuz rw # root=/dev/sdb2 rootfstype=ext3
linux (hd0,1)/boot/vmlinuz rw root=/dev/sdb2 rootfstype=ext3
initrd (hd0,1)/boot/initrd.img
boot
6. 拷贝对应的系统文件,最终/dev/sdb1分区目录如下:
.
└── boot
├── grub
│ ├── fonts
│ ├── grub.cfg
│ ├── grubenv
│ ├── i386-pc
│ └── locale
├── initrd.img
├── initrd.img_redhat
├── initrd.img_ubuntu
├── vmlinuz
├── vmlinuz_redhat
└── vmlinuz_ubuntu
7. 下载Ubuntu Core,并将其解压到/dev/sdb2分区中,注意将passwd中间中root密码去掉,否则要输入密码。
8. 如上所示,既有redhat,又有ubuntu的,遇到了redhat内核版本过低,Ubuntu Core版本高过不能挂载文件系统的问题。
三、遇到错误:
1. 现象:
...
mount: could not find filesystem /dev/root
Setting up other filesystems
Setting up new root fs
setuproot: moving /dev failed: No such file or directory
...
2. 参考文档:
1. [SOLVED] Getting existing CentOS5 system to run with a new motherboard
https://www.centos.org/forums/viewtopic.php?t=24681
2. Creating a New Initial RAM Disk
https://wiki.centos.org/TipsAndTricks/CreateNewInitrd
3. 原因:
If you have changed a motherboard or moved a disk to a different system it may fail to boot due to the lack of appropriate drivers in the initial RAM disk image (initramfs for CentOS 6, initrd for CentOS 5).