You are not logged in.

#1 2010-05-29 19:42:39

godane
Member
From: NH, USA
Registered: 2008-02-03
Posts: 241
Website

A failsafe OS

I'm planing on making a failsafe OS based on my archiso-live project. Its like a frugal install basically. It will save changes and have a way to added packages to the iso. Also this will be using grub2 since it and archiso-live support booting from iso. Makes it easier to install and setup since i only have to copy the iso.

I think this would make a good failsafe OS. I also been using something like this for the last 2 years since i started ArchLinux. I'm interest to see what other people think of this idea.


I'm working on a live cds based on Archlinux. http://godane.wordpress.com/

Offline

#2 2010-05-30 01:21:06

fukawi2
Ex-Administratorino
From: .vic.au
Registered: 2007-09-28
Posts: 6,237
Website

Re: A failsafe OS

Wouldn't that be essentially the same as any of the Rescue CD's out there? (eg, Finnix, Trinity, PLoP, System Rescue CD etc)

Offline

#3 2010-05-30 04:30:21

godane
Member
From: NH, USA
Registered: 2008-02-03
Posts: 241
Website

Re: A failsafe OS

@fukawi2
Basically, yes. But i have some boot options that i don't think most of the recoverly livecds out there have.

Here are some of my ideas:
* A backup system on the hard drive. It either be a extract livecd or the iso image used directly.

* Using modpath boot option the user can add software thats not in the livecd. This is great for having a clean system with custom software. You will be able to added modules to modules folder on your hard drive while keeping your configs in changes folder. You call just install packages like any normal system since changes keeps everything in a changes folder on your hard drive.

* Using changes + modpath boot options just helps in keeping package modules and changes neat.

I'm adding a frugal-install.sh script in the next release of my livecd. Here is the code for it:

#!/bin/bash

. /usr/lib/liblinuxlive
DEVICE=${1} # ex. /dev/sda1
DEVICE_NAME=${DEVICE##*/} # ex. sda1
DEVICE_BASE=${DEVICE_NAME%[0-9]} # ex. sda
GRUB=/boot/grub
LIVEFOLDER="$(dirname $(find /mnt/live/mnt -name base.lzm ))" # ex. sr0 or tmp or findiso
ISO=${2}

if [ "${DEVICE}" = "" ]; then
    echo "help:"
    echo "    ex. ${0} /dev/sda1"
    echo "    ex. ${0} /dev/sda1 name-of-cdimage.iso"
    exit 1    
elif [ ! "$(ls ${DEVICE})" ]; then
    echo "${DEVICE} doesn't exist."
    exit 1
fi

if [ ! -d /mnt/${DEVICE_NAME} ]; then
    mkdir -p /mnt/${DEVICE_NAME}
fi

if [ "$(cat /proc/mounts | grep ${DEVICE})" ]; then
    echo "${DEVICE} mounted already."
else
    mount ${DEVICE} /mnt/${DEVICE_NAME}
fi

if [ ! -d /mnt/${DEVICE_NAME}/boot/grub ]; then
    grub-install --recheck --root-directory=/mnt/${DEVICE_NAME} /dev/${DEVICE_BASE}
fi

#if [ -d /usr/lib/grub/i386-pc ]; then
#    cp -af /usr/lib/grub/i386-pc/* /mnt/${DEVICE_NAME}/boot/grub
#fi

mkdir -p /mnt/${DEVICE_NAME}/changes
mkdir -p /mnt/${DEVICE_NAME}/modules

if [ "${ISO}" != "" ]; then
    if [ -f ${ISO} ]; then
        cp -af ${ISO} /mnt/${DEVICE_NAME}/
        cat <<EOF>>/mnt/${DEVICE_NAME}/boot/grub/grub.cfg
set default=0
set timeout=30
menuentry "ISO +changes +modpath" {
search --set -f "/ISO"
loopback loop "/ISO"
linux (loop)/boot/vmlinuz findiso=/ISO elevator=deadline lang=en_US keyb=us session=xfce load=overlay usbdelay=5 nonfree=no xdisplay=old xdriver=no changes=DEVICE/changes modpath=modules
initrd (loop)/boot/initrd.img
}

menuentry "ISO +changes" {
search --set -f "/ISO"
loopback loop "/ISO"
linux (loop)/boot/vmlinuz findiso=/ISO elevator=deadline lang=en_US keyb=us session=xfce load=overlay usbdelay=5 nonfree=no xdisplay=old xdriver=no changes=DEVICE/changes
initrd (loop)/boot/initrd.img
}

menuentry "ISO failsafe" {
search --set -f "/ISO"
loopback loop "/ISO"
linux (loop)/boot/vmlinuz findiso=/ISO elevator=deadline lang=en_US keyb=us session=xfce load=overlay nohd usbdelay=5 nonfree=no xdisplay=old xdriver=vesa
initrd (loop)/boot/initrd.img
}
EOF
        sed -i "s|ISO|${ISO##*/}|g" /mnt/${DEVICE_NAME}/boot/grub/grub.cfg
        sed -i "s|DEVICE|${DEVICE}|g" /mnt/${DEVICE_NAME}/boot/grub/grub.cfg

    fi
elif [ -d ${LIVEFOLDER} ]; then
    cp -af ${LIVEFOLDER} /mnt/${DEVICE_NAME}/${LIVECDNAME}
    if [ -f /mnt/${DEVICE_NAME}/boot/grub/grub.cfg ]; then
        mv -f /mnt/${DEVICE_NAME}/boot/grub/grub.cfg /mnt/${DEVICE_NAME}/boot/grub/grub.cfg
    fi
        cat <<EOF>>/mnt/${DEVICE_NAME}/boot/grub/grub.cfg
set default=0
set timeout=30
menuentry "LIVECDNAME +changes +modpath" {
linux /LIVECDNAME/boot/vmlinuz from=DEVICE/LIVECDNAME elevator=deadline lang=en_US keyb=us session=xfce load=overlay usbdelay=5 nonfree=no xdisplay=old xdriver=no changes=DEVICE/changes modpath=modules
initrd /LIVECDNAME/boot/initrd.img
}

menuentry "LIVECDNAME +changes" {
linux /LIVECDNAME/boot/vmlinuz from=DEVICE/LIVECDNAME elevator=deadline lang=en_US keyb=us session=xfce load=overlay usbdelay=5 nonfree=no xdisplay=old xdriver=no changes=DEVICE/changes
initrd /LIVECDNAME/boot/initrd.img
}

menuentry "LIVECDNAME failsafe" {
linux /LIVECDNAME/boot/vmlinuz from=DEVICE/LIVECDNAME elevator=deadline lang=en_US keyb=us session=xfce load=overlay nohd usbdelay=5 nonfree=no xdisplay=old xdriver=vesa
initrd /LIVECDNAME/boot/initrd.img
}
EOF
    sed -i "s|LIVECDNAME|${LIVECDNAME}|g" /mnt/${DEVICE_NAME}/boot/grub/grub.cfg
    sed -i "s|DEVICE|${DEVICE}|g" /mnt/${DEVICE_NAME}/boot/grub/grub.cfg

fi

I hope this helps.


I'm working on a live cds based on Archlinux. http://godane.wordpress.com/

Offline

Board footer

Powered by FluxBB