私のラップトップにはLinux Mint 17があります。 22インチモニターもHDMIケーブルを使ってノートパソコンに接続しました。私のディスクはLUKSとLVMを使用して完全に暗号化されました。起動時に暗号化されたパーティションのパスワードを要求するグラフィカルプロンプトが表示されます。パスワードを求めると、ノートパソコンと外部モニタの両方が画面の解像度が間違っています。グラフィックプロンプトとLinux Mintのロゴは両方のモニターの左上に移動し、残りのスペースは黒く残しました。私のプロフィールにログインした後にのみ解像度が正確になります。xrandr
ログイン時に表示される内容は次のとおりです。
Screen 0: minimum 320 x 200, current 3286 x 1080, maximum 32767 x 32767
LVDS1 connected 1366x768+1920+312 (normal left inverted right x axis y axis) 344mm x 194mm
1366x768 60.1*+ 40.1
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 298mm
1920x1080 60.0*+
1680x1050 59.9
1600x900 60.0
1280x1024 75.0 60.0
1280x800 59.9
1152x864 75.0
1280x720 60.0
1024x768 75.1 60.0
832x624 74.6
800x600 75.0 60.3
640x480 75.0 60.0
720x400 70.1
DP1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
暗号化されたディスクを取り付けたら、xrandr
コマンドを使用してモニターの解像度を変更できます。しかし、コマンドはinitramfs
。
initramfs
最近、他のラップトップで起動したときに画面の明るさを変更するスクリプトを使用していましたが、うまくいきました。このスクリプトは正しい値をに反映して明るさを設定します/sys/class/backlight/acpi_video0/brightness
。どういうわけか、画面の解像度を変更するために同様のものを使用できますか?
修正する
@mikeservソリューションを試してみました。
モニターのEDIDファイル(正しいかどうかわからない):
# cat /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-LVDS-1/edid > /lib/firmware/edid/1366x768.bin # cat /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1/edid > /lib/firmware/edid/1920x1080.bin # hexdump /lib/firmware/edid/1366x768.bin 0000000 ff00 ffff ffff 00ff e430 033b 0000 0000 0000010 1600 0401 2290 7813 610a 9ed5 5b5e 269a 0000020 501a 0054 0000 0101 0101 0101 0101 0101 0000030 0101 0101 0101 1de2 b456 0050 3038 3024 0000040 0035 c258 0010 1900 13ec c656 0050 302e 0000050 3024 0035 c258 0010 1900 0000 fe00 3500 0000060 4833 3935 3180 3635 4857 0a34 0000 0000 0000070 0000 3141 0096 0000 0100 0a01 2020 ac00 0000080 # hexdump /lib/firmware/edid/1920x1080.bin 0000000 ff00 ffff ffff 00ff d109 78a5 5445 0000 0000010 1626 0301 3580 781e b72e a4d5 5456 279f 0000020 500c a554 806b 0081 c081 8081 c0a9 00b3 0000030 c0d1 0101 0101 3a02 1880 3871 402d 2c58 0000040 0045 2a13 0021 1e00 0000 ff00 4c00 4339 0000050 3030 3537 3039 3931 200a 0000 fd00 3200 0000060 1e4c 1153 0a00 2020 2020 2020 0000 fc00 0000070 4200 6e65 2051 4c47 3432 3035 200a d900 0000080
i915
モジュールをロードし、EDID
ファイルを/lib/firmware/edid/
内部ディレクトリに含めるinitramfs用のフックスクリプトinitramfs
(確認してみると、EDID
ファイルがinitramfs内にあります)# cat /etc/initramfs-tools/hooks/include-edid-data #!/bin/sh PREREQ="udev" prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions # Begin real processing below this line if [ ! -e "${DESTDIR}/lib/firmware/edid" ]; then mkdir -p "${DESTDIR}/lib/firmware/edid" fi if [ -r "/lib/firmware/edid/1366x768.bin" ]; then cp "/lib/firmware/edid/1366x768.bin" "${DESTDIR}/lib/firmware/edid/" fi if [ -r "/lib/firmware/edid/1920x1080.bin" ]; then cp "/lib/firmware/edid/1920x1080.bin" "${DESTDIR}/lib/firmware/edid/" fi manual_add_modules i915 exit 0 # chmod a+rx /etc/initramfs-tools/hooks/include-edid-data # update-initramfs -u
再起動時にブートパラメータを追加しました(HDMI-1かHDMI1かどうかはわかりません)。
drm_kms_helper.edid_firmware=HDMI1:/lib/firmware/edid/1920x1080.bin
何も変わりません。だから私も次のことを試しました。
drm_kms_helper.edid_firmware=HDMI-1:/lib/firmware/edid/1920x1080.bin drm_kms_helper.edid_firmware=HDMI1:edid/1920x1080.bin drm_kms_helper.edid_firmware=HDMI-1:edid/1920x1080.bin
まったく運がありません。すべては私が上から足を踏み出す前と同じです。
また、HDMIディスプレイIDが切断されている場合は、ノートパソコンのモニターの解像度が正しいことを追加したいと思います。
私は何が間違っていましたか?
アップデート2
それでも動作しません。私が取ったステップ:
私のモニターの正確な名前を見つけてください。
$ for p in /sys/class/drm/*/status; do if [ "$(cat "$p")" == "connected" ]; then echo -n "$p" | awk -F '/' '{print $5}'; fi; done card0-HDMI-A-1 card0-LVDS-1
linux-doc
(カスタム生成を説明する文書を入手するためEDID
)dos2unix
、make
(EDID
ファイルコンパイル用)パッケージのインストール$ sudo apt-get install linux-doc dos2unix make
コンパイル用の一時ディレクトリの作成とソースファイルのコピー
EDID
$ mkdir ~/Tmp/edid $ cd ~/Tmp/edid $ cp /usr/share/doc/linux-doc/EDID/* . $ rm *.S $ cp /usr/share/doc/linux-doc/EDID/1920x1080.S . $ cp /usr/share/doc/linux-doc/EDID/1920x1080.S 1366x768.S
ファイルを
1366x768.S
正しく編集してください価値、コンパイル、コピー/lib/firmware/edid
:私のラップトップ画面の現在の作業モードを取得する
$ xvidtune -show "1366x768" 76.50 1366 1402 1450 1546 768 771 776 824 -hsync -vsync
順番に:
resolution
、clock MHz
、hdisp
、hsyncstart
、hsyncend
、htotal
、vdisp
、 、vsyncstart
、vsyncend
、vtotal
計画された:
CLOCK = 76500 XPIX = hdisp = 1366 XBLANK = htotal - hdisp = 1546 - 1366 = 180 XOFFSET = hsyncstart - hdisp = 1402 - 1366 = 36 XPULSE = hsyncend - hsyncstart = 1450 - 1402 = 48 YPIX = vdisp = 768 YBLANK = vtotal - vdisp = 824 - 768 = 56 YOFFSET = 63 + vsyncstart - vdisp = 63 + 771 - 768 = 66 YPULSE = 63 + vsyncend - vsyncstart = 63 + 776 - 771 = 68 TIMING_NAME "Linux HDR" CRC 0xcd
最終バージョン
1366x768.S
:$ cat 1366x768.S /* EDID */ #define VERSION 1 #define REVISION 3 /* Display */ #define CLOCK 76500 /* kHz */ #define XPIX 1366 #define YPIX 768 #define XY_RATIO XY_RATIO_16_9 #define XBLANK 180 #define YBLANK 56 #define XOFFSET 36 #define XPULSE 48 #define YOFFSET 66 #define YPULSE 68 #define DPI 96 #define VFREQ 60 /* Hz */ #define TIMING_NAME "Linux HDR" #define ESTABLISHED_TIMINGS_BITS 0x00 /* none */ #define HSYNC_POL 1 #define VSYNC_POL 1 #define CRC 0xcd #include "edid.S"
ファイルをコンパイルし、
edid-decode
()を使用してsudo apt-get install edid-decode
エラーがないことを確認します。$ make clean && make rm 1920x1080.o 1366x768.o $ ls -1 *.bin 1366x768.bin 1920x1080.bin $ edid-decode 1366x768.bin Extracted contents: header: 00 ff ff ff ff ff ff 00 serial number: 31 d8 00 00 00 00 00 00 05 16 version: 01 03 basic params: 6d 23 14 78 ea chroma info: 5e c0 a4 59 4a 98 25 20 50 54 established: 00 00 00 standard: 8b c0 01 01 01 01 01 01 01 01 01 01 01 01 01 01 descriptor 1: e2 1d 56 b4 50 00 38 30 24 30 35 00 63 c8 10 00 00 1e descriptor 2: 00 00 00 ff 00 4c 69 6e 75 78 20 23 30 0a 20 20 20 20 descriptor 3: 00 00 00 fd 00 3b 3d 30 32 08 00 0a 20 20 20 20 20 20 descriptor 4: 00 00 00 fc 00 4c 69 6e 75 78 20 48 44 52 0a 20 20 20 extensions: 00 checksum: cd Manufacturer: LNX Model 0 Serial Number 0 Made week 5 of 2012 EDID version: 1.3 Analog display, Input voltage level: 0.7/0.7 V Sync: Separate Composite Serration Maximum image size: 35 cm x 20 cm Gamma: 2.20 DPMS levels: Standby Suspend Off RGB color display First detailed timing is preferred timing Established timings supported: Standard timings supported: 1360x816@60Hz Detailed mode: Clock 76.500 MHz, 355 mm x 200 mm 1366 1402 1450 1546 hborder 0 768 771 776 824 vborder 0 +hsync +vsync Serial number: Linux #0 Monitor ranges: 59-61HZ vertical, 48-50kHz horizontal, max dotclock 80MHz Monitor name: Linux HDR Checksum: 0xcd $ edid-decode 1920x1080.bin Extracted contents: header: 00 ff ff ff ff ff ff 00 serial number: 31 d8 00 00 00 00 00 00 05 16 version: 01 03 basic params: 6d 32 1c 78 ea chroma info: 5e c0 a4 59 4a 98 25 20 50 54 established: 00 00 00 standard: d1 c0 01 01 01 01 01 01 01 01 01 01 01 01 01 01 descriptor 1: 02 3a 80 18 71 38 2d 40 58 2c 45 00 f4 19 11 00 00 1e descriptor 2: 00 00 00 ff 00 4c 69 6e 75 78 20 23 30 0a 20 20 20 20 descriptor 3: 00 00 00 fd 00 3b 3d 42 44 0f 00 0a 20 20 20 20 20 20 descriptor 4: 00 00 00 fc 00 4c 69 6e 75 78 20 46 48 44 0a 20 20 20 extensions: 00 checksum: 05 Manufacturer: LNX Model 0 Serial Number 0 Made week 5 of 2012 EDID version: 1.3 Analog display, Input voltage level: 0.7/0.7 V Sync: Separate Composite Serration Maximum image size: 50 cm x 28 cm Gamma: 2.20 DPMS levels: Standby Suspend Off RGB color display First detailed timing is preferred timing Established timings supported: Standard timings supported: 1920x1152@60Hz Detailed mode: Clock 148.500 MHz, 500 mm x 281 mm 1920 2008 2052 2200 hborder 0 1080 1084 1089 1125 vborder 0 +hsync +vsync Serial number: Linux #0 Monitor ranges: 59-61HZ vertical, 66-68kHz horizontal, max dotclock 150MHz Monitor name: Linux FHD Checksum: 0x5
ファイルを次の場所にコピーします。
/lib/firmware/edid
$ sudo cp *.bin /lib/firmware/edid
更新
initramfs
、フックスクリプトはedidファイルを追加する必要があります(そのファイルがそこにあります。確認しました)。$ sudo update-initramfs -u
起動時にgrubコマンドラインを編集します(起動時にShiftキーを押してgrubメニューを表示し、キーを押します
e
)。linux /vmlinuz-3.13.0-24-generic root=/dev/mapper/mint--vg-root ro quiet splash $vt_handoff
到着
linux /vmlinuz-3.13.0-24-generic root=/dev/mapper/mint--vg-root ro quiet splash $vt_handoff drm_kms_helper.edid_firmware=card0-LVDS-1:/lib/firmware/edid/1366x768.bin drm_kms_helper.edid_firmware=card0-HDMI-A-1:/lib/firmware/edid/1920x1080.bin
また、1つのモニタでのみ動作するように設定してみました。しかし、全く運がありません。解像度の問題ではなく、プリマス画像自体の問題だと思い始めました。ブートイメージを見ると、ぼやけたり伸びたりすることなく、Linux Mintのロゴが鮮明で鮮明に見えます。私の画面より少し小さく、私のラップトップとHDMI画面の左上にあります。
見つけました。このエラーこれは私の問題と非常によく似ています。だから私は彼らがこれを理解するのを待つ必要があると思います。
答え1
モニターはEDIDと呼ばれるデジタル規格を使用して独自の情報を提供します。カーネルは、ディスプレイデバイスが検出されると、この情報を読み取り、ディスプレイデバイスのディスプレイとできるだけ一致するようにディスプレイを自動的に設定します。国の解決する。実際、LCDデバイスは1つの解像度しかサポートできません。国の解像度 - とシミュレーション他のすべて。 ~からウィキペディア:
識別データの拡張表示(EDID)ビデオソース(グラフィックカードやセットトップボックスなど)に機能を説明するためにデジタルディスプレイが提供するデータ構造。これにより、最新のパーソナルコンピュータは接続されているモニタの種類を知ることができます。 EDIDは、VESA(Video Electronics Standards Association)が発表した規格に従って定義されます。 EDIDには、メーカー名とシリアル番号、製品タイプ、蛍光体またはフィルタタイプ、ディスプレイサポートタイミング、ディスプレイサイズ、輝度データ、および(デジタルディスプレイのみ)ピクセルマッピングデータが含まれます。
この問題は一般的に提供されていますEDIDはい間違ったまたは何らかの方法で破損しています。これは、通常、その情報をデバイスのファームウェアにプログラムする製造業者側の怠惰または誤った指示によって引き起こされる。 HDMIケーブルが損傷している可能性がありますが、デジタルケーブルが損傷している可能性ははるかに少なくなります。たくさんまったく機能しない可能性が高いです。しかし、他の可能性もあります。 KMSを使用すると、次の興味深い事実を見つけることができます。
最近では、カーネルモードの設定が登場し、すべてのコンポーネントが標準に準拠しているため、グラフィックボードが正常に機能したり、起動後に画面が暗くなったり、間違った領域が表示され、コンピュータが使用できなくなります。これは次の場合に発生します。
グラフィックカードがモニターを認識しません。
グラフィックカードがEDIDデータを検出できません。
グラフィックボードがEDIDデータをドライバに誤って渡します。
モニターが誤った EDID データを送信しないか送信します。
KVM は、接続されたモニタに問い合わせるのではなく、独自の EDID データを送信します。
カーネルパラメータ "nomodeset"を追加すると、ほとんどの場合役に立ちますが、後で制限が発生します。
ΔあれΔから抜粋kernel.orgのHOWTO.txtKMS EDIDの場合。テキストファイルは次の場所にあります。同じフォルダ5つの標準解像度EDIDのうち、モニタが提供するEDIDをバイパスするために、カーネルパラメータとinitramfsを介して起動時にカーネルを提供できます。
オープンソースディスプレイドライバの1つを使用している場合は、カーネルモード設定を使用しており、すでに述べた5つのKMS EDID解像度バイパスプリセットのいずれかを使用できます。あるいは、ディスプレイデバイスが提供する情報の代わりに、カーネルが使用する独自のEDIDファイルを完全に提供することもできます。
バラよりこのセクションのArch Linux Wikiに関する追加情報がありますが、たぶんこのAskUbuntuスレッドディストリビューションをターゲティングすることをお勧めします。
KMSを使用せずに代わりにnvidiaまたはAMDクローズドソースドライバを使用している場合、私が知っている限り、起動時に解像度を確実に処理する可能性はほぼゼロです。これはgrub
、または他のブートローダで設定できます。今後すべてのinitramfsイメージがインストールされますが、後で起動時にクローズソースドライバの自己解像度設定を妨げる可能性がX
非常に高いです。あなたならどうでしょうか?非常に幸いなことに、マザーボードの製造元はブート時間解像度を設定するためのUEFIファームウェア設定を提供し、grub
セカンダリブートローダがロードされる前に設定できます。しかし、私は個人的には幸運な人を見たことがありません。