手工打造自己的 Debian/Ubuntu LiveCD [論壇 - Ubuntu 非官方發行版討論]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



手工打造自己的 Debian/Ubuntu LiveCD
會員四級
註冊日期:
2015/9/29 21:19
所屬群組:
已註冊使用者
等級: 16
HP : 0 / 380
MP : 100 / 8325
EXP: 22
離線
製作Live檔案系統

凡是基於debian吃deb的發行板, 應該都可以.

範例: Debian

系統裝好後先執行下面指令清除垃圾
$ sudo apt-get autoremove
$ sudo apt-get autoclean
$ sudo apt-get clean all

然後重開機進入其他Linux系統或live系統, 進行進一步清理垃圾
例如 Debian安裝在sda4
將sda4掛載到/mnt
$ sudo su
# mount /dev/sda4 /mnt

進階清除垃圾
rm -rf /mnt/boot/grub/grub.cfg
rm -rf /mnt/home/*/*
rm -rf /mnt/home/*/.*
rm -rf /mnt/root/*
rm -rf /mnt/root/.*
rm -rf /mnt/lost+found
rm -rf /mnt/media/*
rm -rf /mnt/tmp/*
rm -rf /mnt/tmp/.*
rm -rf /mnt/etc/fstab
rm -rf /mnt/var/log/*
rm /mnt/var/cache/apt/archives/*
rm /mnt/var/lib/apt/lists/*
rm /mnt/var/lib/dbus/machine-id
rm /mnt/etc/machine-id
touch /mnt/etc/machine-id
rm -rf /mnt/var/cache/fontconfig/*

fstab 不刪也無所謂, 有潔癖的話就刪掉吧.

修改主機名稱
名稱可隨意修改. 範例: localhosts
# echo localhosts > /mnt/etc/hostname

然後開始製作Live檔案系統
# cd /
# mksquashfs mnt /存放路徑/filesystem.squashfs

這也等於將系統備份起來.

壓縮完成後, 重開機進到Debian系統.


製作 Live initramfs

$ sudo apt-get install live-boot

依賴套件清單:
live-boot
live-boot-initramfs-tools

$ mkdir debian
$ mkdir debian/live
$ sudo mkinitramfs -o ~/debian/live/initrd.gz
$ sudo cp /boot/vmlinuz-* ~/debian/live/vmlinuz

然後將壓縮好的 filesystem.squashfs 放入 ~/debian/live/

這一步完成其實就可以用Grub4dos方式引導了


製作ISO映像檔

$ mkdir debian/isolinux

isolinux可參考其他發行版製作
新版的sid找不到有isolinux.bin的套件
最快的方法找其他Linux發行版, 將isolinux目錄內容複製到~/debian/isolinux目錄內.
然後修改 isolinux.cfg

---- 支援BIOS/UEFI啟動
isolinux 目錄基本文件
isolinux.bin
isohdpfx.bin
ldlinux.c32
libutil.c32
menu.c32 (大部分是用vesamenu.c32)
isolinux.cfg

EFI 目錄文件
/EFI/BOOT/BOOTx64.EFI
/EFI/BOOT/grubx64.efi

boot目錄文件
/boot/grub/x86_64-efi
/boot/grub/font.pf2
/boot/grub/efi.img
/boot/grub/grub.cfg
/boot/grub/loopback.cfg

$ leafpad ~/debian/isolinux/isolinux.cfg
內容
-----------------------------------------------------------------
UI menu.c32 # 或 UI vesamenu.c32
DEFAULT live
timeout 1

LABEL live
MENU LABEL Start Debian sid
kernel /live/vmlinuz
append boot=live config initrd=/live/initrd.gz live-media-path=/live
-----------------------------------------------------------------

參考文件
https://github.com/Mint-Fans/linux-package/raw/ubuntu/ubuntu-isolinux.tar.gz
https://github.com/Mint-Fans/linux-package/raw/ubuntu/mint-isolinux.tar.gz


建立ISO映像檔
$ sudo apt-get install genisoimage xorriso
$ sudo ln -s /usr/bin/genisoimage /usr/bin/mkisofs

$ cd debian
$ sudo xorriso -as mkisofs -r -J -l -isohybrid-mbr isolinux/isohdpfx.bin -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -V "Debian SID 64-bit" -o ../debian-sid-64bit.iso .

腳本
================================
#!/bin/bash

workdir=debian
volume="Debian SID 64-bit"
name=debian-sid-64bit.iso

cd $workdir
xorriso -as mkisofs -r -J -l \
-isohybrid-mbr isolinux/isohdpfx.bin \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat \
-V "$volume" \
-o ../$name \
.

================================



將ISO映像檔寫到USB
$ lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 201M 0 part
├─sda2 8:2 0 201M 0 part /boot
├─sda3 8:3 0 15G 0 part /
└─sda4 8:4 0 15G 0 part /mnt
sdb 8:16 1 979.8M 0 disk
└─sdb1 8:17 1 978M 0 part /run/media/debian/USB
sr0 11:0 1 1024M 0 rom



例如USB裝置為sdb
# dd if=Debian.iso of=/dev/sdb


USB/HD Grub4dos引導選單
title Debian sid
find --set-root --ignore-floppies --ignore-cd /live/vmlinuz
kernel /live/vmlinuz boot=live
initrd /live/initrd.gz
boot


沒有安裝程式的LiveCD 安裝方法可參考 http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=103692&forum=50

debian系列, 沒有重建fstab的工具, 可以使用archlinux的genfstab.
genfstab 安裝方式
# wget https://projects.archlinux.org/arch-install-scripts.git/snapshot/arch-install-scripts-15.tar.gz
# tar -zxvf arch-install-scripts-15.tar.gz
# cd arch-install-scripts-15
# make
# cp genfstab /usr/bin
# cd ../

建立fstab
# genfstab -U /mnt > /mnt/etc/fstab


如果系統無法重建 initramfs
備份完後移除live-boot
$ sudo apt-get --purge remove live-boot live-boot-initramfs-tools
$ sudo apt-get autoremove

2016/2/12 15:29
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.