製作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-64-bit.iso .

腳本
#!/bin/bash

workdir=debian
volume="Debian sid 64-bit"
name=debian-sid-64-bit.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

 

arrow
arrow
    全站熱搜

    Mint Fans 發表在 痞客邦 留言(1) 人氣()