Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1391e25

Browse files
committed
Generate disk images
1 parent d434ef6 commit 1391e25

File tree

3 files changed

+136
-65
lines changed

3 files changed

+136
-65
lines changed

‎resources/sfdisk.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
$SIZE_MBR,$SIZE_BOOTFS,0C,*
2+
$START_USERSFS,,,

‎resources/syslinux.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ LABEL NodeOS
77
SAY Booting NodeOS...
88
LINUX bzImage
99
INITRD initram.gz
10-
APPEND vga=0x318 ip=dhcp root=$USERSFS
10+
APPEND vga=0x318 ip=dhcp root=$USERSFS_UUID

‎scripts/build

Lines changed: 133 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ if [[ -z "$OUTPUT" ]]; then
5252
fi
5353

5454
if [[ "$USERSFS" ]]; then
55-
USERSFS=`blkid $USERSFS -o export | grep UUID`
55+
USERSFS_UUID=`blkid $USERSFS -o export | grep UUID`
5656
fi
5757

5858

@@ -63,7 +63,7 @@ source $TOOLCHAIN/scripts/adjustEnvVars.sh || exit $?
6363

6464
if [[ -d $OBJECTS ]]; then
6565
chmod -R u+w $OBJECTS &&
66-
rm -rf $OBJECTS || exit 10
66+
rm -rf $OBJECTS || exit 2
6767
fi
6868

6969

@@ -73,6 +73,7 @@ fi
7373

7474
EFIBOOT_DIR=$OBJECTS/efiboot
7575
EFIBOOT_IMG=$EFIBOOT_DIR.img
76+
DISK_DIR=$OBJECTS/disk
7677
IMG_DIR=$OBJECTS/img
7778
ISO_DIR=$OBJECTS/iso
7879

@@ -88,22 +89,46 @@ SRC_DIR=$__dirname/../deps/syslinux
8889
# Wrap the system up and pack it
8990
#
9091

92+
# Disk images are a composition of bootfs and usersfs
93+
function createDiskImage() {
94+
BOOTFS=1ドル
95+
96+
STEP_DIR=$DISK_DIR
97+
98+
# ToDo: sizes would need to be on cylinders and retain DOS compatibility
99+
# http://elinux.org/RPi_Advanced_Setup#Advanced_SD_card_setup
100+
101+
SIZE_MBR=$((2*1024)) # Reserve first megabyte for raspi. Is this needed?
102+
SIZE_BOOTFS=$(stat -L -c%s "$BOOTFS")
103+
SIZE_BOOTFS=$(($SIZE_BOOTFS/512))
104+
START_USERSFS=$(($SIZE_MBR+$SIZE_BOOTFS))
105+
106+
dd if=/dev/zero of=$OUTPUT count=$SIZE_MBR &&
107+
dd if=$BOOTFS of=$OUTPUT seek=$SIZE_MBR &&
108+
dd if=$USERSFS of=$OUTPUT seek=$START_USERSFS || exit 10
109+
110+
eval "echo \"$(<$__dirname/../resources/sfdisk.txt)\"" | \
111+
/sbin/sfdisk -uS --force $OUTPUT || exit 11
112+
}
113+
91114
function createPartitionImage() {
115+
BOOTFS=1ドル
116+
92117
# Copy kernel and initramfs on the partition image
93118

94119
cp $INITRAMFS $STEP_DIR/initram.gz || exit 20
95120

96121
# Create partition image
97122

98-
mkdir -p `dirname $OUTPUT` || exit 21
123+
mkdir -p `dirname $BOOTFS` || exit 21
99124

100125
# Size in KB
101126
# DISK_SIZE=`du -ks $STEP_DIR | cut -f1`
102127
DISK_SIZE=$((32*1024))
103128

104129
genfatfs -b $DISK_SIZE \
105130
--root $STEP_DIR \
106-
$OUTPUT || exit 22
131+
$BOOTFS || exit 22
107132
}
108133

