+-----------------------------------------------------------------------------+
| 第一部分 文档说明 |
+-----------------------------------------------------------------------------+
1 作用
##########
构建CD引导的小型linux(kernel + RAMDISK).
2 版权
######
版权: 聂大鹏(dozec)
3.2 作者
========
3.2.1 作者1
-----------
姓名: 聂大鹏
email: dozec@mail.youkuaiyun.com
4 产生时间
##########
时间: 2007-2-9
5 版本
######
版本: 0.1 版
6 修订过程
##########
6.1 第0.1版
===========
+-----------------------------------------------------------------------------+
| 第二部分 文档正文 |
+-----------------------------------------------------------------------------+
1 实验环境
##########
工作站: RHEL4
Linux version 2.6.14.7
gcc version 3.4.6 20060404 (Red Hat 3.4.6-3))
CPU: Pentium 1.7G
Memory: 256MB
装LFS根分区: /dev/hdd1 (hdd是一块4.3G硬盘)
swap分区: /dev/hdd2
/dev/hdd1 1 427 3429846 83 Linux
/dev/hdd2 428 524 779152+ 82 Linux swap
2 创建CDboot系统所用的内核
############################
2.1 内核配置说明
================
使用的是linux.2.6.14.7内核,配置重点说明:
Device Drivers --->
Block devices --->
<*> Loopback device support
<*> Cryptoloop Support
以上2项是以VMWare5.0为基础虚拟的硬件来配置内核使支持loop设备
<*> RAM disk support
(16) Default number of RAM disks
(8196) Default RAM disk size (kbytes)
[*] Initial RAM disk (initrd) support
以上2项使内核支持根文件系统位于RAMdisk之上.
SCSI device support --->
SCSI low-level drivers --->
<*> BusLogic SCSI support
以上项是支持VMWare5.0使用了SCSI硬件
Network device support --->
Ethernet (10 or 100Mbit) --->
<*> AMD PCnet32 PCI support
以上项是支持VMware5.0使用网卡
File systems --->
<*> Second extended fs support
<*> Ext3 journalling file system support
CD-ROM/DVD Filesystems --->
<*> ISO 9660 CDROM file system support
Pseudo filesystems --->
[*] /dev file system support
[*] Automatically mount at boot
支持引导时便挂载devfs至/dev上. 为了在make menuconfig时出现这2个选项
需要先修改fs/Kconfig文件, 添加如下项:
menu "Pseudo filesystems" <-- 找到它
config DEVFS_FS
bool "/dev file system support"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS
另外: i386的内核没有CMDLINE内核命令行参数这一选项, 推断应该是必须由bootloader
向内核传送命令行参数.在光盘引导的linux系统当中,由于我们采用的是isolinux.bin
故应该有isolinux.bin根isolinux.cfg的配置向kernel传送命令行参数.
3 根文件系统创建(RAMdisk)
#########################
3.1
===
[nie@hellokitty rootfs]$ mkdir my_rootfs initrd_mnt
my_rootfs为根文件系统
initrd_mnt用于最后生成RAMdisk时使用
3.2
===
[nie@hellokitty rootfs]$ cd my_rootfs/
[nie@localhost my_rootfs]#mkdir bin dev etc home lib mnt proc sbin sys tmp root usr
[nie@localhost my_rootfs]#mkdir usr/bin usr/lib usr/sbin
[nie@localhost my_rootfs]#mkdir mnt/cdrom mnt/lfs
mnt/cdrom用于挂载光盘, 从而读取光盘上的软件包
mnt/lfs用于挂载目标系统的根文件系统.
[nie@localhost my_rootfs]#touch linuxrc
权限参照你的linux工作站即可,基础目录介绍参见本文参考资料(未尾)。
3.3 创建linuxrc文件
===================
3.3.1 创建linuxrc,加入如下内容:
-------------------------------
[arm@localhost my_rootfs]#vi linuxrc
#!/bin/sh
#mount some file system
echo "------------toyLinux: mount /dev/shm as tmpfs"
/bin/mount -n -t tmpfs tmpfs /dev/shm
#挂载/proc为proc文件系统
echo "------------toyLinux: /proc as proc"
/bin/mount -n -t proc none /proc
#挂载/sys为sysfs文件系统
echo "------------toyLinux: /sys as sysfs"
/bin/mount -n -t sysfs none /sys
exec /sbin/init
3.3.2 修改权限
--------------
[arm@localhost my_rootfs]#chmod 775 linuxrc
[arm@localhost my_rootfs]#ls linuxrc al
rwxrwxrx 1 root root 533 Jun 4 11:19 linuxrc
3.4 安装busybox到my_rootfs当中
==============================
3.4.1
-----
# export TROOTFS=/home/nie/dev_home/graduation_paper/cdboot/rootfs/my_rootfs
# make PREFIX=$TROOTFS all install
参见<linux系统移植>.
3.4.2 增加lfs用户
-----------------
Username: lfs
Password: lfs
[/etc/passwd]
lfs:x:500:500::/home/lfs:/bin/sh
[/etc/shadow]
lfs:25h8wkHd7ewyI:13599:0:99999:7:::
[/etc/group]
lfs:x:502:
这样就省去了chapter05/addinguser.xml中调用adduser所不支持的命令参数的麻烦.
3.4.3
-----
另外, 在整个nALFS运行时,经常会有命令不支持参数的情况发生.(busybox)
这时可以从已经安装好的LFS系统当中拷取相应的命令到根文件系统当中来替换
busybox自身的命令.
例如:
tar bzip2 bunzip2 patch install
3.4.4 编译shadow出现的问题
-------------------------
[nie@hellokitty sysapp]$ tar -jxvf shadow-4.0.9.tar.bz2
[nie@hellokitty sysapp]$ cd shadow-4.0.9
[nie@hellokitty shadow-4.0.9]$ ./configure --prefix=/home/nie/dev_home/graduation_paper/cdboot/rootfs/my_rootfs-withoutX --libdir=/lib --enable-shared
[nie@hellokitty shadow-4.0.9]$ make && make install
[nie@hellokitty shadow-4.0.9]$ cp -v etc/{limits,login.access} /home/nie/dev_home/graduation_paper/cdboot/rootfs/my_rootfs-withoutX/etc
ldd 安装的程序时, 会发现其动态库依赖的路径为/home/nie/dev_home/graduation_paper/cdboot/rootfs/...
而非/lib.
3.5 相关配置文件的创建
======================
参见<linux系统移植>.
如下补充:
# vi etc/mtab (支持mount命令)
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0
tmpfs /dev/shm tmpfs defaults 0 0
# vi etc/inittab
::sysinit:/etc/init.d/rcS # 启动脚本,优先执行,内容在下(设置IP)
::once:-/bin/sh # 从askfirst(需要按回车确认)->once(只运行一次)
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
# mkdir etc/init.d
# vi etc/init.d/rcS
#!/bin/sh [必须加这行, 因为是以脚本形式执行,而下面的profile则是由sh解释]
echo "------------toyLinux: Set ip to 172.16.109.2 and up"
ifconfig eth0 172.16.109.2 up
echo "------------toyLinux: Create device file and symbolic link"
mknod /dev/cdrom b 22 0
mknod /dev/hda b 3 0
mknod /dev/hda1 b 3 1
mknod /dev/hda2 b 3 2
mknod /dev/hda3 b 3 3
mknod /dev/hda4 b 3 4
ln -s adduser /bin/useradd
ln -s addgroup /bin/groupadd
mkdir -p /root/.nALFS # nALFS -i 会自动检查该目录存在与否
# 不存在会提示. 不需要它提示.
# vi profile (Shell的全部配置文件)
# set search library path
echo "------------toyLinux: Set search library path int /etc/profile"
LD_LIBRARY_PATH=/lib:/usr/lib:/usr/X11R6/lib:/usr/lib/nALFS
export LD_LIBRARY_PATH
# Set user path
echo "------------toyLinux: Set user path in /etc/profile"
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
export PATH
# Set PKG_CONFIG_PATH
echo "------------toyLinux: Set PKG_CONFIG_PATH"
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/X11R6/lib/pkgconfig
export PKG_CONFIG_PATH
# Set HOME variable
HOME=/root
export HOME
# Change sh
rm -rf /bin/sh
ln -s bash /bin/sh
# Set PS1
export PS1='[/u@ /W]/$ '
# Run /bin/bash [keep /bin/sh --> busybox]
/bin/bash
# Set alias
alias ls='ls --color'
# mkdir var/bin 这里用来存放我们的GUI app
总结: init首先会执行/etc/init.d/rcS(Set ip)
然后启动Shell, 执行Shell的全部配置文件/etc/profile
(设置PATH/LD_LIBRARY_PATH)
3.6 生成RAMdisk
===============
[nie@hellokitty rootfs]$ dd if=/dev/zero of=initrd bs=1024k count=8
[root@hellokitty rootfs]# /sbin/mkfs.ext2 initrd -F (root permission)
[root@hellokitty rootfs]# mount -o loop initrd initrd_mnt/
[root@hellokitty rootfs]# rm -rf initrd_mnt/*
[root@hellokitty rootfs]# cp -var my_rootfs/* initrd_mnt/
[root@hellokitty rootfs]# umount initrd_mnt/
[root@hellokitty rootfs]# /sbin/e2fsck initrd
[root@hellokitty rootfs]# gzip -c9 initrd > initrd.gz
initrd.gz就是最后使用的RAMdisk.
4 制作cdboot linux
###################
4.1 总体思路
============
主要是通过isolinux.bin来完成光盘引导我们的内核及根文件系统
再通过mkisofs生成最后的iso镜像.
4.2
===
创建myiso目录
[nie@hellokitty experiment_dir]$ mkdir myiso
[nie@hellokitty experiment_dir]$ mkdir myiso/isolinux 存放启动所需要文件
[nie@hellokitty experiment_dir]$ mkdir myiso/lfs_source 存放LFS所需要的软件包
4.3 从rhel4 光盘中copy出isolinux.bin isolinux.cfg
到myiso/isolinux/
==================================================
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/isolinux.bin isolinux/
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/isolinux.cfg isolinux/
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/boot.msg isolinux/
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/boot.cat isolinux/
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/options.msg isolinux/
4.4 修改isolinux.cfg
=====================
修改如下:
default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
label linux
kernel vmlinuz
append initrd=initrd.gz load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=8192 rw root=/dev/ram init=/linuxrc
ramdisk_size要随ramdisk大小一致(也就是上面的dd命令一致)
说明: 按F1/2显示boot.msg与options.msg下的内容.
直接回车, 将加载vmlinuz内核及initrd.gz根文件系统.
同样的,也可以修改boot.msg options.msg下的内容.
4.5 copy内核及initrd.gz到光盘根目录
===================================
[nie@hellokitty myiso]$ cp ../../../linux-2.6.14.7-/bak/cdboot/bzImage isolinux/
[nie@hellokitty myiso]# cp ../../../linux-2.6.14.7-/bak/cdboot/bzImage isolinux/vmlinuz
vmlinuz是通过zImage/bzImage拷贝改名而得.均是压缩过的内核镜像,并且开头有自解压代码
vmlinux是未压缩的内核镜像
2.3.7. 必须切换到root 才能生成可引导iso镜像
===========================================
[root@hellokitty experiment_dir]# mkisofs -o myiso.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -joliet-long -R myiso
mkisofs默认使用8.3文件名格式.(ISO9660)
-joliet-long指明使用JOLIET文件系统, 从而支持长文件名
-R
Generate SUSP and RR records using the Rock Ridge protocol to further describe the files on
the iso9660 filesystem. --> support symbolic link
3 参考文档
##########
| 第一部分 文档说明 |
+-----------------------------------------------------------------------------+
1 作用
##########
构建CD引导的小型linux(kernel + RAMDISK).
2 版权
######
版权: 聂大鹏(dozec)
3.2 作者
========
3.2.1 作者1
-----------
姓名: 聂大鹏
email: dozec@mail.youkuaiyun.com
4 产生时间
##########
时间: 2007-2-9
5 版本
######
版本: 0.1 版
6 修订过程
##########
6.1 第0.1版
===========
+-----------------------------------------------------------------------------+
| 第二部分 文档正文 |
+-----------------------------------------------------------------------------+
1 实验环境
##########
工作站: RHEL4
Linux version 2.6.14.7
gcc version 3.4.6 20060404 (Red Hat 3.4.6-3))
CPU: Pentium 1.7G
Memory: 256MB
装LFS根分区: /dev/hdd1 (hdd是一块4.3G硬盘)
swap分区: /dev/hdd2
/dev/hdd1 1 427 3429846 83 Linux
/dev/hdd2 428 524 779152+ 82 Linux swap
2 创建CDboot系统所用的内核
############################
2.1 内核配置说明
================
使用的是linux.2.6.14.7内核,配置重点说明:
Device Drivers --->
Block devices --->
<*> Loopback device support
<*> Cryptoloop Support
以上2项是以VMWare5.0为基础虚拟的硬件来配置内核使支持loop设备
<*> RAM disk support
(16) Default number of RAM disks
(8196) Default RAM disk size (kbytes)
[*] Initial RAM disk (initrd) support
以上2项使内核支持根文件系统位于RAMdisk之上.
SCSI device support --->
SCSI low-level drivers --->
<*> BusLogic SCSI support
以上项是支持VMWare5.0使用了SCSI硬件
Network device support --->
Ethernet (10 or 100Mbit) --->
<*> AMD PCnet32 PCI support
以上项是支持VMware5.0使用网卡
File systems --->
<*> Second extended fs support
<*> Ext3 journalling file system support
CD-ROM/DVD Filesystems --->
<*> ISO 9660 CDROM file system support
Pseudo filesystems --->
[*] /dev file system support
[*] Automatically mount at boot
支持引导时便挂载devfs至/dev上. 为了在make menuconfig时出现这2个选项
需要先修改fs/Kconfig文件, 添加如下项:
menu "Pseudo filesystems" <-- 找到它
config DEVFS_FS
bool "/dev file system support"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS
另外: i386的内核没有CMDLINE内核命令行参数这一选项, 推断应该是必须由bootloader
向内核传送命令行参数.在光盘引导的linux系统当中,由于我们采用的是isolinux.bin
故应该有isolinux.bin根isolinux.cfg的配置向kernel传送命令行参数.
3 根文件系统创建(RAMdisk)
#########################
3.1
===
[nie@hellokitty rootfs]$ mkdir my_rootfs initrd_mnt
my_rootfs为根文件系统
initrd_mnt用于最后生成RAMdisk时使用
3.2
===
[nie@hellokitty rootfs]$ cd my_rootfs/
[nie@localhost my_rootfs]#mkdir bin dev etc home lib mnt proc sbin sys tmp root usr
[nie@localhost my_rootfs]#mkdir usr/bin usr/lib usr/sbin
[nie@localhost my_rootfs]#mkdir mnt/cdrom mnt/lfs
mnt/cdrom用于挂载光盘, 从而读取光盘上的软件包
mnt/lfs用于挂载目标系统的根文件系统.
[nie@localhost my_rootfs]#touch linuxrc
权限参照你的linux工作站即可,基础目录介绍参见本文参考资料(未尾)。
3.3 创建linuxrc文件
===================
3.3.1 创建linuxrc,加入如下内容:
-------------------------------
[arm@localhost my_rootfs]#vi linuxrc
#!/bin/sh
#mount some file system
echo "------------toyLinux: mount /dev/shm as tmpfs"
/bin/mount -n -t tmpfs tmpfs /dev/shm
#挂载/proc为proc文件系统
echo "------------toyLinux: /proc as proc"
/bin/mount -n -t proc none /proc
#挂载/sys为sysfs文件系统
echo "------------toyLinux: /sys as sysfs"
/bin/mount -n -t sysfs none /sys
exec /sbin/init
3.3.2 修改权限
--------------
[arm@localhost my_rootfs]#chmod 775 linuxrc
[arm@localhost my_rootfs]#ls linuxrc al
rwxrwxrx 1 root root 533 Jun 4 11:19 linuxrc
3.4 安装busybox到my_rootfs当中
==============================
3.4.1
-----
# export TROOTFS=/home/nie/dev_home/graduation_paper/cdboot/rootfs/my_rootfs
# make PREFIX=$TROOTFS all install
参见<linux系统移植>.
3.4.2 增加lfs用户
-----------------
Username: lfs
Password: lfs
[/etc/passwd]
lfs:x:500:500::/home/lfs:/bin/sh
[/etc/shadow]
lfs:25h8wkHd7ewyI:13599:0:99999:7:::
[/etc/group]
lfs:x:502:
这样就省去了chapter05/addinguser.xml中调用adduser所不支持的命令参数的麻烦.
3.4.3
-----
另外, 在整个nALFS运行时,经常会有命令不支持参数的情况发生.(busybox)
这时可以从已经安装好的LFS系统当中拷取相应的命令到根文件系统当中来替换
busybox自身的命令.
例如:
tar bzip2 bunzip2 patch install
3.4.4 编译shadow出现的问题
-------------------------
[nie@hellokitty sysapp]$ tar -jxvf shadow-4.0.9.tar.bz2
[nie@hellokitty sysapp]$ cd shadow-4.0.9
[nie@hellokitty shadow-4.0.9]$ ./configure --prefix=/home/nie/dev_home/graduation_paper/cdboot/rootfs/my_rootfs-withoutX --libdir=/lib --enable-shared
[nie@hellokitty shadow-4.0.9]$ make && make install
[nie@hellokitty shadow-4.0.9]$ cp -v etc/{limits,login.access} /home/nie/dev_home/graduation_paper/cdboot/rootfs/my_rootfs-withoutX/etc
ldd 安装的程序时, 会发现其动态库依赖的路径为/home/nie/dev_home/graduation_paper/cdboot/rootfs/...
而非/lib.
3.5 相关配置文件的创建
======================
参见<linux系统移植>.
如下补充:
# vi etc/mtab (支持mount命令)
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0
tmpfs /dev/shm tmpfs defaults 0 0
# vi etc/inittab
::sysinit:/etc/init.d/rcS # 启动脚本,优先执行,内容在下(设置IP)
::once:-/bin/sh # 从askfirst(需要按回车确认)->once(只运行一次)
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
# mkdir etc/init.d
# vi etc/init.d/rcS
#!/bin/sh [必须加这行, 因为是以脚本形式执行,而下面的profile则是由sh解释]
echo "------------toyLinux: Set ip to 172.16.109.2 and up"
ifconfig eth0 172.16.109.2 up
echo "------------toyLinux: Create device file and symbolic link"
mknod /dev/cdrom b 22 0
mknod /dev/hda b 3 0
mknod /dev/hda1 b 3 1
mknod /dev/hda2 b 3 2
mknod /dev/hda3 b 3 3
mknod /dev/hda4 b 3 4
ln -s adduser /bin/useradd
ln -s addgroup /bin/groupadd
mkdir -p /root/.nALFS # nALFS -i 会自动检查该目录存在与否
# 不存在会提示. 不需要它提示.
# vi profile (Shell的全部配置文件)
# set search library path
echo "------------toyLinux: Set search library path int /etc/profile"
LD_LIBRARY_PATH=/lib:/usr/lib:/usr/X11R6/lib:/usr/lib/nALFS
export LD_LIBRARY_PATH
# Set user path
echo "------------toyLinux: Set user path in /etc/profile"
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
export PATH
# Set PKG_CONFIG_PATH
echo "------------toyLinux: Set PKG_CONFIG_PATH"
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/X11R6/lib/pkgconfig
export PKG_CONFIG_PATH
# Set HOME variable
HOME=/root
export HOME
# Change sh
rm -rf /bin/sh
ln -s bash /bin/sh
# Set PS1
export PS1='[/u@ /W]/$ '
# Run /bin/bash [keep /bin/sh --> busybox]
/bin/bash
# Set alias
alias ls='ls --color'
# mkdir var/bin 这里用来存放我们的GUI app
总结: init首先会执行/etc/init.d/rcS(Set ip)
然后启动Shell, 执行Shell的全部配置文件/etc/profile
(设置PATH/LD_LIBRARY_PATH)
3.6 生成RAMdisk
===============
[nie@hellokitty rootfs]$ dd if=/dev/zero of=initrd bs=1024k count=8
[root@hellokitty rootfs]# /sbin/mkfs.ext2 initrd -F (root permission)
[root@hellokitty rootfs]# mount -o loop initrd initrd_mnt/
[root@hellokitty rootfs]# rm -rf initrd_mnt/*
[root@hellokitty rootfs]# cp -var my_rootfs/* initrd_mnt/
[root@hellokitty rootfs]# umount initrd_mnt/
[root@hellokitty rootfs]# /sbin/e2fsck initrd
[root@hellokitty rootfs]# gzip -c9 initrd > initrd.gz
initrd.gz就是最后使用的RAMdisk.
4 制作cdboot linux
###################
4.1 总体思路
============
主要是通过isolinux.bin来完成光盘引导我们的内核及根文件系统
再通过mkisofs生成最后的iso镜像.
4.2
===
创建myiso目录
[nie@hellokitty experiment_dir]$ mkdir myiso
[nie@hellokitty experiment_dir]$ mkdir myiso/isolinux 存放启动所需要文件
[nie@hellokitty experiment_dir]$ mkdir myiso/lfs_source 存放LFS所需要的软件包
4.3 从rhel4 光盘中copy出isolinux.bin isolinux.cfg
到myiso/isolinux/
==================================================
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/isolinux.bin isolinux/
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/isolinux.cfg isolinux/
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/boot.msg isolinux/
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/boot.cat isolinux/
[nie@hellokitty myiso]$ cp /var/ftp/pub/rhel4/isolinux/options.msg isolinux/
4.4 修改isolinux.cfg
=====================
修改如下:
default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
label linux
kernel vmlinuz
append initrd=initrd.gz load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=8192 rw root=/dev/ram init=/linuxrc
ramdisk_size要随ramdisk大小一致(也就是上面的dd命令一致)
说明: 按F1/2显示boot.msg与options.msg下的内容.
直接回车, 将加载vmlinuz内核及initrd.gz根文件系统.
同样的,也可以修改boot.msg options.msg下的内容.
4.5 copy内核及initrd.gz到光盘根目录
===================================
[nie@hellokitty myiso]$ cp ../../../linux-2.6.14.7-/bak/cdboot/bzImage isolinux/
[nie@hellokitty myiso]# cp ../../../linux-2.6.14.7-/bak/cdboot/bzImage isolinux/vmlinuz
vmlinuz是通过zImage/bzImage拷贝改名而得.均是压缩过的内核镜像,并且开头有自解压代码
vmlinux是未压缩的内核镜像
2.3.7. 必须切换到root 才能生成可引导iso镜像
===========================================
[root@hellokitty experiment_dir]# mkisofs -o myiso.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -joliet-long -R myiso
mkisofs默认使用8.3文件名格式.(ISO9660)
-joliet-long指明使用JOLIET文件系统, 从而支持长文件名
-R
Generate SUSP and RR records using the Rock Ridge protocol to further describe the files on
the iso9660 filesystem. --> support symbolic link
3 参考文档
##########