domenica 12 luglio 2009

archlinux live con gnome

Oggi ho deciso di costruirmi la mia archlinux live , per la costruzione della iso live ho utilizzato il progetto larch che anche se non aggiornatissimo permette una notevole personalizzazione.

Per operare con larch necessita che sul vostro computer sia installato archlinux , la configurazine da me eseguita è un po diversa dalle linee guida del progetto però funziona lo stesso, al posto di xfce4 ho scelto gnome anche se in versione ridotta.

Incominciamo creiamo all'interno della nostra home una cartella di nome live, apriamo il nostro fidato terminale.

cd
mkdir live

all'interno della cartella live che ci servirà per lanciare gli script di larch create un file di testo di nome larh-setup

cd live
nano larch-setup

#! /bin/bash
#
# larch-setup
#
# Author: Michael Towers
#
# This file is part of the larch project.
#
# larch is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# larch is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with larch; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
#----------------------------------------------------------------------------
# 2008.12.09

REPO="ftp://ftp.berlios.de/pub/larch/larch5.3/i686"
#REPO=file://$( readlink -f larchrepo )

if [ "$1" = "-h" ]; then
echo "larch-setup -h"
echo " # Display this information."
echo "larch-setup"
echo " # Set up a larch build environment in the current directory."
echo " # x86_64 should be detected automatically."
echo
echo "This script unpacks larch, so that 'mklarch', etc.,"
echo "can be run from this directory, without installing."
echo "It also generates appropriate symlinks."
echo
echo "If there is no pacman in the PATH, a package containing a"
echo "statically linked version of pacman and the configuration"
echo "files it needs can be downloaded from the larch site and"
echo "unpacked in the larch/run directory."
echo "Also repo-add is extracted there and a pacman.conf is generated in"
echo "the current directory, presenting a dialog for choosing the package"
echo "server."
echo "You can use an existing pacman.conf by placing this in the current"
echo "directory."
echo
exit
fi

sysarch="$( uname -m )"
if [ "${sysarch}" != "x86_64" ]; then
sysarch="i686"
fi

# Get path to this directory, via the location of this script
fullpath="$( readlink -f $0 )"
scriptdir="$( dirname ${fullpath} )"

# Just in case ...
cd ${scriptdir}

if [ -d larch ]; then
echo "ERROR: larch directory exists already"
exit 1
fi

