Statistics
| Branch: | Revision:

root / common_linux.sh @ 47c86659

History | View | Annotate | Download (6.1 kB)

1 5dc61974 Nikos Skalkotos
2 5dc61974 Nikos Skalkotos
get_os_type() {
3 5dc61974 Nikos Skalkotos
    target=$1
4 5dc61974 Nikos Skalkotos
    if [ -z "${target}" ] ; then
5 5dc61974 Nikos Skalkotos
        log_error "target is not set in get_os_type"
6 5dc61974 Nikos Skalkotos
        exit 1
7 5dc61974 Nikos Skalkotos
    fi
8 5dc61974 Nikos Skalkotos
    if [ -e ${target}/etc/redhat-release ] ; then
9 5dc61974 Nikos Skalkotos
        OS_TYPE="redhat"
10 5dc61974 Nikos Skalkotos
    elif [ -e ${target}/etc/debian_version ] ; then
11 5dc61974 Nikos Skalkotos
        OS_TYPE="debian"
12 5dc61974 Nikos Skalkotos
    elif [ -e ${target}/etc/gentoo-release ] ; then
13 5dc61974 Nikos Skalkotos
        OS_TYPE="gentoo"
14 5dc61974 Nikos Skalkotos
    elif [ -e ${target}/etc/SuSE-release ] ; then
15 5dc61974 Nikos Skalkotos
        OS_TYPE="suse"
16 5dc61974 Nikos Skalkotos
    fi
17 5dc61974 Nikos Skalkotos
}
18 5dc61974 Nikos Skalkotos
19 5dc61974 Nikos Skalkotos
get_os() {
20 5dc61974 Nikos Skalkotos
    target=$1
21 5dc61974 Nikos Skalkotos
    if [ -z "${target}" ] ; then
22 5dc61974 Nikos Skalkotos
        log_error "target is not set in get_os"
23 5dc61974 Nikos Skalkotos
        exit 1
24 5dc61974 Nikos Skalkotos
    fi
25 5dc61974 Nikos Skalkotos
    lsb="/usr/bin/lsb_release"
26 5dc61974 Nikos Skalkotos
    if [ -e ${target}/$lsb ] ; then
27 5dc61974 Nikos Skalkotos
        OPERATING_SYSTEM="$(chroot ${target} ${lsb} -i -s | tr "[:upper:]" "[:lower:]")"
28 5dc61974 Nikos Skalkotos
    elif [ -e ${target}/etc/debian_version ] ; then
29 5dc61974 Nikos Skalkotos
        OPERATING_SYSTEM="debian"
30 5dc61974 Nikos Skalkotos
    elif [ -e ${target}/etc/gentoo-release ] ; then
31 5dc61974 Nikos Skalkotos
        OPERATING_SYSTEM="gentoo"
32 5dc61974 Nikos Skalkotos
    elif [ -e ${target}/etc/fedora-release ] ; then
33 5dc61974 Nikos Skalkotos
        OPERATING_SYSTEM="fedora"
34 5dc61974 Nikos Skalkotos
    elif [ -e ${target}/etc/redhat-release ] ; then
35 5dc61974 Nikos Skalkotos
        if [ -n "$(grep -i centos ${target}/etc/redhat-release)" ] ; then
36 5dc61974 Nikos Skalkotos
            OPERATING_SYSTEM="centos"
37 5dc61974 Nikos Skalkotos
        else
38 5dc61974 Nikos Skalkotos
            OPERATING_SYSTEM="redhat"
39 5dc61974 Nikos Skalkotos
        fi
40 5dc61974 Nikos Skalkotos
    fi
41 5dc61974 Nikos Skalkotos
}
42 5dc61974 Nikos Skalkotos
43 5dc61974 Nikos Skalkotos
get_os_release() {
44 5dc61974 Nikos Skalkotos
    target=$1
45 5dc61974 Nikos Skalkotos
    if [ -z "${target}" ] ; then
46 5dc61974 Nikos Skalkotos
        log_error "target is not set in get_os_release"
47 5dc61974 Nikos Skalkotos
        exit 1
48 5dc61974 Nikos Skalkotos
    fi
49 5dc61974 Nikos Skalkotos
    lsb="/usr/bin/lsb_release"
50 5dc61974 Nikos Skalkotos
    if [ -e ${target}/$lsb ] ; then
51 5dc61974 Nikos Skalkotos
        OS_RELEASE="$(chroot ${target} ${lsb} -r -s | tr "[:upper:]" "[:lower:]")"
52 5dc61974 Nikos Skalkotos
    elif [ -e ${target}/etc/debian_version ] ; then
53 5dc61974 Nikos Skalkotos
        OS_RELEASE="$(cat ${target}/etc/debian_version)"
54 5dc61974 Nikos Skalkotos
    elif [ -e ${target}/etc/fedora-release ] ; then
55 5dc61974 Nikos Skalkotos
        OS_RELEASE="$(cat ${target}/etc/fedora-release | awk '{print $3}')"
56 5dc61974 Nikos Skalkotos
    elif [ -e ${$target}/etc/redhat-release ] ; then
57 5dc61974 Nikos Skalkotos
        OS_RELEASE="$(cat ${target}/etc/redhat-release | awk '{print $3}')"
58 5dc61974 Nikos Skalkotos
    fi
59 5dc61974 Nikos Skalkotos
}
60 5dc61974 Nikos Skalkotos
61 bb78ba49 Nikos Skalkotos
linux_format_disk0() {
62 5dc61974 Nikos Skalkotos
    local sfdisk_cmd="$SFDISK -uM -H 255 -S 63 --quiet --Linux --DOS $1"
63 5dc61974 Nikos Skalkotos
    if [  "${SWAP}" = "yes" -a -z "${KERNEL_PATH}" ] ; then
64 5dc61974 Nikos Skalkotos
        # Create three partitions:
65 5dc61974 Nikos Skalkotos
        # 1 - 100MB /boot, bootable
66 5dc61974 Nikos Skalkotos
        # 2 - Size of Memory, swap
67 5dc61974 Nikos Skalkotos
        # 3 - Rest
68 5dc61974 Nikos Skalkotos
        $sfdisk_cmd > /dev/null <<EOF
69 5dc61974 Nikos Skalkotos
,100,L,*
70 5dc61974 Nikos Skalkotos
,${SWAP_SIZE},S
71 5dc61974 Nikos Skalkotos
,,L
72 5dc61974 Nikos Skalkotos
EOF
73 5dc61974 Nikos Skalkotos
    elif [  "${SWAP}" = "no" -a -z "${KERNEL_PATH}" ] ; then
74 5dc61974 Nikos Skalkotos
        # Create two partitions:
75 5dc61974 Nikos Skalkotos
        # 1 - 100MB /boot, bootable
76 5dc61974 Nikos Skalkotos
        # 2 - Rest
77 5dc61974 Nikos Skalkotos
        $sfdisk_cmd > /dev/null <<EOF
78 5dc61974 Nikos Skalkotos
,100,L,*
79 5dc61974 Nikos Skalkotos
,,L
80 5dc61974 Nikos Skalkotos
EOF
81 5dc61974 Nikos Skalkotos
    elif [  "${SWAP}" = "yes" -a -n "${KERNEL_PATH}" ] ; then
82 5dc61974 Nikos Skalkotos
        # Create two partitions:
83 5dc61974 Nikos Skalkotos
        # 1 - Size of Memory, swap
84 5dc61974 Nikos Skalkotos
        # 2 - Rest
85 5dc61974 Nikos Skalkotos
        $sfdisk_cmd > /dev/null <<EOF
86 5dc61974 Nikos Skalkotos
,$SWAP_SIZE,S
87 5dc61974 Nikos Skalkotos
,,L
88 5dc61974 Nikos Skalkotos
EOF
89 5dc61974 Nikos Skalkotos
    elif [  "${SWAP}" = "no" -a -n "${KERNEL_PATH}" ] ; then
90 5dc61974 Nikos Skalkotos
        # Create two partitions:
91 5dc61974 Nikos Skalkotos
        # 1 - Whole
92 5dc61974 Nikos Skalkotos
        $sfdisk_cmd > /dev/null <<EOF
93 5dc61974 Nikos Skalkotos
,,L
94 5dc61974 Nikos Skalkotos
EOF
95 5dc61974 Nikos Skalkotos
    fi
96 5dc61974 Nikos Skalkotos
}
97 5dc61974 Nikos Skalkotos
98 bb78ba49 Nikos Skalkotos
linux_mkfs_disk0() {
99 5dc61974 Nikos Skalkotos
    local mkfs="mkfs.${FILESYSTEM}"
100 5dc61974 Nikos Skalkotos
    # Format /
101 5dc61974 Nikos Skalkotos
    $mkfs -Fq -L / $root_dev > /dev/null
102 5dc61974 Nikos Skalkotos
    # Format /boot
103 5dc61974 Nikos Skalkotos
    if [ -n "${boot_dev}" ] ; then
104 5dc61974 Nikos Skalkotos
        $mkfs -Fq -L /boot $boot_dev > /dev/null
105 5dc61974 Nikos Skalkotos
    fi
106 5dc61974 Nikos Skalkotos
    # Format swap
107 5dc61974 Nikos Skalkotos
    if [ -n "${swap_dev}" ] ; then
108 5dc61974 Nikos Skalkotos
        # Format swap
109 5dc61974 Nikos Skalkotos
        mkswap -f $swap_dev > /dev/null
110 5dc61974 Nikos Skalkotos
    fi
111 5dc61974 Nikos Skalkotos
    # During reinstalls, ext4 needs a little time after a mkfs so add it here
112 5dc61974 Nikos Skalkotos
    # and also run a sync to be sure.
113 5dc61974 Nikos Skalkotos
    sync
114 5dc61974 Nikos Skalkotos
    sleep 2
115 5dc61974 Nikos Skalkotos
}
116 5dc61974 Nikos Skalkotos
117 bb78ba49 Nikos Skalkotos
linux_setup_fstab() {
118 5dc61974 Nikos Skalkotos
    local target=$1 fs=${FILESYSTEM}
119 5dc61974 Nikos Skalkotos
    get_os_type $target
120 5dc61974 Nikos Skalkotos
    cat > $target/etc/fstab <<EOF
121 5dc61974 Nikos Skalkotos
# /etc/fstab: static file system information.
122 5dc61974 Nikos Skalkotos
#
123 5dc61974 Nikos Skalkotos
# <file system>   <mount point>   <type>  <options>       <dump>  <pass>
124 5dc61974 Nikos Skalkotos
UUID=$root_uuid   /               $fs     defaults        0       1
125 5dc61974 Nikos Skalkotos
proc              /proc           proc    defaults        0       0
126 5dc61974 Nikos Skalkotos
EOF
127 5dc61974 Nikos Skalkotos
128 5dc61974 Nikos Skalkotos
if [ -n "$boot_dev" -a -n "$boot_uuid" ] ; then
129 5dc61974 Nikos Skalkotos
    cat >> $target/etc/fstab <<EOF
130 5dc61974 Nikos Skalkotos
UUID=$boot_uuid   /boot           $fs     defaults        1       2
131 5dc61974 Nikos Skalkotos
EOF
132 5dc61974 Nikos Skalkotos
fi
133 5dc61974 Nikos Skalkotos
134 5dc61974 Nikos Skalkotos
if [ -n "$swap_dev" -a -n "$swap_uuid" ] ; then
135 5dc61974 Nikos Skalkotos
    cat >> $target/etc/fstab <<EOF
136 5dc61974 Nikos Skalkotos
UUID=$swap_uuid   swap            swap    defaults        0       0
137 5dc61974 Nikos Skalkotos
EOF
138 5dc61974 Nikos Skalkotos
fi
139 5dc61974 Nikos Skalkotos
140 5dc61974 Nikos Skalkotos
# OS Specific fstabs
141 5dc61974 Nikos Skalkotos
if [ "$OS_TYPE" = "redhat" ] ; then
142 5dc61974 Nikos Skalkotos
    cat >> $target/etc/fstab <<EOF
143 5dc61974 Nikos Skalkotos
tmpfs             /dev/shm        tmpfs   defaults        0       0
144 5dc61974 Nikos Skalkotos
devpts            /dev/pts        devpts  gid=5,mode=620  0       0
145 5dc61974 Nikos Skalkotos
sysfs             /sys            sysfs   defaults        0       0
146 5dc61974 Nikos Skalkotos
EOF
147 5dc61974 Nikos Skalkotos
fi
148 5dc61974 Nikos Skalkotos
149 5dc61974 Nikos Skalkotos
if [ "$OS_TYPE" = "gentoo" ] ; then
150 5dc61974 Nikos Skalkotos
    cat >> $target/etc/fstab <<EOF
151 5dc61974 Nikos Skalkotos
shm               /dev/shm        tmpfs   nodev,nosuid,noexec 0   0
152 5dc61974 Nikos Skalkotos
EOF
153 5dc61974 Nikos Skalkotos
fi
154 5dc61974 Nikos Skalkotos
}
155 5dc61974 Nikos Skalkotos
156 bb78ba49 Nikos Skalkotos
linux_setup_console() {
157 5dc61974 Nikos Skalkotos
    local target=$1
158 5dc61974 Nikos Skalkotos
    if [ -z "$target" ] ; then
159 5dc61974 Nikos Skalkotos
        log_error "target not set for setup_console"
160 5dc61974 Nikos Skalkotos
        exit 1
161 5dc61974 Nikos Skalkotos
    fi
162 5dc61974 Nikos Skalkotos
    # Upstart is on this system, so do this instead
163 5dc61974 Nikos Skalkotos
    if [ -e ${target}/etc/event.d/tty1 ] ; then
164 5dc61974 Nikos Skalkotos
        cat ${target}/etc/event.d/tty1 | sed -re 's/tty1/ttyS0/' \
165 5dc61974 Nikos Skalkotos
            > ${target}/etc/event.d/ttyS0
166 5dc61974 Nikos Skalkotos
        return
167 5dc61974 Nikos Skalkotos
    fi
168 5dc61974 Nikos Skalkotos
    # upstart in karmic and newer
169 5dc61974 Nikos Skalkotos
    if [ -e ${target}/etc/init/tty1.conf ] ; then
170 5dc61974 Nikos Skalkotos
        cat ${target}/etc/init/tty1.conf | \
171 5dc61974 Nikos Skalkotos
        sed -re 's/^exec.*/exec \/sbin\/getty -L 115200 ttyS0 vt102/' \
172 5dc61974 Nikos Skalkotos
            > ${target}/etc/init/ttyS0.conf
173 5dc61974 Nikos Skalkotos
        sed -ie 's/tty1/ttyS0/g' ${target}/etc/init/ttyS0.conf
174 5dc61974 Nikos Skalkotos
        return
175 5dc61974 Nikos Skalkotos
    fi
176 5dc61974 Nikos Skalkotos
    get_os $target
177 5dc61974 Nikos Skalkotos
    case $OPERATING_SYSTEM in
178 5dc61974 Nikos Skalkotos
        gentoo)
