{"id":27400,"date":"2023-07-04T12:51:25","date_gmt":"2022-11-24T17:28:02","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/"},"modified":"2025-08-12T02:29:48","modified_gmt":"2025-08-11T18:29:48","slug":"%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/","title":{"rendered":"\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD"},"content":{"rendered":"<p>\u9019\u662f\u4e00\u500b\u70ba\u4e86\u9032\u884c\u8abf\u67e5\u6240\u5275\u5efa\u7684\u793a\u7bc4\u7a0b\u5f0f\u3002\u7531\u65bc\u5728Debian\u4e0a\u5f88\u5c11\u6709\u80fd\u5920\u8a2a\u554f\u97f3\u983b\u5149\u789f\u7684\u793a\u7bc4\u7a0b\u5f0f\uff0c\u6240\u4ee5\u6211\u5c07\u5176\u653e\u5728\u9019\u88e1\u3002\u6211\u5df2\u7d93\u5728Debian 9.5\u4e0a\u9032\u884c\u4e86\u7de8\u8b6f\u548c\u64cd\u4f5c\u78ba\u8a8d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"cp\">#include &lt;stdio.h&gt;              \/\/ printf, perror\r\n#include &lt;fcntl.h&gt;              \/\/ open\r\n#include &lt;unistd.h&gt;             \/\/ close, write\r\n#include &lt;sys\/ioctl.h&gt;          \/\/ ioctl\r\n#include &lt;string.h&gt;             \/\/ memset, memcpy\r\n#include &lt;stdlib.h&gt;             \/\/ malloc, free\r\n#include &lt;linux\/cdrom.h&gt;        \/\/\r\n<\/span><span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"cp\">#define LBA2MIN(l)      (__u8)((l \/ CD_FRAMES) \/ CD_SECS)\r\n#define LBA2SEC(l)      (__u8)((l \/ CD_FRAMES) % CD_SECS)\r\n#define LBA2FRAME(l)    (__u8)(l % CD_FRAMES)\r\n#define MSF2LBA(m,s,f)  (int)((m * CD_SECS + s) * CD_FRAMES + f - CD_MSF_OFFSET)\r\n<\/span><span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">cdrom_open<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span> <span class=\"kt\">char<\/span> <span class=\"o\">*<\/span><span class=\"n\">pathname<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">flags<\/span><span class=\"p\">,<\/span> <span class=\"n\">mode_t<\/span> <span class=\"n\">mode<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">fd<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">fd<\/span> <span class=\"o\">=<\/span> <span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"n\">pathname<\/span><span class=\"p\">,<\/span> <span class=\"n\">flags<\/span><span class=\"p\">,<\/span> <span class=\"n\">mode<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_open: open\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">fd<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">cdrom_close<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_close: close\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">off_t<\/span> <span class=\"nf\">cdrom_lseek<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"kt\">off_t<\/span> <span class=\"n\">offset<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">whence<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">off_t<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">lseek<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">offset<\/span><span class=\"p\">,<\/span> <span class=\"n\">whence<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_lseek: lseek\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">ssize_t<\/span> <span class=\"nf\">cdrom_read<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"kt\">void<\/span> <span class=\"o\">*<\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span> <span class=\"kt\">size_t<\/span> <span class=\"n\">count<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">ssize_t<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">read<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">buf<\/span><span class=\"p\">,<\/span> <span class=\"n\">count<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_read: read\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">ssize_t<\/span> <span class=\"nf\">cdrom_write<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"k\">const<\/span> <span class=\"kt\">void<\/span> <span class=\"o\">*<\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span> <span class=\"kt\">size_t<\/span> <span class=\"n\">count<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">ssize_t<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">write<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">buf<\/span><span class=\"p\">,<\/span> <span class=\"n\">count<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_write: write\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">cdrom_ioctl<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"kt\">unsigned<\/span> <span class=\"kt\">long<\/span> <span class=\"n\">request<\/span><span class=\"p\">,<\/span> <span class=\"kt\">void<\/span> <span class=\"o\">*<\/span><span class=\"n\">argp<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ioctl<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">request<\/span><span class=\"p\">,<\/span> <span class=\"n\">argp<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_ioctl: ioctl\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">cdrom_read_tochdr<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"k\">struct<\/span> <span class=\"n\">cdrom_tochdr<\/span> <span class=\"o\">*<\/span><span class=\"n\">header<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"n\">header<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span> <span class=\"n\">cdrom_tochdr<\/span><span class=\"p\">));<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ioctl<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">CDROMREADTOCHDR<\/span><span class=\"p\">,<\/span> <span class=\"n\">header<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_read_tochdr: ioctl\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">cdrom_read_tocentry<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"k\">struct<\/span> <span class=\"n\">cdrom_tocentry<\/span> <span class=\"o\">*<\/span><span class=\"n\">entry<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"k\">struct<\/span> <span class=\"n\">cdrom_tocentry<\/span> <span class=\"n\">p<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">p<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span> <span class=\"n\">cdrom_tocentry<\/span><span class=\"p\">));<\/span>\r\n    <span class=\"n\">p<\/span><span class=\"p\">.<\/span><span class=\"n\">cdte_format<\/span> <span class=\"o\">=<\/span> <span class=\"n\">entry<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">cdte_format<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"n\">p<\/span><span class=\"p\">.<\/span><span class=\"n\">cdte_track<\/span> <span class=\"o\">=<\/span> <span class=\"n\">entry<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">cdte_track<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ioctl<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">CDROMREADTOCENTRY<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">p<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_read_tocentry: ioctl\"<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"n\">memcpy<\/span><span class=\"p\">(<\/span><span class=\"n\">entry<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">p<\/span><span class=\"p\">,<\/span> <span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span> <span class=\"n\">cdrom_tocentry<\/span><span class=\"p\">));<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">cdrom_reset<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ioctl<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">CDROMRESET<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_reset: ioctl\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">cdrom_select_speed<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">speed<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">speed<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">speed<\/span> <span class=\"o\">=<\/span> <span class=\"mh\">0xffff<\/span><span class=\"p\">;<\/span>         <span class=\"c1\">\/\/ set to max<\/span>\r\n    <span class=\"k\">else<\/span>\r\n        <span class=\"n\">speed<\/span> <span class=\"o\">*=<\/span> <span class=\"mi\">177<\/span><span class=\"p\">;<\/span>           <span class=\"c1\">\/\/ Nx to kbytes\/s<\/span>\r\n\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ioctl<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">CDROM_SELECT_SPEED<\/span><span class=\"p\">,<\/span> <span class=\"n\">speed<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_select_speed: ioctl\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">cdrom_get_mcn<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"k\">struct<\/span> <span class=\"n\">cdrom_mcn<\/span> <span class=\"o\">*<\/span><span class=\"n\">mcn<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"n\">mcn<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span> <span class=\"n\">cdrom_mcn<\/span><span class=\"p\">));<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ioctl<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">CDROM_GET_MCN<\/span><span class=\"p\">,<\/span> <span class=\"n\">mcn<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_get_mcn: ioctl\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">cdrom_read_audio<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"k\">struct<\/span> <span class=\"n\">cdrom_read_audio<\/span> <span class=\"o\">*<\/span><span class=\"n\">ra<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\r\n\r\n    <span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"n\">ra<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"n\">ra<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">nframes<\/span> <span class=\"o\">*<\/span> <span class=\"n\">CD_FRAMESIZE_RAW<\/span><span class=\"p\">));<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"n\">ioctl<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">fd<\/span><span class=\"p\">,<\/span> <span class=\"n\">CDROMREADAUDIO<\/span><span class=\"p\">,<\/span> <span class=\"n\">ra<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cdrom_read_audio: ioctl\"<\/span><span class=\"p\">);<\/span>\r\n\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n<span class=\"kt\">int<\/span> <span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">argc<\/span><span class=\"p\">,<\/span> <span class=\"kt\">char<\/span> <span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"p\">[])<\/span>\r\n<span class=\"p\">{<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">ifd<\/span><span class=\"p\">,<\/span> <span class=\"n\">ofd<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"kt\">char<\/span> <span class=\"o\">*<\/span><span class=\"n\">ipathname<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"\/dev\/cdrom\"<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"kt\">char<\/span> <span class=\"o\">*<\/span><span class=\"n\">opathname<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\".\/dump.bin\"<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"k\">struct<\/span> <span class=\"n\">cdrom_tochdr<\/span> <span class=\"n\">header<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"k\">struct<\/span> <span class=\"n\">cdrom_tocentry<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"mi\">99<\/span><span class=\"p\">];<\/span>\r\n    <span class=\"k\">struct<\/span> <span class=\"n\">cdrom_mcn<\/span> <span class=\"n\">mcn<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"k\">struct<\/span> <span class=\"n\">cdrom_read_audio<\/span> <span class=\"n\">ra<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"kt\">int<\/span> <span class=\"n\">i<\/span><span class=\"p\">,<\/span> <span class=\"n\">trk<\/span><span class=\"p\">,<\/span> <span class=\"n\">lba0<\/span><span class=\"p\">,<\/span> <span class=\"n\">lba1<\/span><span class=\"p\">;<\/span>\r\n<span class=\"c1\">\/\/ --- cdrom_open -------------------------------------------------------------<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"p\">((<\/span><span class=\"n\">ifd<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cdrom_open<\/span><span class=\"p\">(<\/span><span class=\"n\">ipathname<\/span><span class=\"p\">,<\/span> <span class=\"n\">O_RDONLY<\/span> <span class=\"o\">|<\/span> <span class=\"n\">O_NONBLOCK<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">))<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\r\n<span class=\"c1\">\/\/ --- cdrom_reset ------------------------------------------------------------<\/span>\r\n<span class=\"cm\">\/*  if (cdrom_reset(&amp;ifd) &lt; 0) {\r\n        cdrom_close(&amp;ifd);\r\n        return -1;\r\n    }*\/<\/span>\r\n<span class=\"c1\">\/\/ --- cdrom_select_speed -----------------------------------------------------<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">cdrom_select_speed<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">ifd<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"n\">cdrom_close<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">ifd<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"p\">}<\/span>\r\n<span class=\"c1\">\/\/ --- cdrom_read_tochdr ------------------------------------------------------<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">cdrom_read_tochdr<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">ifd<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">header<\/span><span class=\"p\">)<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"n\">cdrom_close<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">ifd<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"p\">}<\/span>\r\n<span class=\"c1\">\/\/ --- cdrom_get_mcn ----------------------------------------------------------<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">cdrom_get_mcn<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">ifd<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">mcn<\/span><span class=\"p\">)<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"n\">cdrom_close<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">ifd<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"p\">}<\/span>\r\n<span class=\"c1\">\/\/ --- cdrom_read_tocentry ----------------------------------------------------<\/span>\r\n    <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"n\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"n\">trk<\/span> <span class=\"o\">=<\/span> <span class=\"n\">header<\/span><span class=\"p\">.<\/span><span class=\"n\">cdth_trk0<\/span><span class=\"p\">;<\/span> <span class=\"n\">trk<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"n\">header<\/span><span class=\"p\">.<\/span><span class=\"n\">cdth_trk1<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">,<\/span> <span class=\"n\">trk<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">trk<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"n\">header<\/span><span class=\"p\">.<\/span><span class=\"n\">cdth_trk0<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">trk<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"n\">header<\/span><span class=\"p\">.<\/span><span class=\"n\">cdth_trk1<\/span><span class=\"p\">)<\/span>\r\n            <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_track<\/span> <span class=\"o\">=<\/span> <span class=\"n\">trk<\/span><span class=\"p\">;<\/span>\r\n        <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">trk<\/span> <span class=\"o\">&gt;<\/span> <span class=\"n\">header<\/span><span class=\"p\">.<\/span><span class=\"n\">cdth_trk1<\/span><span class=\"p\">)<\/span>\r\n            <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_track<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CDROM_LEADOUT<\/span><span class=\"p\">;<\/span>\r\n        <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_format<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CDROM_LBA<\/span><span class=\"p\">;<\/span>\r\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">cdrom_read_tocentry<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">ifd<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">])<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"n\">cdrom_close<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">ifd<\/span><span class=\"p\">);<\/span>\r\n            <span class=\"k\">return<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\r\n        <span class=\"p\">}<\/span>\r\n    <span class=\"p\">}<\/span>\r\n<span class=\"c1\">\/\/ --- cdrom_read_audio -------------------------------------------------------<\/span>\r\n<span class=\"c\">#if 0\r\n    if ((ofd = cdrom_open(opathname, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR)) &lt; 0) {\r\n        ret = -1;\r\n    } else {\r\n        ra.addr_format = CDROM_LBA; \/\/ CDROM_LBA or CDROM_MSF\r\n        ra.nframes = 50;        \/\/ number of 2352-byte-frames to read at once\r\n        \/\/ frame buffer (size: nframes*2352 bytes)\r\n        if ((ra.buf = malloc(ra.nframes * CD_FRAMESIZE_RAW)) == NULL) {\r\n            perror(\"malloc:ra.buf\");\r\n            ret = -1;\r\n            goto extit_loop2;\r\n        }\r\n        \/\/ frame address\r\n        for (i = 0, trk = header.cdth_trk0; trk &lt;= header.cdth_trk1; i++, trk++);\r\n        if (entry[0].cdte_format == CDROM_LBA) {\r\n            lba0 = entry[0].cdte_addr.lba;\r\n            lba1 = entry[i].cdte_addr.lba;\r\n        } else {\r\n            lba0 = MSF2LBA(entry[0].cdte_addr.msf.minute, entry[0].cdte_addr.msf.second, entry[0].cdte_addr.msf.frame);\r\n            lba1 = MSF2LBA(entry[i].cdte_addr.msf.minute, entry[i].cdte_addr.msf.second, entry[i].cdte_addr.msf.frame);\r\n        }\r\n        for (ra.addr.lba = lba0; (ra.addr.lba + ra.nframes) &lt; lba1; ra.addr.lba += ra.nframes) {\r\n            printf(\"lba = %6d\\r\", ra.addr.lba);\r\n            if (cdrom_read_audio(&amp;ifd, &amp;ra) &lt; 0) {\r\n                ret = -1;\r\n                goto extit_loop1;\r\n            }\r\n            if (cdrom_write(&amp;ofd, ra.buf, ra.nframes * CD_FRAMESIZE_RAW) &lt; 0) {\r\n                ret = -1;\r\n                goto extit_loop1;\r\n            }\r\n        }\r\n        ra.nframes = 1;\r\n        for (; ra.addr.lba &lt; lba1; ra.addr.lba += ra.nframes) {\r\n            printf(\"lba = %6d\\r\", ra.addr.lba);\r\n            if (cdrom_read_audio(&amp;ifd, &amp;ra) &lt; 0) {\r\n                ret = -1;\r\n                goto extit_loop1;\r\n            }\r\n            if (cdrom_write(&amp;ofd, ra.buf, ra.nframes * CD_FRAMESIZE_RAW) &lt; 0) {\r\n                ret = -1;\r\n                goto extit_loop1;\r\n            }\r\n        }\r\n      extit_loop1:\r\n        printf(\"lba = %6d\\n\", ra.addr.lba);\r\n        free(ra.buf);\r\n      extit_loop2:\r\n        if ((cdrom_close(&amp;ofd)) &lt; 0)\r\n            ret = -1;\r\n    }\r\n#endif\r\n<\/span><span class=\"c1\">\/\/ --- cdrom_close ------------------------------------------------------------<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">cdrom_close<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">ifd<\/span><span class=\"p\">)<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">ret<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\r\n<span class=\"c1\">\/\/ --- debug print ------------------------------------------------------------<\/span>\r\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"start track=%02u<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">header<\/span><span class=\"p\">.<\/span><span class=\"n\">cdth_trk0<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ start track<\/span>\r\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"end track  =%02u<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">header<\/span><span class=\"p\">.<\/span><span class=\"n\">cdth_trk1<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ end track<\/span>\r\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"n\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"n\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">mcn<\/span><span class=\"p\">.<\/span><span class=\"n\">medium_catalog_number<\/span><span class=\"p\">);<\/span> <span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span>\r\n        <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"mcn[%02d]    =%02x<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">i<\/span><span class=\"p\">,<\/span> <span class=\"n\">mcn<\/span><span class=\"p\">.<\/span><span class=\"n\">medium_catalog_number<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]);<\/span>\r\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"n\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"n\">trk<\/span> <span class=\"o\">=<\/span> <span class=\"n\">header<\/span><span class=\"p\">.<\/span><span class=\"n\">cdth_trk0<\/span><span class=\"p\">;<\/span> <span class=\"n\">trk<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"n\">header<\/span><span class=\"p\">.<\/span><span class=\"n\">cdth_trk1<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">,<\/span> <span class=\"n\">trk<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"track      =%02u<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_track<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"adr        =%02x<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_adr<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"ctrl       =%02x<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_ctrl<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"format     =%02x<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_format<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_format<\/span> <span class=\"o\">==<\/span> <span class=\"n\">CDROM_LBA<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>    <span class=\"c1\">\/\/ CDROM_LBA<\/span>\r\n            <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"addr lba   =%d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">lba<\/span><span class=\"p\">);<\/span>\r\n            <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"addr m     =%02u<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">LBA2MIN<\/span><span class=\"p\">(<\/span><span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">lba<\/span><span class=\"p\">));<\/span>\r\n            <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"addr s     =%02u<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">LBA2SEC<\/span><span class=\"p\">(<\/span><span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">lba<\/span><span class=\"p\">));<\/span>\r\n            <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"addr f     =%02u<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">LBA2FRAME<\/span><span class=\"p\">(<\/span><span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">lba<\/span><span class=\"p\">));<\/span>\r\n        <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>                <span class=\"c1\">\/\/ CDROM_MSF<\/span>\r\n            <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"addr lba   =%d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">MSF2LBA<\/span><span class=\"p\">(<\/span><span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">msf<\/span><span class=\"p\">.<\/span><span class=\"n\">minute<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">msf<\/span><span class=\"p\">.<\/span><span class=\"n\">second<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">msf<\/span><span class=\"p\">.<\/span><span class=\"n\">frame<\/span><span class=\"p\">));<\/span>\r\n            <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"addr m     =%02u<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">msf<\/span><span class=\"p\">.<\/span><span class=\"n\">minute<\/span><span class=\"p\">);<\/span>\r\n            <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"addr s     =%02u<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">msf<\/span><span class=\"p\">.<\/span><span class=\"n\">second<\/span><span class=\"p\">);<\/span>\r\n            <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"addr f     =%02u<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">msf<\/span><span class=\"p\">.<\/span><span class=\"n\">frame<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"p\">}<\/span>\r\n        <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"datamode   =%02x<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">entry<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">].<\/span><span class=\"n\">cdte_datamode<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"p\">}<\/span>\r\n<span class=\"c1\">\/\/  printf(\"%s: %d\\n\", __FUNCTION__, __LINE__);<\/span>\r\n<span class=\"c1\">\/\/ ----------------------------------------------------------------------------<\/span>\r\n    <span class=\"k\">return<\/span> <span class=\"n\">ret<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"nv\">PROGRAM<\/span>     <span class=\"o\">=<\/span>   cdrom\r\n<span class=\"nv\">OBJS<\/span>        <span class=\"o\">=<\/span>   cdrom.o\r\n<span class=\"nv\">CFLAGS<\/span>      <span class=\"o\">=<\/span>   <span class=\"nt\">-Os<\/span> <span class=\"nt\">-Wall<\/span>\r\n\r\n<span class=\"nl\">all         <\/span><span class=\"o\">:<\/span>   <span class=\"nf\">$(PROGRAM)<\/span>\r\n\r\n<span class=\"nl\">clean       <\/span><span class=\"o\">:<\/span><span class=\"nf\">;  rm -f *.o *~ $(PROGRAM)<\/span>\r\n\r\n<span class=\"nl\">$(PROGRAM)  <\/span><span class=\"o\">:<\/span>   <span class=\"nf\">$(OBJS)<\/span>\r\n                <span class=\"err\">$(CC)<\/span> <span class=\"err\">$(OBJS)<\/span> <span class=\"err\">$(LDFLAGS)<\/span> <span class=\"err\">$(LIBS)<\/span> <span class=\"err\">-o<\/span> <span class=\"err\">$(PROGRAM)<\/span>\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9019\u662f\u4e00\u500b\u70ba\u4e86\u9032\u884c\u8abf\u67e5\u6240\u5275\u5efa\u7684\u793a\u7bc4\u7a0b\u5f0f\u3002\u7531\u65bc\u5728Debian\u4e0a\u5f88\u5c11\u6709\u80fd\u5920\u8a2a\u554f\u97f3\u983b\u5149\u789f\u7684\u793a\u7bc4\u7a0b\u5f0f\uff0c\u6240\u4ee5\u6211\u5c07\u5176\u653e\u5728\u9019\u88e1 [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[227],"class_list":["post-27400","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-227"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"\u5173\u4e8e\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD\u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728debian\u4e0a\u8bbf\u95ee\u97f3\u9891cd\u3002-3\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD\" \/>\n<meta property=\"og:description\" content=\"\u5173\u4e8e\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD\u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728debian\u4e0a\u8bbf\u95ee\u97f3\u9891cd\u3002-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-24T17:28:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-11T18:29:48+00:00\" \/>\n<meta name=\"author\" content=\"\u6e05, \u5b87\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u5b87\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/\",\"name\":\"\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-11-24T17:28:02+00:00\",\"dateModified\":\"2025-08-11T18:29:48+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\"},\"description\":\"\u5173\u4e8e\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD\u7684\u6280\u672f\u6587\u7ae0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\",\"name\":\"\u6e05, \u5b87\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u5b87\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD - Blog - Silicon Cloud","description":"\u5173\u4e8e\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD\u7684\u6280\u672f\u6587\u7ae0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728debian\u4e0a\u8bbf\u95ee\u97f3\u9891cd\u3002-3\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD","og_description":"\u5173\u4e8e\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD\u7684\u6280\u672f\u6587\u7ae0","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728debian\u4e0a\u8bbf\u95ee\u97f3\u9891cd\u3002-3\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-11-24T17:28:02+00:00","article_modified_time":"2025-08-11T18:29:48+00:00","author":"\u6e05, \u5b87","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u5b87","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"1 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/","name":"\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-11-24T17:28:02+00:00","dateModified":"2025-08-11T18:29:48+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e"},"description":"\u5173\u4e8e\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD\u7684\u6280\u672f\u6587\u7ae0","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5728Debian\u4e0a\u8bbf\u95ee\u97f3\u9891CD"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e","name":"\u6e05, \u5b87","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","caption":"\u6e05, \u5b87"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8debian%e4%b8%8a%e8%ae%bf%e9%97%ae%e9%9f%b3%e9%a2%91cd%e3%80%82-3\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/27400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=27400"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/27400\/revisions"}],"predecessor-version":[{"id":56258,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/27400\/revisions\/56258"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=27400"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=27400"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=27400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}