109134
function createEfiImage() {
@@ -137,6 +162,8 @@ function createEfiImage() {
137162
}
138163

139164
function createIsoImage() {
165+
STEP_DIR=$ISO_DIR
166+
140167
mkdir -p $STEP_DIR || exit 40
141168

142169
eval "echo \"$(<$__dirname/../resources/syslinux.cfg)\"" \
@@ -178,108 +205,150 @@ function createIsoImage() {
178205
$SRC_DIR/bios/utils/isohybrid $OUTPUT || exit 47
179206
}
180207

208+
function createTar() {
209+
STEP_DIR=$OUTPUT
210+
211+
mkdir -p `dirname $STEP_DIR` || err 50
212+
213+
gunzip $BAREBONES -c | tar --delete init | gzip > $STEP_DIR &&
214+
cat $INITRAMFS >> $STEP_DIR || err 51
215+
}
216+
217+
218+
function img_pc() {
219+
STEP_DIR=$IMG_DIR
220+
221+
mkdir -p $STEP_DIR || err 60
222+
223+
BOOTFS=1ドル
224+
225+
# Copy SysLinux files
226+
227+
eval "echo \"$(<$__dirname/../resources/syslinux.cfg)\"" \
228+
> $STEP_DIR/syslinux.cfg || exit 61
229+
230+
cp $KERNEL $STEP_DIR || exit 62
231+
232+
createPartitionImage $BOOTFS || exit $?
233+
234+
$SRC_DIR/bios/mtools/syslinux --install $BOOTFS || exit 63
235+
}
236+
237+
function img_raspi() {
238+
STEP_DIR=$IMG_DIR
239+
240+
mkdir -p $STEP_DIR || err 70
241+
242+
BOOTFS=1ドル
243+
244+
# Copy Raspberry PI extra files
245+
# http://elinux.org/RPi_Advanced_Setup#Setting_up_the_boot_partition
246+
#
247+
# bootcode.bin, fixup.dat, start.elf, cmdline.txt
248+
(
249+
cd $STEP_DIR || exit 71
250+
251+
wget https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin || exit 72
252+
wget https://github.com/raspberrypi/firmware/raw/master/boot/fixup.dat || exit 73
253+
wget https://github.com/raspberrypi/firmware/raw/master/boot/start.elf || exit 74
254+
) || err $?
255+
256+
cp $__dirname/../resources/config.txt $DTS $STEP_DIR || exit 75
257+
258+
case $MACHINE in
259+
raspi)
260+
cp $KERNEL $STEP_DIR/kernel.img || exit 76
261+
;;
262+
263+
raspi2)
264+
cp $KERNEL $STEP_DIR/kernel7.img || exit 77
265+
;;
266+
267+
raspi3)
268+
echo arm_control=0x200 >> $STEP_DIR/config.txt &&
269+
cp $KERNEL $STEP_DIR/kernel7.img || exit 78
270+
;;
271+
272+
*)
273+
echo -e "${RED}Unknown MACHINE '$MACHINE'${CLR}"
274+
exit 79
275+
;;
276+
esac
277+
278+
createPartitionImage $BOOTFS || exit $?
279+
}
280+
181281

182282
case $MACHINE in
183283
pc)
184284
case $FORMAT in
185-
img) # FAT partition
186-
STEP_DIR=$IMG_DIR
187-
188-
mkdir -p $STEP_DIR || err 50
189-
190-
# Copy SysLinux files
285+
disk)
286+
if [[ -z "$USERSFS" ]]; then
287+
echo "-U is mandatory"
288+
exit 80
289+
fi
191290

192-
eval "echo \"$(<$__dirname/../resources/syslinux.cfg)\"" \
193-
> $STEP_DIR/syslinux.cfg || exit 51
291+
BOOTFS=$DISK_DIR/bootfs.img
194292

195-
cp $KERNEL $STEP_DIR || exit 52
293+
img_pc $BOOTFS &&
294+
createDiskImage $BOOTFS || exit $?
196295

