#!/bin/bash source ../functions/main echo "Creating /etc/fstab" cat > ${LFS}/etc/fstab << "EOF" # Device Mount point FS-type Options Dump Fsck-order # ---------------------------------------------------------------------------- EOF if [ -n "${BOOT_PARTITION}" ]; then echo "${BOOT_PARTITION} /boot auto defaults 0 0" >> ${LFS}/etc/fstab fi if [ -n "${SWAP_PARTITION}" ]; then echo "${SWAP_PARTITION} none swap sw 0 0" >> ${LFS}/etc/fstab fi echo "${LFS_PARTITION} / auto defaults,noatime 0 0" >> ${LFS}/etc/fstab cat >> ${LFS}/etc/fstab << "EOF" proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 devpts /dev/pts devpts gid=4,mode=620 0 0 shm /dev/shm tmpfs defaults 0 0 EOF echo "Creating basic /etc/profile and /etc/profile.d" install -v -m755 -d ${LFS}/etc/profile.d cat > ${LFS}/etc/profile << "EOF" #!/bin/bash # /etc/profile # System-wide environment and startup programs. # Functions and aliases go in /etc/bashrc. # This is the first file read by bash during the logon process. PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/tools/bin:/tools/sbin USER=`id -un` LOGNAME=$USER MAIL="/var/mail/$USER" HISTFILESIZE=1000 HISTSIZE=1000 HOSTNAME=`hostname` EDITOR=_DEFAULT_EDITOR_ CFLAGS="_DEFAULT_CFLAGS_" CXXFLAGS=${CFLAGS} # Set default permissions when creating new files. if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then # Normal user umask 002 else # Root umask 022 fi if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then export INPUTRC=/etc/inputrc fi # This disables generation of 'core' files when an application exit abnormally ulimit -c 0 MANPATH=/usr/share/man:/usr/local/share/man LANG="en_US.UTF-8" # The sort order of ls output is affected by the locale and # can be overridden by the LC_COLLATE environment variable. # For example, if LC_COLLATE equals C, dot files appear first, # followed by names beginning with upper-case letters, then # followed by names beginning with lower-case letters. But if # LC_COLLATE equals en_US.ISO8859-1, then leading dots as well # as case are ignored in determining the sort order. LC_COLLATE=C export PATH MANPATH LANG LC_COLLATE PS1 PS2 USER LOGNAME MAIL HISTFILESIZE HISTSIZE HOSTNAME EDITOR CFLAGS CXXFLAGS EOF sed -i -e "s!_DEFAULT_EDITOR_!${DEFAULT_EDITOR}!g" ${LFS}/etc/profile sed -i -e "s!_DEFAULT_CFLAGS_!-pipe -O2 ${MARCH_FLAGS}!g" ${LFS}/etc/profile echo "Creating /etc/bashrc" cat > ${LFS}/etc/bashrc << "EOF" #!/bin/bash # /etc/bashrc # System wide functions and aliases # Environment stuff goes in /etc/profile alias rm='rm -i' alias mv='mv -i' alias cp='cp -i' alias df='df -h' alias du='du -h -s' # --show-control-chars is for seeing international characters in filenames alias ls='ls -h --color=auto --show-control-chars' eval $(dircolors --sh /etc/DIR_COLORS) # For some unknown reason bash refuses to inherit PS1 in some circumstances # that I can't figure out. Putting PS1 here ensures that it gets loaded every # time. # \h = Display hostname # \s = Display shell name (bash) # \v = Display shell version # \w = Display complete path # \W = Dispaly only current directory # \$ = Display '#' #PS1="\h(\W)\$" if [ "$TERM" = "linux" ]; then #we're on the system console or maybe telnetting in export PS1="\u(\W)\$" #export PS1="\[\e[32;1m\]\u@\H > \[\e[0m\]" else #we're not on the console, assume an xterm #export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] " export PS1="\[\e]2;[\u] \w\a\e[32;1m\]>\[\e[0m\] " fi EOF install -v -m644 ${SCRDIR}/misc/DIR_COLORS ${LFS}/etc/DIR_COLORS echo "Creating /etc/inputrc" cat > ${LFS}/etc/inputrc << "EOF" # Begin /etc/inputrc # 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 inside # 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 xterm "\eOH": beginning-of-line "\eOF": end-of-line EOF cat >> ${LFS}/etc/modules << "EOF" # /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. EOF echo "Creating /etc/skel and it's files" cat > ${LFS}/etc/skel/.bash_logout << "EOF" # ~/.bash_logout clear EOF cat > ${LFS}/etc/skel/.bash_profile << "EOF" # ~/.bash_profile # User specific environment and startup programs # This file is the second read by bash during the logon process. # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi BASH_ENV=$HOME/.bashrc export BASH_ENV unset USERNAME EOF cat > ${LFS}/etc/skel/.bashrc << "EOF" # ~/.bashrc # User specific aliases and functions # This file is executed each time an xterm window # is started. # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi EOF # Copy skeleton files to root user directory cp ${LFS}/etc/skel/.bash* ${LFS}/root echo "Creating /etc/shells" cat > ${LFS}/etc/shells << "EOF" /bin/sh /bin/bash EOF chmod 644 ${LFS}/etc/shells # This file contains a list of users (1 per line) who are allowed to shutdown # the computer. This doesn't mean that these users can invoke the shutdown # (or reboot or halt) command(s). Instead, it means that an authorized user # can shut down the computer by pressing ctrl+alt+del. echo "Creating /etc/shutdown.allow" echo "${REGUSER}" > ${LFS}/etc/shutdown.allow # Hostname echo "${MACHINE_NAME}.${DOMAIN}" > ${LFS}/etc/hostname chmod 644 ${LFS}/etc/hostname echo "127.0.0.1 localhost ${MACHINE_NAME}" > ${LFS}/etc/hosts chmod 644 ${LFS}/etc/hosts exit $?