1 #############################################################
3 # busybox image for initramfs
5 #############################################################
6 ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS
),y
)
8 BUSYBOX_INITRAMFS_DIR
:=$(BUSYBOX_DIR
)-initramfs
9 BR2_INITRAMFS_DIR
:=$(PROJECT_BUILD_DIR
)/initramfs
10 BB_INITRAMFS_TARGET
:=$(IMAGE
).initramfs_lst
11 BB_INITRAMFS_TARGET_F
:=$(notdir $(BB_INITRAMFS_TARGET
))
13 $(BUSYBOX_INITRAMFS_DIR
)/.unpacked
: $(DL_DIR
)/$(BUSYBOX_SOURCE
)
14 rm -rf
$(BUILD_DIR
)/tmp
$(BUSYBOX_INITRAMFS_DIR
)
15 mkdir
-p
$(BUILD_DIR
)/tmp
16 $(BUSYBOX_UNZIP
) $(DL_DIR
)/$(BUSYBOX_SOURCE
) |
tar -C
$(BUILD_DIR
)/tmp
$(TAR_OPTIONS
) -
17 ifeq ($(BR2_PACKAGE_BUSYBOX_SNAPSHOT
),y
)
18 mv
$(BUILD_DIR
)/tmp
/busybox
$(BUSYBOX_INITRAMFS_DIR
)
20 mv
$(BUILD_DIR
)/tmp
/busybox-
$(BUSYBOX_VERSION
) $(BUSYBOX_INITRAMFS_DIR
)
22 ifeq ($(BR2_USE_UPDATES
),y
)
23 (cd
$(@D
) && $(SVN_UP
))
27 $(BUSYBOX_INITRAMFS_DIR
)/.config
$(BUSYBOX_INITRAMFS_DIR
)/.configured
: $(BUSYBOX_INITRAMFS_DIR
)/.unpacked
28 $(MAKE
) HOSTCC
="$(HOSTCC) $(HOST_CFLAGS)" \
29 CC
=$(TARGET_CC
) CROSS_COMPILE
="$(TARGET_CROSS)" \
30 CROSS
="$(TARGET_CROSS)" -C
$(BUSYBOX_INITRAMFS_DIR
) \
32 mv
$(BUSYBOX_INITRAMFS_DIR
)/.config
$(BUSYBOX_INITRAMFS_DIR
)/.config.no
33 (echo CONFIG_PREFIX
=\"$(BR2_INITRAMFS_DIR
)\"; \
34 echo CONFIG_NITPICK
=y
; \
35 echo CONFIG_FEATURE_BUFFERS_USE_MALLOC
=y
; \
36 echo CONFIG_INCLUDE_SUSv2
=n
; \
38 echo CONFIG_CHROOT
=y
; \
40 echo CONFIG_FEATURE_DD_IBS_OBS
=y
; \
42 echo CONFIG_FALSE
=y
; \
43 echo CONFIG_GETTY
=y
; \
44 echo CONFIG_GUNZIP
=y
; \
46 echo CONFIG_HOSTNAME
=y
; \
48 echo CONFIG_INSMOD
=y
; \
52 echo CONFIG_LOGIN
=y
; \
54 echo CONFIG_MKDIR
=y
; \
55 echo CONFIG_MKFIFO
=y
; \
56 echo CONFIG_MKNOD
=y
; \
57 echo CONFIG_MODPROBE
=y
; \
58 echo CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS
=y
; \
59 echo CONFIG_FEATURE_MODPROBE_FANCY_ALIAS
=y
; \
60 echo CONFIG_FEATURE_CHECK_TAINTED_MODULE
=n
; \
61 echo CONFIG_FEATURE_2_4_MODULES
=n
; \
62 echo CONFIG_FEATURE_IP_ADDRESS
=y
; \
63 echo CONFIG_FEATURE_IP_LINK
=y
; \
64 echo CONFIG_FEATURE_IP_ROUTE
=y
; \
65 echo CONFIG_FEATURE_IP_TUNNEL
=y
; \
66 echo CONFIG_FEATURE_IP_RULE
=y
; \
67 echo CONFIG_FEATURE_IP_RARE_PROTOCOLS
=n
; \
68 echo CONFIG_MOUNT
=y
; \
70 echo CONFIG_FEATURE_SH_IS_MSH
=y
; \
72 echo CONFIG_READLINK
=y
; \
73 echo CONFIG_RMMOD
=y
; \
74 echo CONFIG_STATIC
=y
; \
75 echo CONFIG_SWITCH_ROOT
=y
; \
78 echo CONFIG_FEATURE_TFTP_GET
=y
; \
79 echo CONFIG_FEATURE_TFTP_PUT
=y
; \
81 echo CONFIG_UMOUNT
=y
; \
82 echo CONFIG_FEATURE_UMOUNT_ALL
=y
; \
83 echo CONFIG_UNAME
=y
; \
84 ) > $(BUSYBOX_INITRAMFS_DIR
)/.config
85 cp
-f
$(BUSYBOX_INITRAMFS_DIR
)/.config \
86 $(BUSYBOX_INITRAMFS_DIR
)/.config.prune
87 $(SED
) 's|\([^=]*\)=.*|/\1[^_]*/d|g' \
88 $(BUSYBOX_INITRAMFS_DIR
)/.config.prune
89 $(SED
) '' -f
$(BUSYBOX_INITRAMFS_DIR
)/.config.prune \
90 $(BUSYBOX_INITRAMFS_DIR
)/.config.no
91 cat
$(BUSYBOX_INITRAMFS_DIR
)/.config.no
>> \
92 $(BUSYBOX_INITRAMFS_DIR
)/.config
93 yes
"" |
$(MAKE
) CC
=$(TARGET_CC
) CROSS_COMPILE
="$(TARGET_CROSS)" \
94 HOSTCC
="$(HOSTCC) $(HOST_CFLAGS)" \
95 CROSS
="$(TARGET_CROSS)" -C
$(BUSYBOX_INITRAMFS_DIR
) \
100 $(BUSYBOX_INITRAMFS_DIR
)/busybox
: $(BUSYBOX_INITRAMFS_DIR
)/.configured
101 $(MAKE
) HOSTCC
="$(HOSTCC) $(HOST_CFLAGS)" \
102 CC
=$(TARGET_CC
) CROSS_COMPILE
="$(TARGET_CROSS)" \
103 CROSS
="$(TARGET_CROSS)" PREFIX
="$(TARGET_DIR)" \
104 ARCH
=$(KERNEL_ARCH
) \
105 EXTRA_CFLAGS
="$(TARGET_CFLAGS)" -C
$(BUSYBOX_INITRAMFS_DIR
) \
106 busybox.links busybox
107 ifeq ($(BR2_PREFER_IMA
)$(BR2_PACKAGE_BUSYBOX_SNAPSHOT
),yy
)
109 $(MAKE
) HOSTCC
="$(HOSTCC) $(HOST_CFLAGS)" \
110 CC
=$(TARGET_CC
) CROSS_COMPILE
="$(TARGET_CROSS)" \
111 CROSS
="$(TARGET_CROSS)" PREFIX
="$(TARGET_DIR)" \
112 ARCH
=$(KERNEL_ARCH
) STRIP
="$(STRIPCMD)" \
113 EXTRA_CFLAGS
="$(TARGET_CFLAGS)" -C
$(BUSYBOX_INITRAMFS_DIR
) \
114 -f scripts
/Makefile.IMA
117 $(BR2_INITRAMFS_DIR
)/bin
/busybox
: $(BUSYBOX_INITRAMFS_DIR
)/busybox
118 $(MAKE
) HOSTCC
="$(HOSTCC) $(HOST_CFLAGS)" \
119 CC
=$(TARGET_CC
) CROSS_COMPILE
="$(TARGET_CROSS)" \
120 CROSS
="$(TARGET_CROSS)" \
121 ARCH
=$(KERNEL_ARCH
) STRIP
="$(STRIPCMD)" \
122 EXTRA_CFLAGS
="$(TARGET_CFLAGS)" -C
$(BUSYBOX_INITRAMFS_DIR
) \
124 $(STRIPCMD
) $(STRIP_STRIP_ALL
) $@
127 $(BB_INITRAMFS_TARGET
): host-fakeroot makedevs
$(BR2_INITRAMFS_DIR
)/bin
/busybox
128 ln
-fs bin
/busybox
$(PROJECT_BUILD_DIR
)/initramfs
/init
129 mkdir
-p
$(PROJECT_BUILD_DIR
)/initramfs
/etc
130 for f in etc
/inittab etc
/shadow etc
/passwd
; do \
131 $(INSTALL
) -D target
/generic
/target_busybox_skeleton
/$$f \
132 $(PROJECT_BUILD_DIR
)/initramfs
/$$f; \
134 #$(INSTALL) -D -m0755 $(STAGING_DIR)/bin/makedev
135 rm -f
$(PROJECT_BUILD_DIR
)/_fakeroot.
$(BB_INITRAMFS_TARGET_F
)
136 (echo
"chown -R 0:0 $(PROJECT_BUILD_DIR)/initramfs"; \
137 echo
"$(STAGING_DIR)/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(PROJECT_BUILD_DIR)/initramfs"; \
138 echo
"$(CONFIG_SHELL) target/initramfs/gen_initramfs_list.sh -u 0 -g 0 $(PROJECT_BUILD_DIR)/initramfs > $(BB_INITRAMFS_TARGET)"; \
139 ) > $(PROJECT_BUILD_DIR
)/_fakeroot.
$(BB_INITRAMFS_TARGET_F
)
140 chmod
+x
$(PROJECT_BUILD_DIR
)/_fakeroot.
$(BB_INITRAMFS_TARGET_F
)
141 $(STAGING_DIR
)/usr
/bin
/fakeroot
-- \
142 $(PROJECT_BUILD_DIR
)/_fakeroot.
$(BB_INITRAMFS_TARGET_F
)
143 rm -f
$(PROJECT_BUILD_DIR
)/_fakeroot.
$(BB_INITRAMFS_TARGET_F
)
146 $(PROJECT_BUILD_DIR
)/.initramfs_done
: $(BR2_INITRAMFS_DIR
)/bin
/busybox \
147 $(BB_INITRAMFS_TARGET
)
150 busybox-initramfs-source
:
151 busybox-initramfs
: $(PROJECT_BUILD_DIR
)/.initramfs_done
153 busybox-initramfs-menuconfig
: host-sed
$(BUILD_DIR
) busybox-source
$(BUSYBOX_INITRAMFS_DIR
)/.configured
154 $(MAKE
) HOSTCC
="$(HOSTCC) $(HOST_CFLAGS)" __TARGET_ARCH
=$(ARCH
) \
155 -C
$(BUSYBOX_INITRAMFS_DIR
) menuconfig
157 busybox-initramfs-clean
:
158 -$(MAKE
) -C
$(BUSYBOX_INITRAMFS_DIR
) clean
159 rm -f
$(BUSYBOX_INITRAMFS_DIR
)/busybox
$(PROJECT_BUILD_DIR
)/.initramfs_
*
160 rm -rf
$(BR2_INITRAMFS_DIR
) $(BB_INITRAMFS_TARGET
)
162 busybox-initramfs-dirclean
:
163 rm -rf
$(BUSYBOX_INITRAMFS_DIR
) $(BR2_INITRAMFS_DIR
) \
164 $(PROJECT_BUILD_DIR
)/.initramfs_
*
166 #############################################################
168 # Toplevel Makefile options
170 #############################################################
171 ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS
),y
)
172 TARGETS
+=busybox-initramfs