197-
createPartitionImage || exit $?
296+
dd bs=440 count=1 conv=notrunc \
297+
if=$SRC_DIR/bios/mbr/mbr.bin of=$OUTPUT || err 81
298+
;;
198299

199-
$SRC_DIR/bios/mtools/syslinux --install $OUTPUT || exit 53
300+
img) # FAT partition
301+
img_pc $OUTPUT || exit $?
200302
;;
201303

202304
iso) # Hybrid ISO image for CDs and USB pendrives
203-
STEP_DIR=$ISO_DIR
204-
205305
createIsoImage || exit $?
206306
;;
207307

208308
tar) # Combine both barebones and initramfs tarfiles in a single one
209-
STEP_DIR=$OUTPUT
210-
211-
mkdir -p `dirname $STEP_DIR` || err 60
212-
213-
gunzip $BAREBONES -c | tar --delete init | gzip > $STEP_DIR &&
214-
cat $INITRAMFS >> $STEP_DIR || err 61
309+
createTar || exit $?
215310
;;
216311

217312
*)
218313
echo -e "${RED}Unknown FORMAT '$FORMAT'${CLR}"
219-
exit 70
314+
exit 90
220315
;;
221316
esac
222317
;;
223318

224319
raspi|raspi2|raspi3) # FAT partition for Raspberry PI
225320
if [[ -z "$DTS" ]]; then
226321
echo "-D is mandatory for MACHINE '$MACHINE'"
227-
exit 80
322+
exit 100
228323
fi
229324

230325
case $FORMAT in
231-
img)
232-
STEP_DIR=$IMG_DIR
233-
234-
mkdir -p $STEP_DIR || err 90
326+
disk)
327+
if [[ -z "$USERSFS" ]]; then
328+
echo "-U is mandatory"
329+
exit 110
330+
fi
235331

236-
# Copy Raspberry PI extra files
237-
# http://elinux.org/RPi_Advanced_Setup#Setting_up_the_boot_partition
238-
#
239-
# bootcode.bin, fixup.dat, start.elf, cmdline.txt
240-
(
241-
cd $STEP_DIR || exit 91
332+
BOOTFS=$DISK_DIR/bootfs.img
242333

243-
wget https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin || exit 92
244-
wget https://github.com/raspberrypi/firmware/raw/master/boot/fixup.dat || exit 93
245-
wget https://github.com/raspberrypi/firmware/raw/master/boot/start.elf || exit 94
246-
) || err $?
247-
248-
cp $__dirname/../resources/config.txt $DTS $STEP_DIR || exit 95
249-
250-
case $MACHINE in
251-
raspi)
252-
cp $KERNEL $STEP_DIR/kernel.img || exit 96
253-
;;
254-
255-
raspi2)
256-
cp $KERNEL $STEP_DIR/kernel7.img || exit 97
257-
;;
258-
259-
raspi3)
260-
echo arm_control=0x200 >> $STEP_DIR/config.txt &&
261-
cp $KERNEL $STEP_DIR/kernel7.img || exit 98
262-
;;
263-
264-
*)
265-
echo -e "${RED}Unknown MACHINE '$MACHINE'${CLR}"
266-
exit 99
267-
;;
268-
esac
334+
img_raspi $BOOTFS &&
335+
createDiskImage $BOOTFS || exit $?
336+
;;
269337

270-
createPartitionImage || exit $?
338+
img)
339+
img_raspi $OUTPUT || exit $?
271340
;;
272341

273342
*)
274343
echo -e "${RED}Unknown FORMAT '$FORMAT'${CLR}"
275-
exit 100
344+
exit 120
276345
;;
277346
esac
278347
;;
279348

280349
*)
281350
echo -e "${RED}Unknown MACHINE '$MACHINE'${CLR}"
282-
exit 110
351+
exit 130
283352
;;
284353
esac
285354

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /