]>
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 | ||
e130ce53 | 17 | TS_TOPDIR="${0%/*}/../.." |
675c1ffa KZ |
18 | TS_DESC="MBR - non-dos mode" |
19 | ||
20 | . $TS_TOPDIR/functions.sh | |
21 | ts_init "$*" | |
22 | ||
2f791546 SK |
23 | ts_check_test_command "$TS_CMD_FDISK" |
24 | ||
675c1ffa KZ |
25 | # cmd to changes system id to 0x1 |
26 | FDISK_CMD_INIT="x\ni\n0x1\nr\n" | |
27 | FDISK_CMD_WRITE_CLOSE="w\nq\n" | |
28 | FDISK_CMD_CREATE_DOSLABEL="o\n" #create dos label | |
29 | FDISK_CMD_CREATE_1PRIMARY="n\np\n\n\n+3M\n" # create primary partition of size 3MiB | |
30 | FDISK_CMD_CREATE_2PRIMARY="n\np\n\n\n+2M\n" # create primary partition of size 2MiB | |
31 | FDISK_CMD_SET_ACTIVE="a\n1\n" # set first partition active | |
2f791546 | 32 | FDISK_CMD_CREATE_EXTENDED="n\ne\n\n\n\n" # create extended partition |
675c1ffa | 33 | FDISK_CMD_CREATE_LOGICAL="n\nl\n\n+2M\n" # create next logical partition of size 10 sectors |
1aefdc35 | 34 | FDISK_CMD_DELETE_LOGICALS="d\n6\nd\n5\nd\n6\n" # delete middle, head, tail, last partitions |
675c1ffa KZ |
35 | FDISK_CMD_DELETE_1PRIMARY="d\n1\n" # delete first primary |
36 | FDISK_CMD_DELETE_2PRIMARY="d\n2\n" # delete first primary | |
37 | FDISK_CMD_DELETE_EXTENDED="d\n3\n" # delete second primary | |
38 | ||
39 | function print_layout { | |
3df4adac | 40 | echo -ne "\n---layout----------\n" >> $TS_OUTPUT |
e1fe1815 | 41 | $TS_CMD_FDISK -l ${TEST_IMAGE_NAME} >> $TS_OUTPUT |
675c1ffa KZ |
42 | echo -ne "-------------------\n\n" >> $TS_OUTPUT |
43 | } | |
44 | ||
2f791546 | 45 | #set -x |
675c1ffa KZ |
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" | |
e1fe1815 | 61 | echo -e "${FDISK_CMD_CREATE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
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" | |
e1fe1815 | 68 | echo -e "${FDISK_CMD_SET_ACTIVE}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
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" | |
e1fe1815 | 75 | echo -e "d\n${FDISK_CMD_CREATE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
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" | |
e1fe1815 | 82 | echo -e "${FDISK_CMD_CREATE_2PRIMARY}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
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" | |
e1fe1815 | 89 | echo -e "${FDISK_CMD_CREATE_EXTENDED}${FDISK_CMD_WRITE_CLOSE}" | \ |
675c1ffa KZ |
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" | |
e1fe1815 | 96 | echo -e "${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
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" | |
e1fe1815 | 103 | echo -e "${FDISK_CMD_DELETE_LOGICALS}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
104 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
105 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
106 | ||
107 | print_layout | |
108 | ||
e1fe1815 | 109 | |
675c1ffa | 110 | ts_log "Create another logical partition" |
e1fe1815 | 111 | echo -e "${FDISK_CMD_CREATE_LOGICAL}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
112 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
113 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
114 | ||
115 | print_layout | |
116 | ||
117 | ts_log "Delete primary partition" | |
e1fe1815 | 118 | echo -e "${FDISK_CMD_DELETE_1PRIMARY}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
119 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
120 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
121 | ||
122 | print_layout | |
123 | ||
124 | ts_log "Delete primary partition" | |
e1fe1815 | 125 | echo -e "${FDISK_CMD_DELETE_2PRIMARY}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
126 | | $TS_CMD_FDISK ${TEST_IMAGE_NAME} &> /dev/null |
127 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
128 | ||
129 | print_layout | |
130 | ||
131 | ts_log "Delete extended partition" | |
e1fe1815 | 132 | echo -e "${FDISK_CMD_DELETE_EXTENDED}${FDISK_CMD_WRITE_CLOSE}" \ |
675c1ffa KZ |
133 | | $TS_CMD_FDISK -c=dos -u=cylinders ${TEST_IMAGE_NAME} &> /dev/null |
134 | ts_image_md5sum >> $TS_OUTPUT 2>&1 | |
135 | ||
136 | print_layout | |
137 | ||
e1fe1815 KZ |
138 | ts_fdisk_clean ${TEST_IMAGE_NAME} |
139 | ||
675c1ffa | 140 | ts_finalize |