Когда Вы используете dd
на /dev/sdb
вместо /dev/sdb1
или /dev/sdb2
, Вы копируете все разделы с упомянутого диска в один файл.
Необходимо смонтировать каждый раздел отдельно.
Для монтирования раздела из файла необходимо сначала узнать, где в файле, что раздел находится.
Используя Ваш вывод от file -s sdb.img
мы находим startsectors
для каждого раздела:
sdb.img: загрузочный сектор x86; раздел 1: ID=0x12, starthead 1, startsector 63, 10 233 342 сектора; раздел 2: ID=0xc, активный, starthead 0, startsector 10233405, 72 517 410 секторов; раздел 3: ID=0xc, starthead 0, startsector 82750815, 73 545 570 секторов, код сместил 0xc0
Раздел Startsector
1 63
2 10233405
3 82750815
Смонтировать единственный раздел, где X
startsector того раздела, выполненного:
mount ~/sdb.img /mnt/sdb -o offset=$((X*512))
Таким образом для монтирования второго раздела необходимо будет работать:
mount ~/sdb.img /mnt/sdb2 -o offset=$((10233405*512))
заметка на полях: удостоверьтесь это /mnt/sdb2
существует перед выполнением этого.
Развлекайтесь!
обновление: В ответе я предположил, что размер сектора для Вас отображает, был 512
, посмотрите этот вопрос о том, как вычислить это.
Это должно быть возможно, хотя я не столкнулся ни с какой программой для генерации файла в этом типе формата .raw.
Если Вы просто интересуетесь тем, как это работает и что должно быть записано, делают устройство, чтобы иметь звуковой вывод, можно изучить исходный код носков. Эта программа может использоваться, чтобы транскодировать данный входной файл и играть его выводом к /dev/dsp
. (Запустите программу с -t oss
опция).
Если бы Вы просто ищете самое простое для проигрывания звука от консоли, Вы были бы, вероятно, очень более обеспеченным использованием ALSA вместо OSS. Использовать aplay
это - часть alsa-utils. Вам по всей вероятности просто установят его по умолчанию.
расширенное руководство по написанию сценариев на bash . Пример 29.2:
#!/bin/b[as][1]h
# music.sh
# Music without external files
# Author: Antonio Macchi
# Used in ABS Guide with permission.
# /dev/dsp default = 8000 frames per second, 8 bits per frame (1 byte),
#+ 1 channel (mono)
duration=2000 # If 8000 bytes = 1 second, then 2000 = 1/4 second.
volume=$'\xc0' # Max volume = \xff (or \x00).
mute=$'\x80' # No volume = \x80 (the middle).
function mknote () # $1=Note Hz in bytes (e.g. A = 440Hz ::
{ #+ 8000 fps / 440 = 16 :: A = 16 bytes per second)
for t in `seq 0 $duration`
do
test $(( $t % $1 )) = 0 && echo -n $volume || echo -n $mute
done
}
e=`mknote 49`
g=`mknote 41`
a=`mknote 36`
b=`mknote 32`
c=`mknote 30`
cis=`mknote 29`
d=`mknote 27`
e2=`mknote 24`
n=`mknote 32767`
# European notation.
echo -n "$g$e2$d$c$d$c$a$g$n$g$e$n$g$e2$d$c$c$b$c$cis$n$cis$d \
$n$g$e2$d$c$d$c$a$g$n$g$e$n$g$a$d$c$b$a$b$c" > /dev/dsp
# dsp = Digital Signal Processor
exit # A "bonny" example of an elegant shell script!
Есть ли комментарии к вычислениям ...
Если вы используете ALSA, вы можете использовать такую игру, как:
cat foobar.wav | aplay
Результат выглядит так:
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
По крайней мере, во FreeBSD /dev/dsp
ожидается 8-битное -беззнаковое монофоническое аудио с частотой дискретизации 8000 Гц. Чтобы преобразовать существующий файл, например. music.m4a , в этот формат сffmpeg
(как необработанный звук, без заголовков ), сделать:
ffmpeg -i music.m4a -ar 8000 -ac 1 -c:a pcm_u8 -f u8 music.raw
Полученный файл music.raw
затем можно воспроизвести с помощью:
cat music.raw > /dev/dsp