blob: 8cf56ed95ccd572b33330b0503a77ae1c12d3581 [file] [log] [blame]
# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=2
CROS_WORKON_PROJECT="chromiumos/platform/init"
inherit cros-workon
DESCRIPTION="Upstart init scripts for Chromium OS"
HOMEPAGE="http://src.chromium.org"
SRC_URI=""
LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~arm ~x86"
IUSE=""
DEPEND=""
# vpd for vpd-log.conf of upstart
# vboot_reference for crossystem
RDEPEND="chromeos-base/audioconfig-board
chromeos-base/vboot_reference
chromeos-base/vpd
sys-apps/upstart"
CROS_WORKON_LOCALNAME="init"
make_partition_devices() {
block=$1
partition_prefix=$2
major=$3
minor=$4
mknod --mode=0660 "${D}/${DEVICES_DIR}/${block}" b ${major} ${minor}
for i in `seq 1 12` ; do
partition_minor=$((${minor} + ${i}))
name="${D}/${DEVICES_DIR}/${partition_prefix}${i}"
mknod --mode=0660 "${name}" b ${major} ${partition_minor}
done
}
src_install() {
into / # We want /sbin, not /usr/sbin, etc.
# Install Upstart configuration files.
dodir /etc/init
install --owner=root --group=root --mode=0644 \
"${S}"/*.conf "${D}/etc/init/"
dodir /etc
install --owner=root --group=root --mode=0644 \
"${S}/issue" "${D}/etc/"
# Install various utility files
dosbin "${S}/killers"
dosbin "${S}/send_boot_metrics"
# Install startup/shutdown scripts.
dosbin "${S}/chromeos_startup" "${S}/chromeos_shutdown"
dosbin "${S}/chromeos-boot-alert"
dosbin "${S}/clobber-state"
dosbin "${S}/clobber-log"
# Install log cleaning script and run it daily.
into /usr
dosbin "${S}/chromeos-cleanup-logs"
exeinto /etc/cron.daily
doexe "${S}/cleanup-logs.daily"
# Install lightup_screen
into /usr
dosbin "${S}/lightup_screen"
# Install rsyslogd's configuration file.
insinto /etc
doins rsyslog.chromeos || die
# Some daemons and utilities access the mounts through /etc/mtab.
dosym /proc/mounts /etc/mtab || die
# Preseed /lib/chromiumos/devices which is by chromeos_startup to
# populate /dev with enough devices to be able to do early init and
# start the X server.
# TODO: Evaluate devtmpfs when we start using kernel 2.6.32.
DEVICES_DIR="/lib/chromiumos/devices"
dodir "$DEVICES_DIR"
dodir "${DEVICES_DIR}/dri"
dodir "${DEVICES_DIR}/input"
keepdir "${DEVICES_DIR}/pts"
keepdir "${DEVICES_DIR}/shm"
dosym /proc/self/fd "${DEVICES_DIR}/fd"
dosym /proc/self/fd/0 "${DEVICES_DIR}/stdin"
dosym /proc/self/fd/1 "${DEVICES_DIR}/stdout"
dosym /proc/self/fd/2 "${DEVICES_DIR}/stderr"
mknod --mode=0600 "${D}/${DEVICES_DIR}/initctl" p
mknod --mode=0640 "${D}/${DEVICES_DIR}/mem" c 1 1
mknod --mode=0666 "${D}/${DEVICES_DIR}/null" c 1 3
mknod --mode=0666 "${D}/${DEVICES_DIR}/zero" c 1 5
mknod --mode=0666 "${D}/${DEVICES_DIR}/random" c 1 8
mknod --mode=0666 "${D}/${DEVICES_DIR}/urandom" c 1 9
mknod --mode=0660 "${D}/${DEVICES_DIR}/tty0" c 4 0
mknod --mode=0660 "${D}/${DEVICES_DIR}/tty1" c 4 1
mknod --mode=0660 "${D}/${DEVICES_DIR}/tty2" c 4 2
mknod --mode=0660 "${D}/${DEVICES_DIR}/tty8" c 4 8
mknod --mode=0666 "${D}/${DEVICES_DIR}/tty" c 5 0
mknod --mode=0600 "${D}/${DEVICES_DIR}/console" c 5 1
mknod --mode=0666 "${D}/${DEVICES_DIR}/ptmx" c 5 2
mknod --mode=0666 "${D}/${DEVICES_DIR}/loop0" b 7 0
mknod --mode=0660 "${D}/${DEVICES_DIR}/dm-0" b 254 0
make_partition_devices "sda" "sda" 8 0
make_partition_devices "sdb" "sdb" 8 16
make_partition_devices "sdc" "sdc" 8 32
make_partition_devices "sdd" "sdd" 8 48
make_partition_devices "sde" "sde" 8 64
make_partition_devices "mmcblk0" "mmcblk0p" 179 0
make_partition_devices "mmcblk1" "mmcblk1p" 179 16
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/mouse0" c 13 32
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/mice" c 13 63
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/event0" c 13 64
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/event1" c 13 65
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/event2" c 13 66
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/event3" c 13 67
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/event4" c 13 68
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/event5" c 13 69
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/event6" c 13 70
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/event7" c 13 71
mknod --mode=0640 "${D}/${DEVICES_DIR}/input/event8" c 13 72
mknod --mode=0660 "${D}/${DEVICES_DIR}/fb0" c 29 0
mknod --mode=0660 "${D}/${DEVICES_DIR}/fb1" c 29 1
mknod --mode=0660 "${D}/${DEVICES_DIR}/dri/card0" c 226 0
mknod --mode=0660 "${D}/${DEVICES_DIR}/tpm" c 10 224
mknod --mode=0640 "${D}/${DEVICES_DIR}/nvram" c 10 144
chown root.tty "${D}/${DEVICES_DIR}"/tty*
chown root.kmem "${D}/${DEVICES_DIR}"/mem
chown root.kmem "${D}/${DEVICES_DIR}"/nvram
chown root.disk "${D}/${DEVICES_DIR}"/sda*
chown root.disk "${D}/${DEVICES_DIR}"/dm-0
chown root.video "${D}/${DEVICES_DIR}"/fb0
chown root.video "${D}/${DEVICES_DIR}"/dri/card0
chown root.tss "${D}/${DEVICES_DIR}/tpm"
# Preseed the devices in /dev. This seems to be currently required by some
# downstream rootfs modification scripts such as 710enableAuthTesting.
dodir /dev
cp -a "${D}/${DEVICES_DIR}/"* "${D}/dev" || die
}