Pages

Saturday, 25 June 2016

用syslinux/extlinux制作usb启动盘

isolinux,syslinux,pxelinux,extlinux的区别

isolinux 用于cdrom启动
pxelinux 用于网络启动
syslinux/extlinux 用于u盘或者cf卡启动

不过貌似syslinux现在越来越强大,任何都可以支持,cdrom,usb,gpxe,memdisk引导等。

什么是extlinux

extlinux是由syslinux派生来的,可以从ext2和ext3,btrfs, linux文件系统启动系统。
其工作方式和syslinux差不多,只是做了了很小的修改。
也就是说,使用extlinux先要格式化为fat32文件系统,然后直接安装。
既可以当usb启动盘,同时又不影响u盘使用。

extlinux

(1) 下载syslinux的包。已经编译好可以直接运行。
http://www.kernel.org/pub/linux/utils/boot/syslinux/

ubuntu发行版只需要apt-get install syslinux extlinux -y

(2) 插上U盘,并挂载上。(注意:必须先挂载上分区,这和syslinux相反!)

(3) 解开syslinux程序包,到extlinux所在的目录,执行:
./extlinux -i /mnt/usbdisk/
其中 -i表示安装,如果已经安装过extlinux,参数可用-u表示更新安装。第二个参数表示安装的路径。
将当前盘保存到主分区表,并且设为启动分区可执行:
cat mbr.bin >/dev/sdb
mbr.bin在syslinux程序包可以找到。

写extlinux引导配置文件extlinux.conf。
格式和syslinux一样,只是名字不同。从iso文件中复制syslinux.cfg出来就可以了。
cp isolinux.cfg extlinux.conf

设置为启动分区
parted /dev/sdx toggle 1 boot

分区

using gparted, or from a terminal:
For EXT2/3/4 (adjust accordingly), it would be:

# cfdisk /dev/sdx
# mkfs.ext4 /dev/sdx1
# e2label /dev/sdx1 USB_STICK
For FAT32, install the dosfstools package and run:

# cfdisk /dev/sdx
# mkfs.vfat -F32 /dev/sdx1
# dosfslabel /dev/sdx1 USB_STICK

参考archlinux的usb制作


#Where somefolder is the USB drive's mount point. Do not skip this step.
cd /media/somefolder/arch/boot/syslinux
#Type it exactly as you see it, including the dot.
extlinux --install .
dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/mbr.bin of=/dev/sdx
parted /dev/sdx toggle 1 boot

syslinux安装到u盘

syslinux --directory /boot/syslinux/ --install /dev/sdb1

syslinux.conf

syslinux 按照如下顺序搜索配置文件

/boot/syslinux/syslinux.cfg
/syslinux/syslinux.cfg
/syslinux.cfg