Step 1 – Installing the necessary software
apt-get install xorriso live-build syslinux squashfs-tools
Step 2 – Create a basic filesystem
mkdir ~/livework && cd ~/livework
debootstrap --arch=amd64 wheezy chroot http://ftp.debian.org/debian/
or debootstrap --arch=amd64 jessie chroot http://ftp.cn.debian.org/debian/
Step 3 – Chroot
cd ~/livework && chroot chroot
mount none -t proc /proc
mount none -t sysfs /sys
mount none -t devpts /dev/pts
export HOME=/root
export LC_ALL=C
export PS1="\e[01;31m(live):\W \$ \e[00m"
apt-get install dialog dbus
dbus-uuidgen > /var/lib/dbus/machine-id
apt-get install linux-image-amd64
apt-get install live-boot parted efibootmgr ssh expect ctorrent dosfstools
modify hostname and autologin(/etc/inittab) /etc/rc.local and add live-run script in /usr/sbin(chmod 755)
passwd
apt-get clean
rm /var/lib/dbus/machine-id && rm -rf /tmp/*
kill dbus process
umount /proc /sys /dev/pts
exit
Step 4 – ISOLINUX
cd ~/livework
mkdir -p binary/live && mkdir -p binary/isolinux
or mkdir -pv binary/{live,isolinux}
cp chroot/boot/vmlinuz-3.16.0-4-amd64 binary/live/hyperman-clone-livecd.vmlinuz
cp chroot/boot/initrd.img-3.16.0-4-amd64 binary/live/hyperman-clone-livecd.initrd
mksquashfs chroot binary/live/hyperman-clone-livecd.squashfs -comp xz -e boot
cp /usr/lib/syslinux/isolinux.bin binary/isolinux/.
cp /usr/lib/syslinux/menu.c32 binary/isolinux/.

vi binary/isolinux/isolinux.cfg

ui menu.c32
prompt 0
menu title Boot Menu
timeout 300

label live-amd64
    menu label ^Live (amd64)
    menu default
    linux /live/vmlinuz
     append initrd=/live/initrd boot=live persistence quiet

label live-amd64-failsafe
    menu label ^Live (amd64 failsafe)
    linux /live/vmlinuz
    append initrd=/live/initrd boot=live persistence config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal

endtext
Step 5 – Building the iso image
cd ~/livework
xorriso -as mkisofs -r -J -joliet-long -l -cache-inodes \
-isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin -partition_offset 16 \
-A "Debian Live"  -b isolinux/isolinux.bin -c \
isolinux/boot.cat -no-emul-boot -boot-load-size 4 \

-boot-info-table -o remaster.iso binary

live-run script:

#!/bin/bash

live_param_file="/proc/cmdline"
live_param_list="$(grep -Ewo "live_run[[:digit:]]*" $live_param_file | uniq | sort -V)"
live_param_list="$(echo $live_param_list)"

if [ -z "$live_param_list" ]; then
  exit 1
else
  echo "Found live_run* parameter in boot parameters and the order to run: $live_param_list" >> /var/log/syslog
  mod_live_param_file="$(mktemp /tmp/mod_live_command.XXXXXX)"
fi

for live_param in $live_param_list; do
    if LC_ALL=C grep -Eq "($live_param=\"|$live_param=\\\\\")" $live_param_file; then
      # For case like live_run="sleep 5" or live_run=\"sleep 5\"
      LC_ALL=C grep -oE -- "$live_param=(\"|\\\\\")[^\"]*(\"|\\\\\")([[:space:]]|$)+" $live_param_file | sed -r -e "s|=\\\\\"|=\"|g" -e "s@\\\\\"([[:space:]]|$)+@\"@g" | sed -r -e 's|^\"(.*)=|\1=\"|g' >> $mod_live_param_file
    elif LC_ALL=C grep -Eq "\"$live_param=" $live_param_file; then
      # For case live: "live_run=sleep 5", "live_run1=mount UUID=XXXYYZZ /mnt"
      LC_ALL=C grep -oE -- "\"$live_param=[^\"]*\"([[:space:]]|$)+" $live_param_file | sed -r -e "s|=\\\\\"|=\"|g" -e "s@\\\\\"([[:space:]]|$)+@\"@g" | sed -r -e 's|^\"(.*=)(.*=.*)*|\1\"\2|g' >> $mod_live_param_file
    else
      # For case like xxx=xyz, no space in its assignment
      LC_ALL=C grep -oE -- "$live_param=([[:alnum:]]|_|-|\.|\/|:)*([[:space:]]|$)+" $live_param_file >> $mod_live_param_file
    fi
done

. $mod_live_param_file

for live_param in $live_param_list; do
  eval live_command=\$$live_param
  if [ -n "$live_command" ]; then
    echo "Now run \"$live_param\": $live_command..." >> /var/log/syslog
    if [ "$(LANG=C file -Ls "$live_command" 2>/dev/null | grep -iE "shell script")" ]; then
      $live_command
    else
      eval $live_command
    fi
  fi
done

[ -f "$mod_live_param_file" ] && rm -f $mod_live_param_file

如何定制支持用户自定义boot参数的基于debian os的live cd相关推荐

  1. linux live cd下载地址,Finnix 120 发布下载,基于Debian的Linux Live CD

    经过5年的中断之后,Finnix发行版随着120版本的发布再次活跃起来.Finnix是一款基于Debian的Linux Live CD,专为系统管理员设计,用于操作硬盘和分区.监控网络和重建引导记录. ...

  2. API 鉴权插件上线!支持用户自定义鉴权插件

    0.4.0 版本更新主要围绕这几个方面: 分组独立的 UI,支持分组 API 鉴权 API 测试支持继承 API 鉴权 支持用户自定义鉴权插件,仅需部分配置即可发布鉴权插件 开始介绍功能之前,我想先和 ...

  3. 阿里开源深度学习框架XDL,面向高维稀疏数据,支持千亿参数训练规模

    安妮 发自 阿里中心 量子位 出品 | 公众号 QbitAI 近日,阿里巴巴首次开源了面向高维稀疏数据的深度学习框架,叫作X-Deep Learning,简称XDL. 阿里表示,XDL基于大数据营销平 ...

  4. 纵享丝滑滑动切换的周月日历,可流畅滑动高度定制,仿小米日历,基于 material-calendarview

    monthweekmaterialcalendarview 项目地址:idic779/monthweekmaterialcalendarview  简介:纵享丝滑滑动切换的周月日历,可流畅滑动高度定制 ...

  5. C#为什么支持协变的参数只能用于方法的返回值?支持逆变的参数只能用于方法参数?...

    "TParent不能安全转换成TSub",是这两个问题的共同原因. 我们定义一个接口IFoo. interface IFoo<T>     {         void ...

  6. HDFS命令行客户端使用,命令行客户端支持的命令参数,常用命令参数介绍

    3.HDFS的shell(命令行客户端)操作 3.1 HDFS命令行客户端使用 HDFS提供shell命令行客户端,使用方法如下: [toto@hadoop hadoop-2.8.0]$ hdfs d ...

  7. 深度 linux支持debian,基于Debian的Linux发行版安装深度音乐及其插件

    在Linux上想要一个完美的,并且能够在线的音乐播放器是很头疼的事情.找了很久,还是觉得Deepin的深度音乐是非常不错的选择.不仅可以播放本地,还可以安装很多插件,包括网易云,百度音乐等等. 下面我 ...

  8. c语言不定长参数函数,DEFUN 如何定义支持不定长参数的函数

    当前位置:我的异常网» C语言 » DEFUN 如何定义支持不定长参数的函数 DEFUN 如何定义支持不定长参数的函数 www.myexceptions.net  网友分享于:2015-07-15   ...

  9. [js]windows下通过命令行运行javascript脚本,支持命令行参数

    windows下通过命令行运行javascript脚本,支持命令行参数 js作为最受欢迎的语言,以其方便.通用.功能强大的特点,可以给大家在实际使用的过程中带来很大的便利. 下面是本文从实际应用的角度 ...

  10. 查看当前jdk所支持的jvm参数

    查看当前jdk所支持的jvm参数 查看JVM全部能够设置的参数及它们的默认值(这个参数则能够显示全部可设置的参数及它们的值.不过这个参数自己只从JDK 6 update 21开始才能够用,以前的JDK ...

最新文章

  1. 科学界最牛的合影在这,能认全的都是大神!
  2. PyTorch | (3)Tensor及其基本操作
  3. 2021年春季学期-信号与系统-第四次作业参考答案-第三小题
  4. c++两个vector合并_这才是真正的 Git:分支合并
  5. Java虚拟机学习 - 类加载器(ClassLoader)
  6. 汇编: 用int中断改变ip,实现loop循环
  7. 数据库事务的隔离级别
  8. 前端组件:layui
  9. vue - blog开发学习6
  10. RocketMQ消息丢失场景及解决办法,已拿offer入职
  11. linux指令:时间与日期
  12. Linux源码下Makefile详解(参照Documentation\kbuild\makefiles.txt和资料)-转
  13. 【Spring第七篇】Java配置类:JavaConfig
  14. nginx常见配置详解
  15. 《数据挖掘概念与技术》学习笔记
  16. ApacheMaven使用技巧
  17. 数据库数据迁移的3种方案学习
  18. 金融行业基于 DELL EMC 高端存储的核心系统实践经验分享
  19. 新唐 N76E003 单片机8051汇编 PWM测试程序
  20. cpu外部三大总线的解释和作用

热门文章

  1. 2018年度AI评选揭晓!10大领航企业,50家明星公司,10佳投资机构
  2. MacBook下载的软件显示无法打开“某某某”,因为Apple无法检查其是否包含恶意软件。”的解决办法
  3. 搜狗微信公众号文章搜索器---网赚必备工具
  4. Kubernetes 学习总结(27)—— Kubernetes 安装 Redis 集群的两个方案
  5. Java 实现图片上面添加文字
  6. linux的intel显卡驱动下载地址,英特尔®嵌入式媒体和显卡驱动程序(英特尔® EMGD)...
  7. 置信区间的临界值_在用正态分布进行置信区间估计时,临界值2.58所对应的置信水平是( )。...
  8. 解决:tomcat部署遇到问题:One or more Filters failed to start. Full details will be found in the appro
  9. 编译一个OrangeFox(橙狐) recovery
  10. Linux克隆后自动改uuid,解决克隆 Linux虚拟机后修改后的机器的ip、mac、uuid失败的问题...