179 5dc61974 Nikos Skalkotos
            sed -i -e 's/.*ttyS0.*/s0:12345:respawn:\/sbin\/agetty 115200 ttyS0 vt100/' \
180 5dc61974 Nikos Skalkotos
                ${target}/etc/inittab
181 5dc61974 Nikos Skalkotos
            ;;
182 5dc61974 Nikos Skalkotos
        centos)
183 5dc61974 Nikos Skalkotos
            echo "s0:12345:respawn:/sbin/agetty 115200 ttyS0 vt100" >> \
184 5dc61974 Nikos Skalkotos
                ${target}/etc/inittab
185 5dc61974 Nikos Skalkotos
            ;;
186 5dc61974 Nikos Skalkotos
        debian|ubuntu)
187 5dc61974 Nikos Skalkotos
            sed -i -e 's/.*T0.*/T0:23:respawn:\/sbin\/getty -L ttyS0 115200 vt100/' \
188 5dc61974 Nikos Skalkotos
                ${target}/etc/inittab
189 5dc61974 Nikos Skalkotos
            ;;
190 5dc61974 Nikos Skalkotos
        *)
191 5dc61974 Nikos Skalkotos
            echo "No support for your OS in instance-image, skipping..."
192 5dc61974 Nikos Skalkotos
            ;;
