aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-kexecboot.inc
blob: 815a4ddc45acdebdb27dad33a119df4c655b606d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
DESCRIPTION = "Linux Kernel"
SECTION = "kernel"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"

INC_PR = "r0"

inherit kernel siteinfo

# FILESEXTRAPATHS cannot be used, because it puts extra paths before FILESPATH and we need it at the end
# only as fallback for patches available only in linux-PV dir and ie defconfigs needs to go from linux-kexecboot-PV
FILESPATH_append = ":${FILE_DIRNAME}/linux-${PV}"

DEPENDS += "xz-native"

# Kernel bootlogo is distro-specific (default is OE logo).
# Logo resolution (qvga, vga, ...) is machine-specific.
LOGO_SIZE ?= "."
# To use this, add file://${LOGO_SIZE}/logo_linux_clut224.ppm.bz2 or similar
# to your kernel recipe, and then structure your logos for each resolution
# accordingly.

# Set the verbosity of kernel messages during runtime
# You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour
CMDLINE_DEBUG ?= '${@base_contains("IMAGE_FEATURES", "debug-tweaks", "debug", "loglevel=3", d)}'

# Note how we set loglevel=3 and master console on serial to protect bootlogo.
CMDLINE_c7x0 = "console=tty1 console=ttyS0,115200n8"
CMDLINE_tosa = "console=tty1 console=ttyS0,115200n8"
CMDLINE_poodle = "console=tty1 console=ttyS0,115200n8 fbcon=rotate:1"
CMDLINE_akita = "console=tty1 console=ttyS0,115200n8 fbcon=rotate:1"
CMDLINE_collie = "console=tty1 console=ttySA0,115200n8 fbcon=rotate:1 mem=64M"
CMDLINE_spitz = "console=tty1 console=ttyS0,115200n8 fbcon=rotate:1"

PACKAGES = ""
PROVIDES = ""

# Zaurus machines need kernel size-check
KERNEL_IMAGE_MAXSIZE_akita = "1294336"
KERNEL_IMAGE_MAXSIZE_c7x0 = "1294336"
KERNEL_IMAGE_MAXSIZE_collie = "1048576"
KERNEL_IMAGE_MAXSIZE_poodle = "1294336"
KERNEL_IMAGE_MAXSIZE_tosa = "1294336"
KERNEL_IMAGE_MAXSIZE_spitz = "1294336"

KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${PV}-${PR}-${MACHINE}"
KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${MACHINE}"

LOCALVERSION ?= ""

# we want the smallest size
INITRAMFS_IMAGE = "initramfs-kexecboot-klibc-image"

kernel_conf_variable() {
        CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;"
        if test "$2" = "n"
        then
                echo "# CONFIG_$1 is not set" >> ${S}/.config
        else
                echo "CONFIG_$1=$2" >> ${S}/.config
        fi
}

do_configure_prepend() {

        echo "" > ${S}/.config
        CONF_SED_SCRIPT=""

        #
        # CONFIG_CMDLINE mangling
        #
        kernel_conf_variable CMDLINE_BOOL y
        kernel_conf_variable CMDLINE "\"${CMDLINE} ${CMDLINE_DEBUG}\""

        # mips and x86
        kernel_conf_variable CMDLINE_OVERRIDE y

        # sh only
        kernel_conf_variable CMDLINE_OVERWRITE y
        kernel_conf_variable CMDLINE_EXTEND n

        #
        # endian support
        #
        if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then
                kernel_conf_variable CPU_BIG_ENDIAN y
        fi

        #
        # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, then it is going to be used
        #
        if [ -e ${WORKDIR}/logo_linux_clut224.ppm ]; then
                install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
                kernel_conf_variable LOGO y
                kernel_conf_variable LOGO_LINUX_CLUT224 y
        fi

        # When enabling thumb for userspace we also need thumb support in the kernel
        if [ "${ARM_INSTRUCTION_SET}" = "thumb" ] ; then
                kernel_conf_variable ARM_THUMB y
        fi

        kernel_conf_variable LOCALVERSION "\"${LOCALVERSION}\""
        kernel_conf_variable LOCALVERSION_AUTO n

        # Force sane defaults for kexec-enabled kernels and keep size small
        kernel_conf_variable BLK_DEV_INITRD y
        kernel_conf_variable KEXEC y
        CONF_SED_SCRIPT="$CONF_SED_SCRIPT /=m/d;"
        kernel_conf_variable MODULES n
        if ${@base_contains("CMDLINE_DEBUG", "debug", "true", "false", d)}; then
                kernel_conf_variable DEBUG_LL y
                kernel_conf_variable PRINTK y
                kernel_conf_variable EARLY_PRINTK y
                kernel_conf_variable BUG y
                kernel_conf_variable DEBUG_ERRORS y
                kernel_conf_variable DEBUG_BUGVERBOSE y
                kernel_conf_variable DEBUG_KERNEL y
        else
                kernel_conf_variable DEBUG_ERRORS n
                kernel_conf_variable DEBUG_BUGVERBOSE n
                kernel_conf_variable DEBUG_KERNEL n
        fi

        # Force lzma for arm kernels only
        if [ "${ARCH}" = "arm" ] ; then
                CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_KERNEL/d;"
                CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_RD/d;"
                CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_INITRAMFS_COMPRESSION/d;"
                CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_INITRAMFS_SOURCE/d;"
                kernel_conf_variable KERNEL_LZMA y
                kernel_conf_variable RD_LZMA y
                kernel_conf_variable INITRAMFS_COMPRESSION_LZMA y
                kernel_conf_variable INITRAMFS_SOURCE "\"initramfs.cpio.lzma\""
        fi

        sed -e "${CONF_SED_SCRIPT}" \
                        < '${WORKDIR}/defconfig' >>'${S}/.config'

        yes '' | oe_runmake oldconfig
}

do_populate_sysroot() {
        :
}

do_install() {
        :
}