1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654 |
- #*******************************************************************************
- # Written by Thierry Nuttens
- # Copyright Thierry Nuttens 2010-2011-2012-2013-2014-2015-2016
- # Installation script for the NuTyX system
- # Based on LFS scripts
- #*******************************************************************************
- # Function - boot_mesg()
- #
- # Purpose: Sending information from bootup scripts to the console
- #
- # Inputs: $1 is the message
- # $2 is the colorcode for the console
- #
- # Outputs: Standard Output
- #
- # Dependencies: - sed for parsing strings.
- # - grep for counting string length.
- #
- # Todo:
- #*******************************************************************************
- boot_mesg() {
- local ECHOPARM=""
- while true
- do
- case "${1}" in
- -n)
- ECHOPARM=" -n "
- shift 1
- ;;
- -*)
- echo "Unknown Option: ${1}"
- return 1
- ;;
- *)
- break
- ;;
- esac
- done
- ## Figure out the length of what is to be printed to be used
- ## for warning messages.
- STRING_LENGTH=$((${#1} + 1))
- # Print the message to the screen
- ${ECHO} ${ECHOPARM} -e "${2}${1}"
- }
- boot_mesg_flush() {
- # Reset STRING_LENGTH for next message
- STRING_LENGTH="0"
- }
- boot_log() {
- # Left in for backwards compatibility
- :
- }
- echo_ok() {
- ${ECHO} -n -e "${CURS_UP}${SET_COL}${BRACKET}[${SUCCESS} OK ${BRACKET}]"
- ${ECHO} -e "${NORMAL}"
- boot_mesg_flush
- }
- echo_info() {
- ${ECHO} -n -e "${CURS_UP}${SET_COL}${BRACKET}[${INFO} INFO ${BRACKET}]"
- ${ECHO} -e "${NORMAL}"
- boot_mesg_flush
- }
- echo_failure() {
- ${ECHO} -n -e "${CURS_UP}${SET_COL}${BRACKET}[${FAILURE} FAIL ${BRACKET}]"
- ${ECHO} -e "${NORMAL}"
- boot_mesg_flush
- }
- echo_warning() {
- ${ECHO} -n -e "${CURS_UP}${SET_COL}${BRACKET}[${WARNING} WARN ${BRACKET}]"
- ${ECHO} -e "${NORMAL}"
- boot_mesg_flush
- }
- print_error_msg() {
- echo_failure
- ERREUR="yes"
- # $i is inherited by the rc script
- boot_mesg -n " FAILURE:\n\n You should not read this error.\n\n" ${FAILURE}
- boot_mesg -n " It means something went wrong with the installation"
- boot_mesg -n " of ${i} "
- boot_mesg_flush
- boot_mesg -n " Thanks to inform us"
- boot_mesg -n " via the website http://www.nutyx.org."
- boot_mesg " Thanks again for your collaboration.\n"
- boot_mesg_flush
- boot_mesg -n "Press Enter to continue..." ${INFO}
- boot_mesg "" ${NORMAL}
- read ENTER
- end
- exit 1
- }
- #*******************************************************************************
- # Function - log_success_msg "message"
- #
- # Purpose: Print a success message
- #
- # Inputs: $@ - Message
- #
- # Outputs: Text output to screen
- #
- # Dependencies: echo
- #
- # Todo: logging
- #
- #*******************************************************************************
- log_success_msg() {
- ${ECHO} -n -e "${BOOTMESG_PREFIX}${@}"
- ${ECHO} -e "${SET_COL}""${BRACKET}""[""${SUCCESS}"" OK
- ""${BRACKET}""]""${NORMAL}"
- return 0
- }
- #*******************************************************************************
- # Function - log_failure_msg "message"
- #
- # Purpose: Print a failure message
- #
- # Inputs: $@ - Message
- #
- # Outputs: Text output to screen
- #
- # Dependencies: echo
- #
- # Todo: logging
- #
- #*******************************************************************************
- log_failure_msg() {
- ${ECHO} -n -e "${BOOTMESG_PREFIX}${@}"
- ${ECHO} -e "${SET_COL}""${BRACKET}""[""${FAILURE}"" FAIL
- ""${BRACKET}""]""${NORMAL}"
- return 0
- }
- #*******************************************************************************
- # Function - log_warning_msg "message"
- #
- # Purpose: print a warning message
- #
- # Inputs: $@ - Message
- #
- # Outputs: Text output to screen
- #
- # Dependencies: echo
- #
- # Todo: logging
- #
- #*******************************************************************************
- log_warning_msg() {
- ${ECHO} -n -e "${BOOTMESG_PREFIX}${@}"
- ${ECHO} -e "${SET_COL}""${BRACKET}""[""${WARNING}"" WARN
- ""${BRACKET}""]""${NORMAL}"
- return 0
- }
- #*******************************************************************************
- # Function - unmountall
- #
- # Purpose: unmount all the mounted disks and partitions
- #
- # Inputs: $1 the full path of the Distro
- #
- # Outputs: Standard Output
- #
- # Dependencies: chroot
- #
- #*******************************************************************************
- unmountall() {
- if [ -d "$DEPOT_CD/depot" ]; then
- umount ${{FOLDER}/${DEPOT}
- umount `cat /tmp/depot`
- fi
- umount ${FOLDER}/run
- umount ${FOLDER}/dev/pts
- umount ${FOLDER}/dev
- umount ${FOLDER}/proc
- umount ${FOLDER}/sys
- }
- #*******************************************************************************
- # Function - setup_chroot
- #
- # Purpose: Enter the NuTyX Distribution
- #
- # Inputs: $1 the full path of the Distro
- #
- # Outputs: Standard Output
- #
- # Dependencies: chroot
- #
- #*******************************************************************************
- setup_chroot() {
- cp /etc/resolv.conf ${FOLDER}/etc/resolv.conf
- mount --bind /dev ${FOLDER}/dev
- mount -t devpts devpts ${FOLDER}/dev/pts
- mount -t proc proc ${FOLDER}/proc
- mount -t sysfs sysfs ${FOLDER}/sys
- mount -t tmpfs tmpfs ${FOLDER}/run
- if [ -h ${FOLDER}/dev/shm ]; then
- mkdir -p ${FOLDER}/$(readlink ${FOLDER}/dev/shm)
- fi
- }
- enter_chroot() {
- echo "
- ******************************
- Chroot path: $DEVICE
- ******************************"
- chroot ${FOLDER} /usr/bin/env -i \
- HOME=/root \
- TERM="$TERM" \
- PS1='\u:\w\$ ' \
- /bin/bash --login
- }
- #*******************************************************************************
- # Function - install_pkg()
- #
- # Purpose: Install the selected package
- #
- # Inputs: $1 is the package
- # $2 is the group
- # $3 Option to install, normally nothing except for grub
- # Outputs: Standard Output
- #
- # Dependencies: - wget
- # - boot_mesg
- # - pkgadd
- # Todo:
- #*******************************************************************************
- install_pkg() {
- if $TMP/usr/bin/pkginfo -r $FOLDER -i| grep "^$1 " > /dev/null; then
- boot_mesg "$1 is already install on $DEVICE..."
- echo_info
- else
- packagefileToDownload=`getPackageName ${1}`
- boot_mesg "Downloading $1..."
- wget ${DEPOT_BASE}/${1}/$packagefileToDownload -O $TMP/$packagefileToDownload > /dev/null 2>&1
- echo_info
- # Installing the package
- $TMP/usr/bin/pkgadd -r $FOLDER -i $packagefileToDownload || print_error_msg
- echo_ok
- fi
- }
- #*******************************************************************************
- # Function Check_DiskSpace
- #
- # Purpose: Check the Available space after the using amont
- # Inputs: $1: Mount point
- # $2: Amount in Kbytes going to be used
- #
- # Return: status: 0 when ok
- # 1 not ok
- # Todo:
- #*******************************************************************************
- check_diskspace() {
- # df|grep "$1"|awk '{print $4}'
- let MinSize=$2+100
- let Amoung=`df|grep $FOLDER |awk '{print $(NF-2)}'`/1024 || exit 1
- let Amoung=$Amoung-$MinSize
- status="0"
- if [ $Amoung -lt 0 ]; then
- echo "Not enough space for the installation"
- echo_failure
- status="1"
- else
- echo "Space remind after install: $Amoung Mbytes"
- echo_info
- fi
- if [ $status == "1" ]; then
- check_availablespace $1
- echo "The installation needs $BaseInstall Mbytes minimum"
- end
- exit 1
- fi
- }
- #*******************************************************************************
- # Function check_availablespace
- #
- # Purpose: Printout the Available space on the Mount point
- #
- # Inputs: $1: Mount point
- #
- # Output: Standard Output
- #
- # Todo:
- #*******************************************************************************
- check_availablespace() {
- let TotAmoung=`df|grep "$1"|awk '{print $4}'`/1024 || exit 1
- echo "You have at the moment: ${TotAmoung} Mbytes on the destination disk"
- }
- error() {
- echo ""
- echo " $1"
- echo ""
- rm -rf $TMP
- exit 1
- }
- end() {
- if [ "$ERREUR" == "yes" ]; then
- if [ ! -f $TMP/depot ]; then
- rm -r ${FOLDER}/${DEPOT}
- boot_mesg "Cleaning up temporary files.."
- boot_mesg "Please correct and start again"
- fi
- fi
- cd ~
- unmountall $FOLDER > /dev/null 2>&1
- rm -rf $TMP
- }
- #****************************************************************************
- # Function expect
- #
- # Purpose: Check that the answer is nothing else then the supply
- # arguments
- # Inputs: $1: answer 1
- # $2: answer 2
- # $3: The question to ask
- #
- # Output: Standard Output
- #
- #****************************************************************************
- expect(){
- # echo -n "$3"
- # read answer
- while [ "$answer" != "o" ] && [ "$answer" != "n" ]; do
- echo -n "$3"
- read answer
- done
- }
- #****************************************************************************
- # Function getPackageName
- #
- # Purpose: Get the fullname of the package
- # directory
- # Inputs: $1 is the package name
- #
- # Output: fullname of the archive without url
- # something like: cpio1414074943i686.cards.tar.xz
- #****************************************************************************
- getPackageName() {
- local BUILD_DATE EXT HEAD
- wget ${DEPOT_BASE}/${1}/.PKGREPO -O $TMP/.PKGREPO > /dev/null 2>&1
- HEAD=`head -1 $TMP/.PKGREPO`
- if [ "${HEAD:10:1}" == "#" ]; then
- BUILD_DATE="`echo $HEAD|cut -d "#" -f1`"
- EXT="`echo $HEAD|cut -d "#" -f2`"
- echo "${1}${BUILD_DATE}${ARCH}${EXT}"
- fi
- }
- install_base() {
- for i in \
- nutyx acl attr bash bc binutils bzip2 coreutils curl \
- diffutils expat file findutils flex gcc gdbm \
- gettext glibc gmp gperf grep gzip inetutils kbd lzo \
- libarchive libcap libpipeline mpc mpfr ncurses openssl pam \
- procps-ng psmisc readline sed shadow util-linux xz zlib \
- cards
- do
- install_pkg "$i"
- done
- }
- generate_blfs_bootscripts() {
- [ -f ${FOLDER}/etc/${FOLDER}/etc/blfs-bootscripts ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- echo "scripts=blfs-bootscripts
- scriptsversion=20150924" > ${FOLDER}/etc/blfs-bootscripts
- }
- generate_etc_bashrc() {
- local FILE
- FILE="bashrc"
- [ -f ${FOLDER}/etc/$FILE ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/$FILE
- return
- fi
- cat > ${FOLDER}/etc/$FILE << "EOF"
- # Begin /etc/bashrc
- # Written for Beyond Linux From Scratch
- # by James Robertson <jameswrobertson@earthlink.net>
- # updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
- # System wide aliases and functions.
- # System wide environment variables and startup programs should go into
- # /etc/profile. Personal environment variables and startup programs
- # should go into ~/.bash_profile. Personal aliases and functions should
- # go into ~/.bashrc
- # Provides a colored /bin/ls command. Used in conjunction with code in
- # /etc/profile.
- alias ls='ls --color=auto'
- # Provides prompt for non-login shells, specifically shells started
- # in the X environment. [Review the LFS archive thread titled
- # PS1 Environment Variable for a great case study behind this script
- # addendum.]
- NORMAL="\[\e[0m\]"
- RED="\[\e[1;31m\]"
- GREEN="\[\e[1;32m\]"
- WHITE="\[\e[1;37m\]"
- INFOMACHINE="`date +%H:%M` `uname -m` `uname -r` `whoami`@`uname -n`"
- prompt_command() {
- # Sauvegarde de la pos courante
- tput sc
- # Calcul de la largeur
- let backwash=$(tput cols)-$(echo $INFOMACHINE | wc -m)-2
- # Pos des curseurs à la position Y=0, X=longueur calculée
- tput cup 0 ${backwash}
- # Spécifie la couleur et la casse de la police
- tput setaf 4; tput bold
- # Affiche le chemin entre crochets
- echo -n "["
- # Specifie la couleur du chemin
- tput setaf 6
- # Affiche le chemin complet
- echo -n "$INFOMACHINE"
- tput setaf 4; tput bold
- # Affiche le crochet fermé
- echo -n "]"
- # Remet le curseur à sa place
- tput rc
- }
- PROMPT_COMMAND=prompt_command
- case $TERM in
- xterm|rxvt*)
- TITLEBAR='\[\033]0;\u@\h \007\]'
- ;;
- *)
- TITLEBAR=''
- ;;
- esac
- if [[ $EUID == 0 ]] ; then
- PS1="$TITLEBAR$RED\u [ $NORMAL\w$RED ]# $NORMAL"
- else
- PS1="$TITLEBAR$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
- fi
- # End /etc/bashrc
- EOF
- }
- generate_rc_site() {
- local FILE
- FILE="rc.site"
- [ -f ${FOLDER}/etc/sysconfig/$FILE ] && return
- [ ! -d ${FOLDER}/etc/sysconfig ] && mkdir -pv ${FOLDER}/etc/sysconfig
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/sysconfig/$FILE
- return
- fi
- cat > ${FOLDER}/etc/sysconfig/$FILE << "EOF"
- # rc.site [20:15 i686 3.18.11-NuTyX-iso thierry@nutyx]
- # Optional parameters for boot scripts.
- # Distro Information
- # These values, if specified here, override the defaults
- #DISTRO="Linux From Scratch" # The distro name
- #DISTRO_CONTACT="lfs-dev@linuxfromscratch.org" # Bug report address
- #DISTRO_MINI="LFS" # Short name used in filenames for distro config
- # Define custom colors used in messages printed to the screen
- # Please consult `man console_codes` for more information
- # under the "ECMA-48 Set Graphics Rendition" section
- #
- # Warning: when switching from a 8bit to a 9bit font,
- # the linux console will reinterpret the bold (1;) to
- # the top 256 glyphs of the 9bit font. This does
- # not affect framebuffer consoles
- # These values, if specified here, override the defaults
- #BRACKET="\\033[1;34m" # Blue
- #FAILURE="\\033[1;31m" # Red
- #INFO="\\033[1;36m" # Cyan
- #NORMAL="\\033[0;39m" # Grey
- #SUCCESS="\\033[1;32m" # Green
- #WARNING="\\033[1;33m" # Yellow
- # Use a colored prefix
- # These values, if specified here, override the defaults
- #BMPREFIX=" "
- #SUCCESS_PREFIX="${SUCCESS} * ${NORMAL}"
- #FAILURE_PREFIX="${FAILURE}*****${NORMAL}"
- #WARNING_PREFIX="${WARNING} *** ${NORMAL}"
- # Interactive startup
- #IPROMPT="yes" # Whether to display the interactive boot prompt
- #itime="3" # The amount of time (in seconds) to display the prompt
- # The total length of the distro welcome string, without escape codes
- #wlen=$(echo "Welcome to ${DISTRO}" | wc -c )
- #welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"
- # The total length of the interactive string, without escape codes
- #ilen=$(echo "Press 'I' to enter interactive startup" | wc -c )
- #i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"
- # Set scripts to skip the file system check on reboot
- #FASTBOOT=yes
- # Skip reading from the console
- #HEADLESS=yes
- # Write out fsck progress if yes
- #VERBOSE_FSCK=no
- # Speed up boot without waiting for settle in udev
- #OMIT_UDEV_SETTLE=y
- # Speed up boot without waiting for settle in udev_retry
- #OMIT_UDEV_RETRY_SETTLE=yes
- # Skip cleaning /tmp if yes
- #SKIPTMPCLEAN=no
- # For setclock
- #UTC=1
- #CLOCKPARAMS=
- # For consolelog
- #LOGLEVEL=5
- # For network
- #HOSTNAME=mylfs
- # Delay between TERM and KILL signals at shutdown
- #KILLDELAY=3
- # Optional sysklogd parameters
- #SYSKLOGD_PARMS="-m 0"
- # Console parameters
- #UNICODE=1
- #KEYMAP="de-latin1"
- #KEYMAP_CORRECTIONS="euro2"
- #FONT="lat0-16 -m 8859-15"
- #LEGACY_CHARSET=
- EOF
- }
- generate_udev_retry() {
- local FILE
- FILE="udev_retry"
- [ -f ${FOLDER}/etc/sysconfig/$FILE ] && return
- [ ! -d ${FOLDER}/etc/sysconfig ] && mkdir -pv ${FOLDER}/etc/sysconfig
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/sysconfig/$FILE \
- ${FOLDER}/etc/sysconfig/$FILE
- return
- fi
- cat > ${FOLDER}/etc/sysconfig/$FILE << "EOF"
- ########################################################################
- # Begin /etc/sysconfig/udev_retry
- #
- # Description : udev_retry script configuration
- #
- # Authors :
- #
- # Version : 00.00
- #
- # Notes : Each subsystem that may need to be re-triggered after mountfs
- # runs should be listed in this file. Probable subsystems to be
- # listed here are rtc (due to /var/lib/hwclock/adjtime) and sound
- # (due to both /var/lib/alsa/asound.state and /usr/sbin/alsactl).
- # Entries are whitespace-separated.
- ########################################################################
- rtc
- # End /etc/sysconfig/udev_retry
- EOF
- }
- generate_createfiles() {
- local FILE
- FILE="createfiles"
- [ -f ${FOLDER}/etc/sysconfig/$FILE ] && return
- [ ! -d ${FOLDER}/etc/sysconfig ] && mkdir -pv ${FOLDER}/etc/sysconfig
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/sysconfig/$FILE
- return
- fi
- cat > ${FOLDER}/etc/sysconfig/$FILE << "EOF"
- ########################################################################
- # Begin /etc/sysconfig/createfiles
- #
- # Description : Createfiles script config file
- #
- # Authors :
- #
- # Version : 00.00
- #
- # Notes : The syntax of this file is as follows:
- # if type is equal to "file" or "dir"
- # <filename> <type> <permissions> <user> <group>
- # if type is equal to "dev"
- # <filename> <type> <permissions> <user> <group> <devtype>
- # <major> <minor>
- #
- # <filename> is the name of the file which is to be created
- # <type> is either file, dir, or dev.
- # file creates a new file
- # dir creates a new directory
- # dev creates a new device
- # <devtype> is either block, char or pipe
- # block creates a block device
- # char creates a character deivce
- # pipe creates a pipe, this will ignore the <major> and
- # <minor> fields
- # <major> and <minor> are the major and minor numbers used for
- # the device.
- ########################################################################
- # End /etc/sysconfig/createfiles
- EOF
- }
- generate_modules() {
- local FILE
- FILE="modules"
- [ -f ${FOLDER}/etc/sysconfig/$FILE ] && return
- [ ! -d ${FOLDER}/etc/sysconfig ] && mkdir -pv ${FOLDER}/etc/sysconfig
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/sysconfig/$FILE
- return
- fi
- cat > ${FOLDER}/etc/sysconfig/$FILE << "EOF"
- ########################################################################
- # Begin /etc/sysconfig/modules
- #
- # Description : Module auto-loading configuration
- #
- # Authors :
- #
- # Version : 00.00
- #
- # Notes : The syntax of this file is as follows:
- # <module> [<arg1> <arg2> ...]
- #
- # Each module should be on its own line, and any options that you want
- # passed to the module should follow it. The line deliminator is either
- # a space or a tab.
- ########################################################################
- # End /etc/sysconfig/modules
- EOF
- }
- generate_mouse() {
- local FILE
- FILE="mouse"
- [ -f ${FOLDER}/etc/$FILE ] && return
- [ ! -d ${FOLDER}/etc/sysconfig ] && mkdir -pv ${FOLDER}/etc/sysconfig
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/sysconfig/$FILE
- return
- fi
- cat > ${FOLDER}/etc/sysconfig/$FILE << "EOF"
- MDEVICE="/dev/input/mice"
- PROTOCOL="imps2"
- EOF
- }
- generate_inputrc() {
- local FILE
- FILE="inputrc"
- [ -f ${FOLDER}/etc/$FILE ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/$FILE
- return
- fi
- cat > ${FOLDER}/etc/$FILE << "EOF"
- # Begin /etc/inputrc
- # Modified by Chris Lynn <roryo@roryo.dynup.net>
- # Allow the command prompt to wrap to the next line
- set horizontal-scroll-mode Off
- # Enable 8bit input
- set meta-flag On
- set input-meta On
- # Turns off 8th bit stripping
- set convert-meta Off
- # Keep the 8th bit for display
- set output-meta On
- # none, visible or audible
- set bell-style none
- # All of the following map the escape sequence of the value
- # contained in the 1st argument to the readline specific functions
- "\eOd": backward-word
- "\eOc": forward-word
- # for linux console
- "\e[1~": beginning-of-line
- "\e[4~": end-of-line
- "\e[5~": beginning-of-history
- "\e[6~": end-of-history
- "\e[3~": delete-char
- "\e[2~": quoted-insert
- # for xorg-term
- "\eOH": beginning-of-line
- "\eOF": end-of-line
- # for Konsole
- "\e[H": beginning-of-line
- "\e[F": end-of-line
- # End /etc/inputrc
- EOF
- }
- generate_hosts() {
- local FILE
- FILE="hosts"
- [ -f ${FOLDER}/etc/$FILE ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/$FILE
- return
- fi
- cat > ${FOLDER}/etc/$FILE << "EOF"
- # Begin /etc/hosts
- 127.0.0.1 localhost.localdomain localhost
- 127.0.0.1 nutyx
- # End /etc/hosts
- EOF
- }
- generate_shells() {
- local FILE
- FILE="shells"
- [ -f ${FOLDER}/etc/$FILE ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/$FILE
- return
- fi
- cat > ${FOLDER}/etc/$FILE << "EOF"
- # Begin /etc/shells
- /bin/sh
- /bin/bash
- # End /etc/shells
- EOF
- }
- generate_umask_sh() {
- local FILE
- FILE="umask.sh"
- [ -f ${FOLDER}/etc/profile.d/$FILE ] && return
- [ ! -d ${FOLDER}/etc/profile.d ] && mkdir -pv ${FOLDER}/etc/profile.d
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/profile.d/$FILE
- return
- fi
- cat > ${FOLDER}/etc/profile.d/$FILE << "EOF"
- # By default we want the umask to get set.
- if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
- umask 002
- else
- umask 022
- fi
- EOF
- }
- generate_readline_sh() {
- local FILE
- FILE="readline.sh"
- [ -f ${FOLDER}/etc/profile.d/$FILE ] && return
- [ ! -d ${FOLDER}/etc/profile.d ] && mkdir -pv ${FOLDER}/etc/profile.d
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/profile.d/$FILE
- return
- fi
- cat > ${FOLDER}/etc/profile.d/$FILE << "EOF"
- # Setup the INPUTRC environment variable.
- if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
- INPUTRC=/etc/inputrc
- fi
- export INPUTRC
- EOF
- }
- generate_extrapaths_sh() {
- local FILE
- FILE="extrapaths.sh"
- [ -f ${FOLDER}/etc/profile.d/$FILE ] && return
- [ ! -d ${FOLDER}/etc/profile.d ] && mkdir -pv ${FOLDER}/etc/profile.d
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/profile.d/$FILE
- return
- fi
- cat > ${FOLDER}/etc/profile.d/$FILE << "EOF"
- if [ -d /usr/local/lib/pkgconfig ] ; then
- pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
- fi
- if [ -d /usr/local/bin ]; then
- pathprepend /usr/local/bin
- fi
- if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
- pathprepend /usr/local/sbin
- fi
- if [ -d ~/bin ]; then
- pathprepend ~/bin
- fi
- #if [ $EUID -gt 99 ]; then
- # pathappend .
- #fi
- EOF
- }
- generate_dircolors_sh() {
- local FILE
- FILE="dircolors.sh"
- [ -f ${FOLDER}/etc/profile.d/$FILE ] && return
- [ ! -d ${FOLDER}/etc/profile.d ] && mkdir -pv ${FOLDER}/etc/profile.d
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/profile.d/$FILE
- return
- fi
- cat > ${FOLDER}/etc/profile.d/$FILE << "EOF"
- # Setup for /bin/ls to support color, the alias is in /etc/bashrc.
- if [ -f "/etc/dircolors" ] ; then
- eval $(dircolors -b /etc/dircolors)
- if [ -f "$HOME/.dircolors" ] ; then
- eval $(dircolors -b $HOME/.dircolors)
- fi
- fi
- alias ls='ls --color=auto'
- EOF
- }
- generate_profile() {
- local FILE
- FILE="profile"
- [ -f ${FOLDER}/etc/$FILE ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/$FILE
- return
- fi
- cat > ${FOLDER}/etc/$FILE << "EOF"
- # Begin /etc/profile
- # Written for Beyond Linux From Scratch
- # by James Robertson <jameswrobertson@earthlink.net>
- # modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>
- # System wide environment variables and startup programs.
- # System wide aliases and functions should go in /etc/bashrc. Personal
- # environment variables and startup programs should go into
- # ~/.bash_profile. Personal aliases and functions should go into
- # ~/.bashrc.
- # Functions to help us manage paths. Second argument is the name of the
- # path variable to be modified (default: PATH)
- pathremove () {
- local IFS=':'
- local NEWPATH
- local DIR
- local PATHVARIABLE=${2:-PATH}
- for DIR in ${!PATHVARIABLE} ; do
- if [ "$DIR" != "$1" ] ; then
- NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
- fi
- done
- export $PATHVARIABLE="$NEWPATH"
- }
- pathprepend () {
- pathremove $1 $2
- local PATHVARIABLE=${2:-PATH}
- export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
- }
- pathappend () {
- pathremove $1 $2
- local PATHVARIABLE=${2:-PATH}
- export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
- }
- export -f pathremove pathprepend pathappend
- # Set the initial path
- export PATH=/usr/bin:/bin:/usr/sbin:/sbin
- if [ $EUID -eq 0 ] ; then
- unset HISTFILE
- fi
- # Setup some environment variables.
- export HISTSIZE=1000
- export HISTIGNORE="&:[bf]g:exit"
- # Set some defaults for graphical systems
- export XDG_DATA_DIRS=/usr/share/
- export XDG_CONFIG_DIRS=/etc/xdg/
- # Setup a red prompt for root and a green one for users.
- NORMAL="\[\e[0m\]"
- RED="\[\e[1;31m\]"
- GREEN="\[\e[1;32m\]"
- if [[ $EUID == 0 ]] ; then
- PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
- else
- PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
- fi
- for script in /etc/profile.d/*.sh ; do
- if [ -r $script ] ; then
- . $script
- fi
- done
- unset script RED GREEN NORMAL
- # End /etc/profile
- EOF
- }
- generate_group() {
- [ -f ${FOLDER}/etc/group ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- cat > ${FOLDER}/etc/group << "EOF"
- root:x:0:
- bin:x:1:
- sys:x:2:
- kmem:x:3:
- tape:x:4:
- tty:x:5:
- daemon:x:6:
- floppy:x:7:
- disk:x:8:
- lp:x:9:
- dialout:x:10:
- audio:x:11:gdm
- video:x:12:gdm
- utmp:x:13:
- usb:x:14:
- cdrom:x:15:
- adm:x:16:
- atd:x:17:
- messagebus:x:18:
- lpadmin:x:19:
- named:x:20:
- gdm:x:21:
- fcron:x:22:
- www:x:24:
- apache:x:25:
- smmsp:x:26:
- polkitd:x:27:
- wheel:x:30:root
- exim:x:31:
- postfix:x:32:
- postdrop:x:33:
- mail:x:34:
- vmailman:x:35:
- news:x:36:
- kdm:x:37:
- mysql:x:40:
- postgres:x:41:
- dovecot:x:42:
- dovenull:x:43:
- ftp:x:45:
- proftpd:x:46:
- vsftpd:x:47:
- rsyncd:x:48:
- sshd:x:50:
- stunnel:x:51:
- svn:x:56:
- svntest:x:57:
- pulse:x:58:
- pulse-access:x:59:
- games:x:60:
- kvm:x:61:
- wireshark:x:62:
- lightdm:x:63:
- sddm:x:64:
- scanner:x:70:
- colord:x:71:
- vboxusers:x:80:
- ldap:x:83:
- avahi:x:84:
- avahi-autoipd:x:85:
- netdev:x:86:
- ntp:x:87:
- unbound:x:88:
- nogroup:x:99:
- users:x:999:
- EOF
- }
- generate_passwd() {
- [ -f ${FOLDER}/etc/passwd ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- cat > ${FOLDER}/etc/passwd << "EOF"
- root::0:0:root:/root:/bin/bash
- bin:x:1:1:bin:/dev/null:/bin/false
- lp:x:9:9:Print Service User:/dev/null:/bin/false
- atd:x:17:17:add daemon:/dev/null:/bin/false
- messagebus:x:18:18:D-Bus Message Daemon User:/dev/null:/bin/false
- named:x:20:20:BIND Owner:/home/named:/bin/false
- gdm:x:21:21:GDM Daemon User:/var/lib/gdm:/bin/false
- fcron:x:22:22:Fcron User:/dev/null:/bin/false
- www:x:24:24:Nginx Server:/dev/null:bin/false
- apache:x:25:25:Apache Server:/dev/null:/bin/false
- smmsp:x:26:26:Sendmail Daemon:/dev/null:/bin/false
- polkitd:x:27:27:Policy Kit Daemon User:/etc/polkit-1:/bin/false
- exim:x:31:31:Exim Daemon:/dev/null:/bin/false
- postfix:x:32:32:Postfix Daemon User:/var/spool/postfix:/bin/false
- sendmail:x:34:34:Sendmail Daemon:/dev/null:/bin/false
- vmailman:x:35:35:Vmail Daemon:/dev/null:/bin/false
- news:x:36:36:News Daemon:/dev/null:/bin/false
- kdm:x:37:37:KDM Daemon Owner:/var/lib/kdm:/bin/false
- mysql:x:40:40:MySQL Server:/dev/null:/bin/false
- postgres:x:41:41:PostgreSQL Server:/srv/pgsql/data:/bin/bash
- dovecot:x:42:42:Dovecot unprivileged user:/dev/null:/bin/false
- dovenull:x:43:43:Dovecot login user:/dev/null:/bin/false
- ftp:x:45:45:anonymous_user:/home/ftp:/bin/false
- proftpd:x:46:46:proftpd:/srv/ftp:/usr/bin/proftpdshell
- vsftpd:x:47:47:vsftpd User:/dev/null:/bin/false
- rsyncd:x:48:48:rsyncd Daemon:/home/rsync:/bin/false
- sshd:x:50:50:sshd PrivSep:/var/lib/sshd:/bin/false
- stunnel:x:51:51:stunnel Daemon:/var/lib/stunnel:/bin/false
- svn:x:56:56:SVN Owner:/home/svn:/bin/false
- games:x:60:60:Games High Score Owner:/var/games:/bin/false
- lightdm:x:63:63:Light Display Manager:/var/lib/lightdm:/sbin/nologin
- sddm:x:64:64:Simple Desktop Display Manager:/var/lib/sddm:/bin/false
- colord:x:71:71:Color Daemon Owner:/var/lib/colord:/bin/false
- ldap:x:83:83:OpenLDAP Daemon Owner:/var/lib/openldap:/bin/false
- avahi:x:84:84:Avahi Daemon Owner:/var/run/avahi-daemon:/bin/false
- avahi-autoipd:x:85:85:Avahi autoip Daemon:/:/var/run/avahi-autoipd:/bin/false
- ntp:x:87:87:Network Time Protocol:/var/lib/ntp:/bin/false
- unbound:x:88:88:Unbound DNS resolver:/var/lib/unbound:/bin/false
- anonymous:x:98:99:Unprivileged User:/dev/null:/bin/false
- nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
- EOF
- }
- generate_fstab() {
- local FILE
- FILE="fstab"
- [ -f ${FOLDER}/etc/$FILE ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/$FILE
- return
- fi
- cat > ${FOLDER}/etc/$FILE << "EOF"
- # Begin /etc/fstab
- # file system mount-point type options dump fsck
- # order
- # Exemple de montage nfs
- # 192.168.254.254:/home/thierry /home/thierry nfs rw,vers=3,_netdev,rsize=8192,wsize=8192 0 0
- proc /proc proc nosuid,noexec,nodev 0 0
- sysfs /sys sysfs nosuid,noexec,nodev 0 0
- devpts /dev/pts devpts gid=5,mode=620 0 0
- tmpfs /run tmpfs defaults 0 0
- devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
- EOF
- }
- generate_dmrc() {
- local FILE
- FILE=".dmrc"
- [ -f ${FOLDER}/etc/skel/$FILE ] && return
- [ ! -d ${FOLDER}/etc/skel ] && mkdir -pv ${FOLDER}/etc/skel
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/skel/$FILE
- return
- fi
- cat > ${FOLDER}/etc/skel/$FILE << "EOF"
- [Desktop]
- Session=default
- EOF
- }
- generate_bashrc() {
- local FILE
- FILE=".bashrc"
- [ -f ${FOLDER}/etc/skel/$FILE ] && return
- [ ! -d ${FOLDER}/etc/skel ] && mkdir -pv ${FOLDER}/etc/skel
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/skel/$FILE
- return
- fi
- cat > ${FOLDER}/etc/skel/$FILE << "EOF"
- # Personal aliases and functions.
- # Personal environment variables and startup programs should go in
- # ~/.bash_profile. System wide environment variables and startup
- # programs are in /etc/profile. System wide aliases and functions are
- # in /etc/bashrc.
- if [ -f "/etc/bashrc" ] ; then
- source /etc/bashrc
- fi
- if [ $EUID -eq 0 ] ; then
- alias del='cards remove'
- alias get='cards install'
- alias up='cards install -u'
- alias check='cards sync;cards diff'
- else
- alias del='sudo cards remove'
- alias get='sudo cards install'
- alias up='sudo cards install -u'
- alias check='sudo cards sync;sudo cards diff'
- fi
- alias search='cards search'
- alias ll='ls -l'
- alias l='ls -alh'
- alias duh='du -h --max-depth=1'
- alias dfh='df -h'
- alias pkgfind='cards list | grep -i'
- # End ~/.bashrc
- EOF
- [ -f ${FOLDER}/root/$FILE ] && return
- [ ! -d ${FOLDER}/root ] && install -dv -m0750 ${FOLDER}/root
- cp -v ${FOLDER}/etc/skel/$FILE \
- ${FOLDER}/root
- }
- generate_bash_profile() {
- local FILE
- FILE=".bash_profile"
- [ -f ${FOLDER}/etc/skel/$FILE ] && return
- [ ! -d ${FOLDER}/etc/skel ] && mkdir -pv ${FOLDER}/etc/skel
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/skel/$FILE
- return
- fi
- cat > ${FOLDER}/etc/skel/$FILE << "EOF"
- # Personal environment variables and startup programs.
- # Personal aliases and functions should go in ~/.bashrc. System wide
- # environment variables and startup programs are in /etc/profile.
- # System wide aliases and functions are in /etc/bashrc.
- append () {
- # First remove the directory
- local IFS=':'
- local NEWPATH
- for DIR in $PATH; do
- if [ "$DIR" != "$1" ]; then
- NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
- fi
- done
- # Then append the directory
- export PATH=$NEWPATH:$1
- }
- if [ -f "$HOME/.bashrc" ] ; then
- source $HOME/.bashrc
- fi
- # unset append
- # End ~/.bash_profile
- EOF
- [ ! -d ${FOLDER}/root ] && install -dv -m0750 ${FOLDER}/root
- [ -f ${FOLDER}/root/$FILE ] && return
- cp -v ${FOLDER}/etc/skel/$FILE \
- ${FOLDER}/root
- }
- generate_pkgmk_conf() {
- local FILE
- FILE="pkgmk.conf"
- [ -f ${FOLDER}/etc/$FILE ] && return
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/$FILE
- fi
- }
- generate_cards_conf() {
- local FILE
- FILE="cards.conf"
- [ -f ${FOLDER}/etc/$FILE ] && return
- [ ! -d ${FOLDER}/etc ] && mkdir -pv ${FOLDER}/etc
- if [ -f /etc/${INSTALL_COMMAND}.conf.d/$FILE ]; then
- cp /etc/${INSTALL_COMMAND}.conf.d/$FILE \
- ${FOLDER}/etc/$FILE
- return
- fi
- echo "## For kde5
- # Comment following 2 lines
- # if you don't want to install kde5
- #
- dir ${DEPOT}/kde5-extra|${URL}
- dir ${DEPOT}/kde5|${URL}
- ##
- ## For kde (4)
- # Comment following 2 lines
- # if you don't want to install kde (version4)
- #
- dir ${DEPOT}/kde-extra|${URL}
- dir ${DEPOT}/kde|${URL}
- #
- ## For cinnamon
- # Cinnamon is not yet ready to ude
- # Decomment following 2 lines
- # if you want to try cinnamon anyway
- #
- # dir ${DEPOT}/cinnamon-extra|${URL}
- # dir ${DEPOT}/cinnamon|${URL}
- #
- ## For Gnome
- # Comment following 2 lines
- # if you don't want to install gnome
- #
- dir ${DEPOT}/gnome-extra|${URL}
- dir ${DEPOT}/gnome|${URL}
- #
- ## For mate
- # Comment following 2 lines
- # if you don't want to install mate
- #
- dir ${DEPOT}/mate-extra|${URL}
- dir ${DEPOT}/mate|${URL}
- #
- ## For xfce4
- # Comment following 2 lines
- # if you don't want to install xfce4
- #
- dir ${DEPOT}/xfce4-extra|${URL}
- dir ${DEPOT}/xfce4|${URL}
- #
- ## For lxqt
- # Comment following 2 lines
- # if you don't want to install lxqt
- #
- dir ${DEPOT}/lxqt-extra|${URL}
- dir ${DEPOT}/lxqt|${URL}
- #
- ## For lxde
- # Comment following 2 lines
- # if you don't want to install lxde
- #
- dir ${DEPOT}/lxde-extra|${URL}
- dir ${DEPOT}/lxde|${URL}
- #
- ## Normally everything under this line
- # are needed stuffs
- #
- ## For all the graphical applications
- dir ${DEPOT}/gui-extra|${URL}
- #
- ## For a minimal graphical interface
- dir ${DEPOT}/gui|${URL}
- #
- ## For all the console applications
- dir ${DEPOT}/cli-extra|${URL}
- #
- ## For a minimal console interface
- dir ${DEPOT}/cli|${URL}
- #
- ## Strict minimum Base system to be able to boot on it
- dir ${DEPOT}/base-extra|${URL}
- #
- # Chroot system without reboot possibilities for a chroot
- dir ${DEPOT}/base|${URL}
- #
- ## Normaly you want to keep base and
- base ${DEPOT}/base
- #
- ## and base-extra
- base ${DEPOT}/base-extra
- #
- ## If you want to keep more collections remove comments below
- # Adjust to your needs
- #
- # base ${DEPOT}/cli
- # base ${DEPOT}/cli-extra
- # base ${DEPOT}/gui
- # base ${DEPOT}/gui-extra
- # base ${DEPOT}/..." > ${FOLDER}/etc/cards.conf
- }
- generate_nutyx_version() {
- local FILE
- FILE="nutyx-version"
- [ -f ${FOLDER}/var/lib/pkg/$FILE ] && return
- [ ! -d ${FOLDER}/var/lib/pkg ] && mkdir -pv ${FOLDER}/var/lib/pkg
- echo "name ${CODE_NAME}
- version $VERSION" > ${FOLDER}/var/lib/pkg/$FILE
- }
- install_resolv_conf() {
- [ -f /etc/resolv.conf ] && cp /etc/resolv.conf ${FOLDER}/etc
- }
- successfull_installation () {
- echo "
- ****************************************************
- * Installation of NuTyX $VERSION finished. *
- * *
- * Thanks for installing NuTyX *
- * *
- * Check http://www.nutyx.org/en/documentation.html *
- * or http://www.nutyx.org/fr/documentation.html *
- * *
- * Make sure to review /etc/cards.conf *
- * to meet your requirements in packages selection *
- * *
- ****************************************************
- "
- }
- check_root() {
- [ "$UID" != "0" ] && error " You are not root, cannot continue"
- }
- check_bash() {
- BASH_VERSION=`bash --version|head -n1 | cut -d " " -f4|cut -d "(" -f1|sed "s/\.//g"`
- if [ -z ${BASH_VERSION} ]; then
- error " Wrong interpreter, please use 'bash' as interpreter"
- fi
- # Checking bash version
- if [ ${BASH_VERSION} -lt 4333 ]; then
- boot_mesg " You not use 'bash' version 4.3.33 or newer..."
- echo_warning
- fi
- }
- check_tools() {
- if ! (`which wget > /dev/null`); then
- error " Command 'wget' not found, please install wget"
- fi
- if ! (`which tar > /dev/null`); then
- error " Command 'tar' not found, please install tar"
- fi
- if ! (`which gawk > /dev/null`); then
- error " Command 'gawk' not found, please install gawk"
- fi
- }
- check_variables() {
- [ -z $URL ] && URL="http://downloads.nutyx.org"
- [ -z $VERSION ] && VERSION="8.0"
- [ -z $DEPOT ] && DEPOT="/var/lib/pkg/depotrepo"
- [ -z $FOLDER ] && FOLDER="/mnt/hd"
- HOMEPAGE="${URL}" ## http://downloads.nutyx.org
- INSTALL_BASE="$VERSION/$ARCH" ## 8.0/x86_64
- DEPOT_ROOT="$HOMEPAGE/${INSTALL_BASE}" ## http://downloads.nutyx.org/8.0/x86_64
- DEPOT_BASE="$DEPOT_ROOT/$BASE" ## http://downloads.nutyx.org/8.0/x86_64/base
- LOCAL_DEPOT_PACKAGES="$DEPOT/$BASE"
- DEPOT_CD="/media/cdrom"
- SETUP_FILE=/tmp/setup
- # Size of the FullInstall in Mbytes
- let BASE_SIZE=450
- }
- config() {
- ARCH=`uname -m`
- # Number of seconds between STOPSIG and FALLBACK when stopping processes
- KILLDELAY="3"
- ## Screen Dimensions
- # Find current screen size
- if [ -z "${COLUMNS}" ]; then
- COLUMNS=$(stty size)
- COLUMNS=${COLUMNS##* }
- fi
- # When using remote connections, such as a serial port, stty size returns 0
- if [ "${COLUMNS}" = "0" ]; then
- COLUMNS=80
- fi
- ## Measurements for positioning result messages
- COL=$((${COLUMNS} - 8))
- WCOL=$((${COL} - 2))
- ## Provide an echo that supports -e and -n
- # If formatting is needed, $ECHO should be used
- case "`echo -e -n test`" in
- -[en]*)
- ECHO=/bin/echo
- ;;
- *)
- ECHO=echo
- ;;
- esac
- ## Set Cursor Position Commands, used via $ECHO
- SET_COL="\\033[${COL}G" # at the $COL char
- SET_WCOL="\\033[${WCOL}G" # at the $WCOL char
- CURS_UP="\\033[1A\\033[0G" # Up one line, at the 0'th char
- ## Set color commands, used via $ECHO
- # Please consult `man console_codes for more information
- # under the "ECMA-48 Set Graphics Rendition" section
- #
- # Warning: when switching from a 8bit to a 9bit font,
- # the linux console will reinterpret the bold (1;) to
- # the top 256 glyphs of the 9bit font. This does
- # not affect framebuffer consoles
- NORMAL="\\033[0;39m" # Standard console grey
- SUCCESS="\\033[1;32m" # Success is green
- WARNING="\\033[1;33m" # Warnings are yellow
- FAILURE="\\033[1;31m" # Failures are red
- INFO="\\033[1;36m" # Information is light cyan
- BRACKET="\\033[1;34m" # Brackets are blue
- STRING_LENGTH="0" # the length of the current message
- }
- check_lfs() {
- # LFS is set ?
- if [ ! -z "${LFS}" ]; then
- DEVICE=${LFS}
- FOLDER=${LFS}
- else
- DEVICE=${FOLDER}
- fi
- echo "
- ******************************
- Installation path: $DEVICE
- ******************************"
- }
- check_mountpoint() {
- [ -z $FOLDER ] && error "Variable FOLDER not define"
- }
- check_arch() {
- if [ "$ARCH" != "x86_64" ] && [ "$ARCH" != "i686" ]; then
- boot_mesg "
- >>> This arch ($ARCH) is not supported"
- echo_failure
- exit 1
- fi
- }
- create_database() {
- [ ! -d ${FOLDER}/var/lib/pkg/DB ] && mkdir -p ${FOLDER}/var/lib/pkg/DB
- }
- create_locale_link() {
- [ ! -d ${FOLDER}/etc/locale ] && mkdir -p ${FOLDER}/etc/locale
- if [ -d ${FOLDER}/usr/lib/locale ]; then
- rm -r ${FOLDER}/usr/lib/locale
- ln -sv /etc/locale/ ${FOLDER}/usr/lib/locale
- fi
- }
- make_directories() {
- mkdir ${FOLDER}/{dev,sys,proc,run,tmp,home,srv,mnt}
- mkdir -p ${FOLDER}/var/tmp
- mkdir -p ${FOLDER}/usr/{,local/}lib
- chmod 1777 ${FOLDER}/{,var/}tmp
- mkdir -v ${FOLDER}/var/{mail,spool}
- mkdir -pv ${FOLDER}/var/run/lock
- mknod -m 600 ${FOLDER}/dev/console c 5 1
- mknod -m 666 ${FOLDER}/dev/null c 1 3
- }
- download_pkgadd() {
- if [ ! -f $TMP/usr/bin/pkgadd ]; then
- cd $TMP
- basepackagefile=`getPackageName cards`
- if [ "$basepackagefile" == "" ]; then
- error "variable 'basepackagefile' is not set"
- fi
- packagefile=`echo ${basepackagefile}|sed "s|^cards|cards.devel|"`
- if [ ! -f ${packagefile} ]; then
- wget ${DEPOT_BASE}/cards/$packagefile || print_error_msg
- echo_ok
- fi
- echo "Extraction of cards.devel ..."
- tar -xf ${packagefile} || print_error_msg
- echo_ok
- fi
- }
- check_mountfolder() {
- [ ! -d $FOLDER ] && mkdir -p $FOLDER
- }
- generate_setupfile() {
- echo "#!/bin/bash
- source /etc/profile
- cards sync
- cards install e2fsprogs \
- reiserfsprogs \
- xfsprogs jfsutils \
- btrfs-progs sudo \
- sysklogd sysvinit \
- dhcpcd grub \
- tzdata iproute2 iana-etc \
- e3 eudev kmod less \
- groff man-db cards.man \
- nutyx.man \
- lvm2 mdadm dialog cpio squashfs \
- linux-firmware \
- kernel-lts \
- ca-certificates
- exit" > $FOLDER/$SETUP_FILE
- chmod 177 $FOLDER/$SETUP_FILE
- setup_chroot
- chroot ${FOLDER} /bin/bash -c "$SETUP_FILE"
- unmountall
- }
- install_configuration_files() {
- generate_cards_conf
- generate_pkgmk_conf
- generate_fstab
- generate_passwd
- generate_group
- generate_bash_profile
- generate_bashrc
- generate_dmrc
- generate_hosts
- generate_inputrc
- generate_shells
- generate_dircolors_sh
- generate_extrapaths_sh
- generate_readline_sh
- generate_umask_sh
- generate_profile
- generate_hosts
- generate_inputrc
- generate_modules
- generate_createfiles
- generate_mouse
- generate_udev_retry
- generate_rc_site
- generate_etc_bashrc
- generate_blfs_bootscripts
- generate_nutyx_version
- }
- print_help() {
- echo "
- usage: `basename ${INSTALL_COMMAND}` [options] options
- -p, --path <installation-path> will install NuTyX in <installation-path>
- -ec, --enter-chroot will enter in the chroot if exist
- -ic, --install-config will install all the configuration files only
- -h, --help print help and exit
- -v, --version print the version and exit
- "
- }
- parse_options() {
- while [ "$1" ]; do
- case $1 in
- -h|--help)
- print_help
- exit 0;;
- -ec|--enter-chroot)
- check_lfs "$@"
- check_root
- setup_chroot
- enter_chroot
- unmountall
- exit 0;;
- -ic|--install-config)
- check_variables
- check_lfs "$@"
- check_root
- check_mountfolder
- check_mountpoint
- make_directories
- create_locale_link
- install_configuration_files
- exit 0;;
- -p|--path)
- if [ ! "$2" ]; then
- echo "`basename $INSTALL_COMMAND`: option $1 requires an argument"
- exit 1
- fi
- FOLDER="$2"
- shift;;
- -v|--version)
- echo "`basename $INSTALL_COMMAND` $VERSION-$RELEASE"
- exit 0;;
- /*)
- boot_mesg "
- >>> This methode is depreciate <<<: use '-p $1' instead or adjust the 'LFS' variable"
- echo_warning
- echo "
- press any key to continue ...
- "
- read a
- FOLDER="$1";;
- *)
- echo "`basename $0`: invalid option $1"
- exit 1 ;;
- esac
- shift
- done
- }
- main() {
- config
- [ -f /etc/`basename $INSTALL_COMMAND`.conf ] && source /etc/`basename $INSTALL_COMMAND`.conf
- check_variables "$@"
- parse_options "$@"
- check_arch
- check_lfs "$@"
- if [ $# -lt 1 ] && [ -z "$LFS" ] ; then
- echo "
- *******************************************
- * You didn't specify enough arguments *
- * Argument 1: Folder destionation *
- * *
- * Please re-enter the command with the *
- * corrects arguments *
- *******************************************
- example: ${INSTALL_COMMAND} -p /chroot
- "
- return
- fi
- check_root
- check_bash
- check_tools
- TMP=`mktemp -d`
- check_mountfolder
- check_mountpoint
- download_pkgadd
- create_database
- install_base
- create_locale_link
- make_directories
- install_configuration_files
- install_resolv_conf
- generate_setupfile
- end
- successfull_installation
- }
- readonly CODE_NAME="houaphan"
- readonly BASE="base"
- readonly RELEASE=2
- INSTALL_COMMAND="`basename $0`"
- main "$@"
|