我的live安装脚本
#livecd安装脚本,主要使用cp安装,好处就是在livecd上的修改可以带到安装后#由于嵌套很少于是不使用缩进了
#!/bin/bash
#脚本和fstab、fstab2(两个一样的fstab文件,只有注释或只有注释和tmpfs)放在/install下才可正常工作
#/target是挂载新的/用的目录
#依赖dialog
cd /install
dialog --msgbox "欢迎使用安装脚本!" 10 22
dialog --msgbox "在开始安装之前,请先使用GParted、fdisk、cfdisk、parted等工具分区、格式化。安装程序只进行挂载、复制文件和配置" 10 22
dialog --yesno "继续安装?" 5 22
if [ $? = 1 ]
then
exit
fi
dialog --title "分区信息——确认安装到的分区" --msgbox "`fdisk -l`" 40 60
dialog --title "选择模式" --yesno "是否自定/etc/fstab?(否则将只指定/) <由于安装程序不能按fstab来挂载分区,所以不能把/拆开,编辑fstab只能挂载公用分区和swap>" 10 30
if [ $? = 0 ]
then
dialog --title "选择编辑器" --menu "" 20 50 5 gedit "图形界面编辑器,简单" nano "字符界面编辑器,简单" vi "高级" 2>./it
RLP1="`cat ./it`"
$RLP1 ./fstab
dialog --title "选择分区" --inputbox "选择在fstab中指定的/分区(/dev/sdX)" 10 20 2>./it
RLP1="`cat ./it`"
RooT=$RLP1
else
dialog --title "选择分区" --inputbox "选择/分区(/dev/sdX)" 10 20 2>./it
RLP2="`cat ./it`"
RooT=$RLP2
dialog --menu "你的/分区格式?" 20 50 5 ext4 "" ext3 "" xfs "" "其他" "" 2>./it
RLP1="`cat ./it`"
if [ $RLP1 = "其他" ]
then
dialog --inputbox "你的/分区格式?(fstab中的)" 10 20 2>./it
RLP1="`cat ./it`"
fi
cp ./fstab2 ./fstab
echo "$RLP2 / $RLP1 defaults 0 0" >> ./fstab
fi
echo "挂载/分区:$RooT"
mount $RooT /target
echo "复制文件"
echo "复制/usr"
cp -rvPp /usr/ /target/usr/
echo "复制/var"
cp -rvPp /var/ /target/var/
echo "复制/etc"
cp -rvPp /etc/ /target/etc/
echo "复制/etc/fstab"
cp -v ./fstab /target/etc/
echo "复制/lib"
cp -rvPp /lib/ /target/lib/
echo "复制/bin"
cp -rvPp /bin/ /target/bin/
echo "复制/sbin"
cp -rvPp /sbin/ /target/sbin/
echo "复制/opt"
cp -rvPp /opt/ /target/opt/
echo "复制/boot"
cp -rvPp /boot/ /target/boot/
echo "复制/home"
cp -rvPp /home/ /target/home/
echo "复制/selinux"
cp -rvPp /selinux/ /target/selinux/
echo "复制/root"
cp -rvPp /root/ /target/root/
echo "复制/srv"
cp -rvPp /srv/ /target/srv/
echo "复制/下的内核符号链接"
cp -vP /vmlinuz /target/
cp -vP /initrd.img /target/
echo "创建必要的目录"
mkdir -v /target/mnt
mkdir -v /target/tmp
mkdir -v /target/run
mkdir -v /target/proc
mkdir -v /target/sys
mkdir -v /target/dev
mkdir -v /target/cdrom
mkdir -v /target/media
echo "进行chroot之前准备工作"
mount --bind /dev /target/dev
mount --bind /proc /target/proc
mount --bind /sys /target/sys
dialog --yesno "复制文件已完成,是否安装Grub2启动引导器?" 10 20
if [ $? = 0 ]
then
dialog --inputbox "输入安装启动引导器的设备(一般硬盘是/dev/sda)" 10 25 2>./it
Gd="`cat ./it`"
chroot /target/ grub-install $Gd
chroot /target/ update-grub
echo "Grub安装完成"
fi
echo "设定您的密码(用户名root)"
echo "密码在屏幕上不会有任何显示,只管输。"
chroot /target/ passwd root
dialog --yesno "是否chroot进入之进行配置?(高级)" 10 20
if [ $? = 0 ]
then
echo "现在是chroot状态,exit退出"
chroot /target /bin/bash
fi
echo "回滚chroot之前的准备工作"
umount /target/dev
umount /target/proc
umount /target/sys
echo "卸载$RooT"
umount /target
echo "安装完成" P.S.:复制/下的内核符号链接 这个是给ubuntu专门准备的 KDE 下面终端用 dialog 反而画蛇添足很难看。
Gnome 美观和某些地方一直是落后的。
Linux 下面 cp 是非常慢的,你要么 dd 要么还是 unsquashfs 吧。
不压缩的 Live 不是更大,Live 我觉得应该不可修改,否则你自己保证下次安装时它还是原来那个完全稳定的。
回复 3# haulm 的帖子
这个我给ubuntu(unity)和arch(compiz+xfce套件)用的。。cp不见得非常慢,尤其是虚拟机安装的时候
其实是修改的部分写到ram里了,下次安装还是一样的。
总之这是给我的系统设计的,不适合kde/magic是挺正常的
回复 3# haulm 的帖子
我感觉我省事省大了。。grub4dos光盘+casper的live,丝毫不用担心liveusb的问题:-D回复 5# 910JQK 的帖子
cp 的慢是因为它一个个文件确认并复制,Linux 下块复制或是解压要快的多。win 上面复制快其实也是它有进行压缩,只是你不知道而已。
页:
[1]