]>
Commit | Line | Data |
---|---|---|
675c1ffa KZ |
1 | #!/bin/bash |
2 | ||
3 | # | |
4 | # This file is part of util-linux. | |
5 | # | |
6 | # This file is free software; you can redistribute it and/or modify | |
7 | # it under the terms of the GNU General Public License as published by | |
8 | # the Free Software Foundation; either version 2 of the License, or | |
9 | # (at your option) any later version. | |
10 | # | |
11 | # This file is distributed in the hope that it will be useful, | |
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | # GNU General Public License for more details. | |
15 | # | |
16 | ||
17 | TS_TOPDIR="$(dirname $0)/../.." | |
18 | TS_DESC="MBR - non-dos mode" | |
19 | ||
20 | . $TS_TOPDIR/functions.sh | |
21 | ts_init "$*" | |
22 | ||
23 | # cmd to changes system id to 0x1 | |
24 | FDISK_CMD_INIT="x\ni\n0x1\nr\n" | |
25 | FDISK_CMD_WRITE_CLOSE="w\nq\n" | |
26 | FDISK_CMD_CREATE_DOSLABEL="o\n" #create dos label | |
27 | FDISK_CMD_CREATE_1PRIMARY="n\np\n\n\n+3M\n" # create primary partition of size 3MiB | |
28 | FDISK_CMD_CREATE_2PRIMARY="n\np\n\n\n+2M\n" # create primary partition of size 2MiB | |
29 | FDISK_CMD_SET_ACTIVE="a\n1\n" # set first partition active | |
30 | FDISK_CMD_CREATE_EXTENDED="n\ne\n\n\n\n" # create extended partition | |
31 | FDISK_CMD_CREATE_LOGICAL="n\nl\n\n+2M\n" # create next logical partition of size 10 sectors | |
1aefdc35 | 32 | FDISK_CMD_DELETE_LOGICALS="d\n6\nd\n5\nd\n6\n" # delete middle, head, tail, last partitions |
675c1ffa KZ |
33 | FDISK_CMD_DELETE_1PRIMARY="d\n1\n" # delete first primary |
34 | FDISK_CMD_DELETE_2PRIMARY="d\n2\n" # delete first primary | |
35 | FDISK_CMD_DELETE_EXTENDED="d\n3\n" # delete second primary | |
36 | ||
37 | function print_layout { | |
38 | echo -ne "\n---layout----------" >> $TS_OUTPUT | |
31d33229 KZ |
39 | $TS_CMD_FDISK -l ${TEST_IMAGE_NAME} | \ |
40 | sed 's/^.*\.img/__ts_dev__/g; | |
41 | s/^[[:blank:]]*Device Boot/ Device Boot/g' >> $TS_OUTPUT 2>&1 | |
675c1ffa KZ |
42 | echo -ne "-------------------\n\n" >> $TS_OUTPUT |
43 | } | |
44 | ||
45 | #set -x | |
46 | ||
47 | ts_log "Initialize empty image" | |
48 | TEST_IMAGE_NAME=$(ts_image_init 20) # 20 MiB | |
49 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
50 | ||
51 | # need to run init twice, to change system ID after new label, otherwise system | |
52 | # ID will be random and will screw up md5's | |
53 | ts_log "Create new DOS partition table" | |
54 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_DOSLABEL}${FDISK_CMD_INIT}${FDISK_CMD_WRITE_CLOSE}" \ | |
55 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
56 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
57 | ||
58 | print_layout | |
59 | ||
60 | ts_log "Create 1st primary partition" | |
61 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ | |
62 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
63 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
64 | ||
65 | print_layout | |
66 | ||
67 | ts_log "Set primary partition active" | |
68 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_SET_ACTIVE}${FDISK_CMD_WRITE_CLOSE}" | \ | |
69 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
70 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
71 | ||
72 | print_layout | |
73 | ||
74 | ts_log "Re-create 1st primary partition" | |
75 | echo -e "${FDISK_CMD_INIT}d\n${FDISK_CMD_CREATE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ | |
76 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
77 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
78 | ||
79 | print_layout | |
80 | ||
81 | ts_log "Create 2nd primary partition" | |
82 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_2PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ | |
83 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
84 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
85 | ||
86 | print_layout | |
87 | ||
88 | ts_log "Create extended partition" | |
89 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_EXTENDED}${FDISK_CMD_WRITE_CLOSE}" | \ | |
90 | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
91 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
92 | ||
93 | print_layout | |
94 | ||
95 | ts_log "Create logical partitions" | |
96 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_WRITE_CLOSE}" \ | |
97 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
98 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
99 | ||
100 | print_layout | |
101 | ||
102 | ts_log "Delete logical partitions" | |
103 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_DELETE_LOGICALS}${FDISK_CMD_WRITE_CLOSE}" \ | |
104 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
105 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
106 | ||
107 | print_layout | |
108 | ||
109 | ts_log "Create another logical partition" | |
110 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_WRITE_CLOSE}" \ | |
111 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
112 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
113 | ||
114 | print_layout | |
115 | ||
116 | ts_log "Delete primary partition" | |
117 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_DELETE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" \ | |
118 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
119 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
120 | ||
121 | print_layout | |
122 | ||
123 | ts_log "Delete primary partition" | |
124 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_DELETE_2PRIMARY}${FDISK_CMD_WRITE_CLOSE}" \ | |
125 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null | |
126 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
127 | ||
128 | print_layout | |
129 | ||
130 | ts_log "Delete extended partition" | |
131 | echo -e "${FDISK_CMD_INIT}${FDISK_CMD_DELETE_EXTENDED}${FDISK_CMD_WRITE_CLOSE}" \ | |
132 | | $TS_CMD_FDISK -c=dos -u=cylinders ${TEST_IMAGE_NAME} &> /dev/null | |
133 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
134 | ||
135 | print_layout | |
136 | ||
137 | ts_finalize |