193 5dc61974 Nikos Skalkotos
    esac
194 5dc61974 Nikos Skalkotos
}
195 5dc61974 Nikos Skalkotos
196 bb78ba49 Nikos Skalkotos
linux_filesystem_check() {
197 5dc61974 Nikos Skalkotos
    local target=$1
198 5dc61974 Nikos Skalkotos
    if [ -z "$target" ] ; then
199 5dc61974 Nikos Skalkotos
        log_error "target not set for filesystem_check"
200 5dc61974 Nikos Skalkotos
        exit 1
201 5dc61974 Nikos Skalkotos
    fi
202 5dc61974 Nikos Skalkotos
203 5dc61974 Nikos Skalkotos
    get_os $target
204 5dc61974 Nikos Skalkotos
205 5dc61974 Nikos Skalkotos
    if [ "${OPERATING_SYSTEM}" = "fedora" ]; then
206 5dc61974 Nikos Skalkotos
        # we have to force a filesystem relabeling for SELinux after messing
207 5dc61974 Nikos Skalkotos
        # around with the filesystem in fedora
208 5dc61974 Nikos Skalkotos
        echo "Enforce an automatic relabeling in the initial boot process..."
209 5dc61974 Nikos Skalkotos
        touch $target/.autorelabel
210 5dc61974 Nikos Skalkotos
    fi
211 5dc61974 Nikos Skalkotos
}