fetch ()
{
if [ -n "$( echo ${REPO} | grep "file://" )" ]; then
base="$( echo ${REPO} | sed "s|file://||" )"
cp ${base}/$1 .
else
wget ${REPO}/$1
fi
}

if ! [ -f larch-*.pkg.tar.gz ]; then
rm -rf tmp
mkdir tmp
cd tmp
fetch larch5.db.tar.gz
tar -xzf larch5.db.tar.gz
d=$( ls | grep "^larch-5" )
larchpak=$( grep -A 1 -e "%FILENAME%" ${d}/desc | grep -v "%" )
cd ${scriptdir}
fetch ${larchpak}
fi

rm -rf tmp
mkdir tmp
tar -xzf larch-5*.pkg.tar.gz -C tmp
mv tmp/opt/larch .
rm -rf tmp

ln -s ${scriptdir}/larch/run/mklarch mklarch
ln -s ${scriptdir}/larch/run/larchify larchify
ln -s ${scriptdir}/larch/run/inpacs inpacs
ln -s ${scriptdir}/larch/run/usb2bootiso usb2bootiso

# Check that pacman is available.
if ! which pacman &>/dev/null; then
# Fetch the pacman package from the larch site if there isn't a
# pacman script in larch/run
if ! [ -f larch/run/pacman ]; then
fetch pacman-pack.tar.gz
if ! [ -f pacman-pack.tar.gz ]; then
echo "ERROR: couldn't fetch pacman package"
exit 1
fi
# Extract the needed files from the package
tar -xzf pacman-pack.tar.gz
cp larch/config/mirrorlist repolist
if ! [ -f pacman.conf ]; then
cp larch/config/pacman.conf pacman.conf
# Select a package server
larch/run/getPackageServer -i repolist pacman.conf
cp pacman.conf pacman.conf.0
# Prevent error messages because of missing /etc/pacman.d/mirrorlist
sed 's|^\(Include =\)|#\1|' -i pacman.conf
fi
fi
fi

salvate il file dategli i permessi di esecuzione, scrittura.

sudo chmod a+rwx larch-setup

eseguite lo script da utente amministratore io utilizzo sudo per tale scopo.

sudo ./larch-setup

alla fine lo script creerà all'interno della cartella live due nuovi script di nome mklarck larchifi ed una elementare struttura di distribuzione con all'interno dei file di configurazione utili per la creazione della iso finale.

Entriamo dentro la cartella xmini modifichiamo il file che si trovano all'interno.

cd $HOME/live/larch/profiles/xmini/

incominciamo con il file addedpacks questo file indica al sistema i vari pacchetti da installare per la costruzione della live, il nel mio caso ho tolto tutto quello che si rifaceva ad xfce4 sostituendolo con gnome eccovi il mio file.
# These are needed to build a live CD
larch-live
squashfs-tools
lzop

syslinux

aufs2-util

# In case necessary (depends on kernel)
#aufs2

# To eject a cd
eject

# Useful for use as installer, etc.
ntfsprogs
parted

sudo

lsof
cdrkit
dvd+rw-tools

base-devel
larch

# generally useful tools which don't require X
#mtools is required by syslinux
openssh
dosfstools
lynx
mc
unzip
zip
alsa-lib
alsa-oss
alsa-utils
cdparanoia
cdrdao
cups
ntfs-3g

# Xorg packages
xorg-server
xorg-xkb-utils
xorg-xauth

xorg-server-utils
xorg-xinit
xorg-input-drivers
xf86-video-vesa
xf86-video-vga
xf86-video-ati
xf86-video-intel


xf86-input-synaptics
hal
fam

# X apps
luser
localed
xkmap
gparted

larchin

firefox
thunderbird

# gnome
gnome
file-roller
gnome-terminal
unrar
alacarte

#desktop-file-utils is required by thunar, etc.
#geany

ttf-dejavu
ttf-ms-fonts
ttf-bitstream-vera
gdm

ho dovuto pure inserire le varie schede grafiche da installare perchè se si lascia tutto in autamatico si creano dei conflitti con i pacchetti libdrm e libgl vi consiglio quindi se volete utilizzare la live su sistemi con schede video intel ed ati di eliminare tutto quello che riguarda le schede grafiche nvidia, la stessa cosa se siete intenzionate ad utilizzare solo schede nvidia eliminate tutto quello riguardante ati o intel.

inserite pure nel file gdm al posto di slim i demoni hal, fam gnome-terminal ecc. nel mio caso mi sono limitato ad installare una versione ridotta di gnome potete se volete seguire la strada di gnome completo.

non modifichiamo gli altri file di testo lo faremo in un secondo momento.

lanciamo lo script mklarch quasi sicuramente lo script si bloccherà non fateci caso quello che ci serve è che crei la nostra struttura di base su cui lavorare.

sudo ./mklarch -p larch/profiles/xmini/

il comando creerà un nuovo utente di nome larchroot con all'interno la struttura di larch entriamo in questa nuova cartella con il comando chroot e modifichiamo tutti i file di configurazione, praticamente sono gli stessi di archlinux.

sudo chroot /home/larchroot/

ora che ci troviamo dentro la nostra gabbia dorata costruiamo la nosta live modificando i vari file creano un nuovo utente, inseriamo una nuova password di root per la distribuzione, scriviamo :

passwd root

inseriamo la password per l'amministratore, creiamo un nuovo utente io lo chiamato archlive, seguite le linee guida per la creazione di un nuovo utente sul sito di archlinux.

adduser.

creato il nuovo utente archlive entriamo con il nuovo utente.

su - archlive

modifichiamo il file .xinitrc indicando gnome come desktop manager.

nano .xinitrc

#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)

exec gnome-session
# exec startkde
# exec startxfce4
# ...or the Window Manager of your choice


modifichiamo il file rc.conf inserendo i vari demoni l'hostname ecc. vi posto il mio, loggatevi come utente amministratore per operare.

su -

nano /etc/rc.conf


#
# /etc/rc.conf - Main Configuration for Arch Linux
#

# -----------------------------------------------------------------------
# LOCALIZATION
# -----------------------------------------------------------------------
#
# LOCALE: available languages can be listed with the 'locale -a' command
# HARDWARECLOCK: set to "UTC" or "localtime"
# USEDIRECTISA: use direct I/O requests instead of /dev/rtc for hwclock
# TIMEZONE: timezones are found in /usr/share/zoneinfo
# KEYMAP: keymaps are found in /usr/share/kbd/keymaps
# CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US)
# CONSOLEMAP: found in /usr/share/kbd/consoletrans
# USECOLOR: use ANSI color sequences in startup messages
#
LOCALE="it_IT.utf8"
HARDWARECLOCK="localtime"
USEDIRECTISA="no"
TIMEZONE="Europe/Rome"
KEYMAP="it"
CONSOLEFONT=
CONSOLEMAP=
USECOLOR="yes"

# -----------------------------------------------------------------------
# HARDWARE
# -----------------------------------------------------------------------
#
# MOD_AUTOLOAD: Allow autoloading of modules at boot and when needed
# MOD_BLACKLIST: Prevent udev from loading these modules
# MODULES: Modules to load at boot-up. Prefix with a ! to blacklist.
#
# NOTE: Use of 'MOD_BLACKLIST' is deprecated. Please use ! in the MODULES array.
#
MOD_AUTOLOAD="yes"
#MOD_BLACKLIST=() #deprecated
MODULES=()

# Scan for LVM volume groups at startup, required if you use LVM
USELVM="no"

# -----------------------------------------------------------------------
# NETWORKING
# -----------------------------------------------------------------------
#
# HOSTNAME: Hostname of machine. Should also be put in /etc/hosts
#
HOSTNAME="live"

# Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available interfaces.
#
# Interfaces to start at boot-up (in this order)
# Declare each interface then list in INTERFACES
# - prefix an entry in INTERFACES with a ! to disable it
# - no hyphens in your interface names - Bash doesn't like it
#
# DHCP: Set your interface to "dhcp" (eth0="dhcp")
# Wireless: See network profiles below
#
eth0="dhcp"
INTERFACES=(eth0)

# Routes to start at boot-up (in this order)
# Declare each route then list in ROUTES
# - prefix an entry in ROUTES with a ! to disable it
#
gateway="default gw 192.168.0.1"
ROUTES=(!gateway)

# Enable these network profiles at boot-up. These are only useful
# if you happen to need multiple network configurations (ie, laptop users)
# - set to 'menu' to present a menu during boot-up (dialog package required)
# - prefix an entry with a ! to disable it
#
# Network profiles are found in /etc/network.d
#
# This now requires the netcfg package
#
#NETWORKS=(main)

# -----------------------------------------------------------------------
# DAEMONS
# -----------------------------------------------------------------------
#
# Daemons to start at boot-up (in this order)
# - prefix a daemon with a ! to disable it
# - prefix a daemon with a @ to start it up in the background
#
DAEMONS=(syslog-ng network netfs crond hal fam gdm)

ricordatevi di modificare le linee che riguardono il locale , l'hostname io come nome ho scelto live, queste in linea di massima solo le configurazione da eseguire per l'installazione di una normale arch solo che il tutto viene eseguito sotto chroot.

modificate il file hosts, inserendo il nome dell'hostname nel mio caso live.

nano /etc/hosts
#
# /etc/hosts: static lookup table for host names
#

#
127.0.0.1 localhost.localdomain localhost live

# End of file

modificate pure il file mirrorlist, inserendo i server italiani in alto.
#nano /etc/pacman.d/mirrorlist


#
# Arch Linux repository mirrorlist
# Generated on 2009-06-16
#

# Italy
Server = ftp://mi.mirror.garr.it/mirrors/archlinux/$repo/os/i686
Server = http://mi.mirror.garr.it/mirrors/archlinux/$repo/os/i686

vi ricordo che vi trovate sempre all'interno di larchroot.

aggiorniamo il sistema virtuale se c'è ne bisogno installiamo ulteriori software,
portiamo su l'interfaccia di rete.

#/etc/rc.d/network restart
#ifconfig eth0 up
#dhcpcd eth0
#
pacman -Syu

cambiare il file locale.gen, inserendo i settaggi italiani, commentate tutte le altre voci.

#nano /etc/locale.gen

it_IT.UTF-8 UTF-8
it_IT ISO-8859-1
it_IT@euro ISO-8859-15

benissimo credo che adesso il lavoro principale è stato fatto usciamo da chroot scrivendo nel terminale più volte il comando exit.

eliminate queste voci dalla cartella larchroot, si riferiscono ad un'altra impostazione del kernel conviene restare sul kernel base di arch il 2.6.30.

sudo rm -fr /home/larchroot/lib/modules/2.6.29-jumpycursorhack/
sudo rm -fr /home/larchroot/boot/kernel26-jumpycursorhack*
sudo rm -fr /home/larchroot/boot/vmlinuz26-jumpycurs
sudo rm -fr /home/larchroot/boot/System.map26-jumpycursorhack


infine per creare la nostra iso live personalizzata utilizziamo lo script larchify che si trova all'interno della cartella live precedentemente da noi creata.


sudo ./larchify -p /home/larchroot/


aspettate un po se tutto prosegue per il verso giusto vi troverete con la vostra iso dentro la cartella /home/larchroot/.larch/mylivecd.iso.

in seguito basterà entrare con chroot dentro larchroot per creare o modificare la vostra iso, il procedimento è un po laborioso non rispettante in modo assoluto le direttive del progetto larch però funziona, permettendoci di creare la nostra archlinux live.





Nessun commento: