#!/usr/bin/env bash function usage { echo "Usage: prepare_image image_type kernel_image rootfs_image header_size" echo "Padd root and kernel image to the correct size and append the jffs2 start marker as needed" exit 1 } function pad_file { echo "Padding $1 to size $2" dd if=$1 of=$1.paddingtempfile bs=$2 count=1 conv=sync &> /dev/null mv $1.paddingtempfile $1 } #filesize filestart padding function calc_pad { [ $((($1 + $2) & ($3 - 1))) == 0 ] && { echo $1 return 0 } echo $(((($1 + $2) | ($3 - 1)) + 1 - $2)) } function prep_squash { echo "kernel_size: $kernel_size" echo "header_size: $header_size" kernel_pad_size=$(calc_pad $kernel_size $header_size 32) kernel_end=$(($header_size + $kernel_pad_size)) pad_file $kernel_image $kernel_pad_size #4k rootfs_pad_size=$(calc_pad $rootfs_size $kernel_end 4096) pad_file $rootfs_image $rootfs_pad_size echo -ne '\xde\xad\xc0\xde' >> $rootfs_image #8k rootfs_pad_size=$(calc_pad $rootfs_size $kernel_end 8192) [ $rootfs_pad_size == rootfs_old_padsize ] || { pad_file $rootfs_image $rootfs_pad_size rootfs_old_padsize=$rootfs_pad_size echo -ne '\xde\xad\xc0\xde' >> $rootfs_image } #64k rootfs_pad_size=$(calc_pad $rootfs_size $kernel_end 65536) [ $rootfs_pad_size == rootfs_old_padsize ] || { pad_file $rootfs_image $rootfs_pad_size rootfs_old_padsize=$rootfs_pad_size echo -ne '\xde\xad\xc0\xde' >> $rootfs_image } #128k rootfs_pad_size=$(calc_pad $rootfs_size $kernel_end 131072) [ $rootfs_pad_size == rootfs_old_padsize ] || { pad_file $rootfs_image $rootfs_pad_size rootfs_old_padsize=$rootfs_pad_size echo -ne '\xde\xad\xc0\xde' >> $rootfs_image } } function prep_jffs2 { kernel_pad_size=$(calc_pad $kernel_size $header_size $1) pad_file $kernel_image $kernel_pad_size } image_type=$1 kernel_image=$2 rootfs_image=$3 header_size=$4 if [ -z "$image_type" ] || [ -z "$rootfs_image" ] || [ -z "$kernel_image" ] || [ -z "$header_size" ]; then usage fi if [ ! -e "$rootfs_image" ] || [ -z "$kernel_image" ]; then echo "input file not found" exit 1 fi kernel_size=$(stat -c "%s" "$kernel_image") rootfs_size=$(stat -c "%s" "$rootfs_image") if [ $kernel_size == 0 ] || [ $rootfs_size == 0 ]; then echo "kernel or rootfs empty" exit 1 fi case $image_type in squashfs ) prep_squash ;; jffs2-64k ) prep_jffs2 65536 ;; jffs2-128k ) prep_jffs2 131072 ;; * ) echo "Unknown image type" exit 1 ;; esac _aout9.c'>
path: root/tools/libxc/xc_load_aout9.c
blob: 9a6ce0be41f228dcbcc9940e5b6ffd70d1dd16aa (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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179